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

Function sort_by_key

src/backend/oneapi/sort_by_key.cpp:22–53  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20namespace oneapi {
21template<typename Tk, typename Tv>
22void sort_by_key(Array<Tk> &okey, Array<Tv> &oval, const Array<Tk> &ikey,
23 const Array<Tv> &ival, const unsigned dim, bool isAscending) {
24 okey = copyArray<Tk>(ikey);
25 oval = copyArray<Tv>(ival);
26
27 switch (dim) {
28 case 0: kernel::sort0ByKey<Tk, Tv>(okey, oval, isAscending); break;
29 case 1:
30 case 2:
31 case 3:
32 kernel::sortByKeyBatched<Tk, Tv>(okey, oval, dim, isAscending);
33 break;
34 default: AF_ERROR("Not Supported", AF_ERR_NOT_SUPPORTED);
35 }
36
37 if (dim != 0) {
38 af::dim4 preorderDims = okey.dims();
39 af::dim4 reorderDims(0, 1, 2, 3);
40 reorderDims[dim] = 0;
41 preorderDims[0] = okey.dims()[dim];
42 for (int i = 1; i <= (int)dim; i++) {
43 reorderDims[i - 1] = i;
44 preorderDims[i] = okey.dims()[i - 1];
45 }
46
47 okey.setDataDims(preorderDims);
48 oval.setDataDims(preorderDims);
49
50 okey = reorder<Tk>(okey, reorderDims);
51 oval = reorder<Tv>(oval, reorderDims);
52 }
53}
54
55#define INSTANTIATE(Tk, Tv) \
56 template void sort_by_key<Tk, Tv>( \

Callers

nothing calls this directly

Calls 2

dimsMethod · 0.45
setDataDimsMethod · 0.45

Tested by

no test coverage detected