28 #ifndef CLOGS_REDUCE_H 29 #define CLOGS_REDUCE_H 62 detail::ReduceProblem *detail_;
76 void setType(
const Type &type);
81 void setTunePolicy(
const TunePolicy &tunePolicy);
101 detail::Reduce *getDetail()
const;
102 detail::Reduce *getDetailNonNull()
const;
104 cl_context context, cl_device_id device,
const ReduceProblem &problem,
105 cl_int &err,
const char *&errStr);
106 void moveAssign(
Reduce &other);
110 void enqueue(cl_command_queue commandQueue,
115 ::
size_t outPosition,
117 const cl_event *events,
120 const char *&errStr);
122 void enqueue(cl_command_queue commandQueue,
129 const cl_event *events,
132 const char *&errStr);
140 #ifdef CLOGS_HAVE_RVALUE_REFERENCES 143 moveConstruct(other);
167 construct(context(), device(), problem, err, errStr);
168 detail::handleError(err, errStr);
185 construct(context, device, problem, err, errStr);
186 detail::handleError(err, errStr);
212 void enqueue(
const cl::CommandQueue &commandQueue,
213 const cl::Buffer &inBuffer,
214 const cl::Buffer &outBuffer,
217 ::
size_t outPosition,
218 const VECTOR_CLASS<cl::Event> *events = NULL,
219 cl::Event *event = NULL)
225 enqueue(commandQueue(), inBuffer(), outBuffer(), first, elements, outPosition,
226 rawEvents.size(), rawEvents.data(),
227 event != NULL ? &outEvent : NULL,
229 detail::handleError(err, errStr);
240 ::
size_t outPosition,
241 cl_uint numEvents = 0,
242 const cl_event *events = NULL,
243 cl_event *event = NULL)
247 enqueue(commandQueue, inBuffer, outBuffer, first, elements, outPosition,
248 numEvents, events, event, err, errStr);
249 detail::handleError(err, errStr);
257 void enqueue(
const cl::CommandQueue &commandQueue,
259 const cl::Buffer &inBuffer,
263 const VECTOR_CLASS<cl::Event> *events = NULL,
264 cl::Event *event = NULL)
270 enqueue(commandQueue(), blocking, inBuffer(), out, first, elements,
271 rawEvents.size(), rawEvents.data(),
272 event != NULL ? &outEvent : NULL,
274 detail::handleError(err, errStr);
286 cl_uint numEvents = 0,
287 const cl_event *events = NULL,
288 cl_event *event = NULL)
292 enqueue(commandQueue, blocking, inBuffer, out, first, elements,
293 numEvents, events, event, err, errStr);
294 detail::handleError(err, errStr);
Pops default visibility if appropriate.
void enqueue(cl_command_queue commandQueue, cl_mem inBuffer, cl_mem outBuffer,::size_t first,::size_t elements,::size_t outPosition, cl_uint numEvents=0, const cl_event *events=NULL, cl_event *event=NULL)
Definition: reduce.h:235
Pushes default visibility if appropriate.
Encapsulation of an OpenCL built-in type that can be stored in a buffer.
Definition: core.h:134
Basic types shared by several primitives.
Creates an array of handles from a vector of wrappers.
Definition: core.h:198
Encapsulates the specifics of a reduction problem.
Definition: reduce.h:59
Reduce(const cl::Context &context, const cl::Device &device, const ReduceProblem &problem)
Constructor.
Definition: reduce.h:163
void enqueue(const cl::CommandQueue &commandQueue, const cl::Buffer &inBuffer, const cl::Buffer &outBuffer,::size_t first,::size_t elements,::size_t outPosition, const VECTOR_CLASS< cl::Event > *events=NULL, cl::Event *event=NULL)
Enqueue a reduction operation on a command queue.
Definition: reduce.h:212
Reduce(cl_context context, cl_device_id device, const ReduceProblem &problem)
Constructor.
Definition: reduce.h:181
void enqueue(const cl::CommandQueue &commandQueue, bool blocking, const cl::Buffer &inBuffer, void *out,::size_t first,::size_t elements, const VECTOR_CLASS< cl::Event > *events=NULL, cl::Event *event=NULL)
Enqueue a reduction operation and read the result back to the host.
Definition: reduce.h:257
Reduction primitive.
Definition: reduce.h:98
void enqueue(cl_command_queue commandQueue, bool blocking, cl_mem inBuffer, void *out,::size_t first,::size_t elements, cl_uint numEvents=0, const cl_event *events=NULL, cl_event *event=NULL)
Definition: reduce.h:280
Base class for all algorithm classes.
Definition: core.h:305
OpenCL primitives.
Definition: clogs.h:56
Control over tuning policy.