24 #ifndef ACLSUBVECTOR_H 25 #define ACLSUBVECTOR_H 43 static const string prefix;
44 static unsigned int id;
46 shared_ptr<Array<T> > vector;
47 cl_buffer_region buffer_create_info;
51 unsigned int offset_);
58 std::vector<Element> & localDeclarations)
const;
68 unsigned int offset_):
74 queue = vector_->getQueue();
75 if ( (offset +
size) > vector->getSize() )
77 errorMessage(
"Subvector::Subvector() - (offset + size) > vector->getSize()");
81 buffer_create_info.origin = offset *
sizeof(T);
82 buffer_create_info.size =
size *
sizeof(T);
94 *buffer = vector->getBuffer().createSubBuffer(CL_MEM_READ_WRITE,
95 CL_BUFFER_CREATE_TYPE_REGION,
98 errorMessage(status,
"Subvector::Subvector() - createSubBuffer()");
112 return name +
"[" +
INDEX +
"]";
118 return "__global " + typeToStr<T>(kernelConfig.
vectorWidth) +
" *" + name;
129 template <
typename T>
131 std::vector<Element> & localDeclarations)
const 136 template <
typename T>
140 status = kernel.
setArg(argumentIndex, *buffer);
146 #endif // ACLSUBVECTOR_H
virtual cl::Buffer & getBuffer()
virtual string getName() const
Advanced Computational Language.
virtual void addToKernelSource(std::vector< Element > &arguments, std::vector< Element > &localDeclarations) const
void errorMessage(cl_int status, const char *errorMessage)
Prints errorMessage and exits depending on the status.
std::string numToStr(T i)
Converts numbers or another type to string.
virtual string str(const KernelConfiguration &kernelConfig) const
C++ bindings for OpenCL 1.0 (rev 48), OpenCL 1.1 (rev 33) and OpenCL 1.2 (rev 15)
Subvector(shared_ptr< Array< T > > vector_, unsigned int size_, unsigned int offset_)
const Block offset(const Block &bl, int a=1)
virtual void setAsArgument(cl::Kernel &kernel, unsigned int argumentIndex) const
ACL Kernel configuration class.
virtual string getLocalDeclaration(const KernelConfiguration &kernelConfig) const
Class interface for Buffer Memory Objects.
Class interface for cl_kernel.
virtual string getTypeSignature(const KernelConfiguration &kernelConfig) const
cl_int setArg(cl_uint index, const T &value)