27 #include "../aclStdIncludes.h"
36 template <
typename T>
class Array:
public MemBlock
40 static const string prefix;
41 static unsigned int id;
45 virtual string str(
const KernelConfiguration & kernelConfig)
const;
46 virtual string getName()
const;
47 virtual string getAddressSpaceQualifier()
const;
48 virtual string getTypeSignature(
const KernelConfiguration & kernelConfig)
const;
49 virtual string getLocalDeclaration(
const KernelConfiguration & kernelConfig)
const;
50 virtual void addToKernelSource(vector<Element> & arguments,
51 vector<Element> & localDeclarations)
const;
52 virtual void setAsArgument(
cl::Kernel & kernel,
unsigned int argumentIndex)
const;
63 template <
typename T> Array<T>::Array(
unsigned int size_,
CommandQueue queue_):
72 MemBlock(size_,
typeToTypeID<T>(), queue_, (char*)initArray)
86 template <
typename T>
string Array<T>::str(
const KernelConfiguration & kernelConfig)
const
88 if (kernelConfig.unaligned && kernelConfig.vectorWidth > 1)
90 return "vload" +
numToStr(kernelConfig.vectorWidth) +
"(0, &" + name +
"[" +
INDEX +
"])";
94 return name +
"[" +
INDEX +
"]";
101 return "__global " + typeToStr<T>(kernelConfig.unaligned ? 1 : kernelConfig.vectorWidth) +
" *" + name;
118 template <
typename T>
124 template <
typename T>
128 status = kernel.
setArg(argumentIndex, *buffer);
130 +
", argument " +
numToStr(argumentIndex));