29 #ifndef CLOGS_RADIXSORT_H 30 #define CLOGS_RADIXSORT_H 44 class RadixsortProblem;
49 class RadixsortProblem;
64 detail::RadixsortProblem *detail_;
79 void setKeyType(
const Type &keyType);
85 void setValueType(
const Type &valueType);
90 void setTunePolicy(
const TunePolicy &tunePolicy);
112 detail::Radixsort *getDetail()
const;
113 detail::Radixsort *getDetailNonNull()
const;
114 void construct(cl_context context, cl_device_id device,
const RadixsortProblem &problem,
115 cl_int &err,
const char *&errStr);
120 void enqueue(cl_command_queue command_queue,
121 cl_mem keys, cl_mem values,
122 ::
size_t elements,
unsigned int maxBits,
124 const cl_event *events,
127 const char *&errStr);
129 void setTemporaryBuffers(cl_mem keys, cl_mem values,
130 cl_int &err,
const char *&errStr);
138 #ifdef CLOGS_HAVE_RVALUE_REFERENCES 141 moveConstruct(other);
166 Radixsort(
const cl::Context &context,
const cl::Device &device,
174 construct(context(), device(), problem, err, errStr);
175 detail::handleError(err, errStr);
189 Radixsort(
const cl::Context &context,
const cl::Device &device,
194 construct(context(), device(), problem, err, errStr);
195 detail::handleError(err, errStr);
229 void enqueue(
const cl::CommandQueue &commandQueue,
230 const cl::Buffer &keys,
const cl::Buffer &values,
231 ::
size_t elements,
unsigned int maxBits = 0,
232 const VECTOR_CLASS<cl::Event> *events = NULL,
233 cl::Event *event = NULL)
239 enqueue(commandQueue(), keys(), values(), elements, maxBits,
240 events_.size(), events_.data(),
241 event != NULL ? &outEvent : NULL,
243 detail::handleError(err, errStr);
250 cl_mem keys, cl_mem values,
251 ::
size_t elements,
unsigned int maxBits = 0,
252 cl_uint numEvents = 0,
253 const cl_event *events = NULL,
254 cl_event *event = NULL)
258 enqueue(commandQueue, keys, values, elements, maxBits, numEvents, events, event,
260 detail::handleError(err, errStr);
282 setTemporaryBuffers(keys(), values(), err, errStr);
283 detail::handleError(err, errStr);
291 setTemporaryBuffers(keys, values, err, errStr);
292 detail::handleError(err, errStr);
Pops default visibility if appropriate.
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
void setKeyType(const Type &keyType)
Set the key type for sorting.
void enqueue(const cl::CommandQueue &commandQueue, const cl::Buffer &keys, const cl::Buffer &values,::size_t elements, unsigned int maxBits=0, const VECTOR_CLASS< cl::Event > *events=NULL, cl::Event *event=NULL)
Enqueue a sort operation on a command queue.
Definition: radixsort.h:229
void enqueue(cl_command_queue commandQueue, cl_mem keys, cl_mem values,::size_t elements, unsigned int maxBits=0, cl_uint numEvents=0, const cl_event *events=NULL, cl_event *event=NULL)
Definition: radixsort.h:249
Encapsulates the specifics of a radixsort problem.
Definition: radixsort.h:61
Radix-sort interface.
Definition: radixsort.h:109
Radixsort(const cl::Context &context, const cl::Device &device, const Type &keyType, const Type &valueType=Type())
Constructor.
Definition: radixsort.h:166
void setTemporaryBuffers(cl_mem keys, cl_mem values)
Definition: radixsort.h:287
void setValueType(const Type &valueType)
Set the value type for sorting.
void setTemporaryBuffers(const cl::Buffer &keys, const cl::Buffer &values)
Set temporary buffers used during sorting.
Definition: radixsort.h:278
Radixsort(const cl::Context &context, const cl::Device &device, const RadixsortProblem &problem)
Constructor.
Definition: radixsort.h:189
Base class for all algorithm classes.
Definition: core.h:305
OpenCL primitives.
Definition: clogs.h:56
Control over tuning policy.