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

Function sort

src/backend/opencl/sort.cpp:22–48  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20namespace opencl {
21template<typename T>
22Array<T> sort(const Array<T> &in, const unsigned dim, bool isAscending) {
23 try {
24 Array<T> out = copyArray<T>(in);
25 switch (dim) {
26 case 0: kernel::sort0<T>(out, isAscending); break;
27 case 1: kernel::sortBatched<T>(out, 1, isAscending); break;
28 case 2: kernel::sortBatched<T>(out, 2, isAscending); break;
29 case 3: kernel::sortBatched<T>(out, 3, isAscending); break;
30 default: AF_ERROR("Not Supported", AF_ERR_NOT_SUPPORTED);
31 }
32
33 if (dim != 0) {
34 af::dim4 preorderDims = out.dims();
35 af::dim4 reorderDims(0, 1, 2, 3);
36 reorderDims[dim] = 0;
37 preorderDims[0] = out.dims()[dim];
38 for (int i = 1; i <= static_cast<int>(dim); i++) {
39 reorderDims[i - 1] = i;
40 preorderDims[i] = out.dims()[i - 1];
41 }
42
43 out.setDataDims(preorderDims);
44 out = reorder<T>(out, reorderDims);
45 }
46 return out;
47 } catch (std::exception &ex) { AF_ERROR(ex.what(), AF_ERR_INTERNAL); }
48}
49
50#define INSTANTIATE(T) \
51 template Array<T> sort<T>(const Array<T> &in, const unsigned dim, \

Callers 4

getOpenCLCDeviceVersionFunction · 0.70
setUniqueFunction · 0.70
regionsFunction · 0.50
sort0IterativeFunction · 0.50

Calls 2

dimsMethod · 0.45
setDataDimsMethod · 0.45

Tested by

no test coverage detected