MCPcopy Create free account
hub / github.com/arrayfire/arrayfire / sort0Iterative

Function sort0Iterative

src/backend/opencl/kernel/sort.hpp:33–63  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

31namespace kernel {
32template<typename T>
33void sort0Iterative(Param val, bool isAscending) {
34 compute::command_queue c_queue(getQueue()());
35
36 compute::buffer val_buf((*val.data)());
37
38 for (int w = 0; w < val.info.dims[3]; w++) {
39 int valW = w * val.info.strides[3];
40 for (int z = 0; z < val.info.dims[2]; z++) {
41 int valWZ = valW + z * val.info.strides[2];
42 for (int y = 0; y < val.info.dims[1]; y++) {
43 int valOffset = valWZ + y * val.info.strides[1];
44
45 if (isAscending) {
46 compute::sort(compute::make_buffer_iterator<type_t<T>>(
47 val_buf, valOffset),
48 compute::make_buffer_iterator<type_t<T>>(
49 val_buf, valOffset + val.info.dims[0]),
50 compute::less<type_t<T>>(), c_queue);
51 } else {
52 compute::sort(compute::make_buffer_iterator<type_t<T>>(
53 val_buf, valOffset),
54 compute::make_buffer_iterator<type_t<T>>(
55 val_buf, valOffset + val.info.dims[0]),
56 compute::greater<type_t<T>>(), c_queue);
57 }
58 }
59 }
60 }
61
62 CL_DEBUG_FINISH(getQueue());
63}
64
65template<typename T>
66void sortBatched(Param pVal, int dim, bool isAscending) {

Callers

nothing calls this directly

Calls 2

getQueueFunction · 0.50
sortFunction · 0.50

Tested by

no test coverage detected