23 template<
class Tkey,
class Tval>
24 void sort_by_key_bitonic_legacy(
25 sycl::queue &q, sycl::buffer<Tkey> &buf_key, sycl::buffer<Tval> &buf_values,
u32 len);
27 template<
class Tkey,
class Tval, u32 MaxStencilSize>
28 void sort_by_key_bitonic_updated(
29 sycl::queue &q, sycl::buffer<Tkey> &buf_key, sycl::buffer<Tval> &buf_values,
u32 len);
32 template<
class Tkey,
class Tval, u32 MaxStencilSize>
33 void sort_by_key_bitonic_updated_xor_swap(
34 sycl::queue &q, sycl::buffer<Tkey> &buf_key, sycl::buffer<Tval> &buf_values,
u32 len);
36 template<
class Tkey,
class Tval>
37 inline void sort_by_key_bitonic_fallback(
38 sycl::queue &q, sycl::buffer<Tkey> &buf_key, sycl::buffer<Tval> &buf_values,
u32 len) {
39 std::vector<std::pair<Tkey, Tval>> v;
43 sycl::host_accessor key{buf_key, sycl::read_only};
44 sycl::host_accessor vals{buf_values, sycl::read_only};
46 for (
u32 i = 0; i < len; i++) {
47 v[i] = {key[i], vals[i]};
51 std::sort(v.begin(), v.end());
54 sycl::host_accessor key{buf_key, sycl::write_only};
55 sycl::host_accessor vals{buf_values, sycl::write_only};
57 for (
u32 i = 0; i < len; i++) {
59 vals[i] = v[i].second;