22// RUN: %CPU_RUN_PLACEHOLDER %t.out
33// RUN: %GPU_RUN_PLACEHOLDER %t.out
44// RUN: %ACC_RUN_PLACEHOLDER %t.out
5- //
6- // RUNx: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -I . -o %t13.out
75
86#include " support.h"
9- #include < CL /sycl.hpp>
7+ #include < sycl /sycl.hpp>
108
119#include < algorithm>
1210#include < iostream>
1311#include < random>
1412#include < vector>
1513
16- namespace my_sycl = sycl::ext::oneapi::experimental;
14+ namespace oneapi_exp = sycl::ext::oneapi::experimental;
1715
1816auto async_handler_ = [](sycl::exception_list ex_list) {
1917 for (auto &ex : ex_list) {
@@ -38,14 +36,11 @@ struct CustomFunctor {
3836 }
3937};
4038
41- // we need it since using std::abs leads to compilation error
42- template <typename T> T my_abs (T x) { return x >= 0 ? x : -x; }
43-
4439template <typename T> bool check (T lhs, T rhs, float epsilon) {
45- return my_abs (lhs - rhs) > epsilon;
40+ return sycl::abs (lhs - rhs) > epsilon;
4641}
4742bool check (CustomType lhs, CustomType rhs, float epsilon) {
48- return my_abs (lhs.x - rhs.x ) > epsilon;
43+ return sycl::abs (lhs.x - rhs.x ) > epsilon;
4944}
5045
5146template <typename T>
@@ -105,8 +100,9 @@ int test_sort_over_group(sycl::queue &q, std::size_t local,
105100
106101 sycl::range<dim> local_range = get_range<dim>(local);
107102
108- std::size_t local_memory_size = my_sycl::default_sorter<>::memory_required<T>(
109- sycl::memory_scope::work_group, local_range);
103+ std::size_t local_memory_size =
104+ oneapi_exp::default_sorter<>::memory_required<T>(
105+ sycl::memory_scope::work_group, local_range);
110106
111107 if (local_memory_size >
112108 q.get_device ().template get_info <sycl::info::device::local_mem_size>())
@@ -129,23 +125,23 @@ int test_sort_over_group(sycl::queue &q, std::size_t local,
129125 case 0 :
130126 if constexpr (std::is_same_v<Compare, std::less<T>> &&
131127 !std::is_same_v<T, CustomType>)
132- aI1[local_id] = my_sycl ::sort_over_group (
133- my_sycl ::group_with_scratchpad (
128+ aI1[local_id] = oneapi_exp ::sort_over_group (
129+ oneapi_exp ::group_with_scratchpad (
134130 id.get_group (),
135131 sycl::span{&scratch[0 ], local_memory_size}),
136132 aI1[local_id]);
137133 break ;
138134 case 1 :
139- aI1[local_id] = my_sycl ::sort_over_group (
140- my_sycl ::group_with_scratchpad (
135+ aI1[local_id] = oneapi_exp ::sort_over_group (
136+ oneapi_exp ::group_with_scratchpad (
141137 id.get_group (),
142138 sycl::span{&scratch[0 ], local_memory_size}),
143139 aI1[local_id], comp);
144140 break ;
145141 case 2 :
146- aI1[local_id] = my_sycl ::sort_over_group (
142+ aI1[local_id] = oneapi_exp ::sort_over_group (
147143 id.get_group (), aI1[local_id],
148- my_sycl ::default_sorter<Compare>(
144+ oneapi_exp ::default_sorter<Compare>(
149145 sycl::span{&scratch[0 ], local_memory_size}));
150146 break ;
151147 }
@@ -160,8 +156,9 @@ int test_joint_sort(sycl::queue &q, std::size_t n_items, std::size_t local,
160156 auto n = bufI1.size ();
161157 auto n_groups = (n - 1 ) / n_items + 1 ;
162158
163- std::size_t local_memory_size = my_sycl::default_sorter<>::memory_required<T>(
164- sycl::memory_scope::work_group, n);
159+ std::size_t local_memory_size =
160+ oneapi_exp::default_sorter<>::memory_required<T>(
161+ sycl::memory_scope::work_group, n);
165162 if (local_memory_size >
166163 q.get_device ().template get_info <sycl::info::device::local_mem_size>())
167164 std::cout << " local_memory_size = " << local_memory_size << " , available = "
@@ -187,26 +184,26 @@ int test_joint_sort(sycl::queue &q, std::size_t n_items, std::size_t local,
187184 case 0 :
188185 if constexpr (std::is_same_v<Compare, std::less<T>> &&
189186 !std::is_same_v<T, CustomType>)
190- my_sycl ::joint_sort (
191- my_sycl ::group_with_scratchpad (
187+ oneapi_exp ::joint_sort (
188+ oneapi_exp ::group_with_scratchpad (
192189 id.get_group (),
193190 sycl::span{&scratch[0 ], local_memory_size}),
194191 ptr_keys,
195192 ptr_keys + sycl::min (n_items, n - group_id * n_items));
196193 break ;
197194 case 1 :
198- my_sycl ::joint_sort (
199- my_sycl ::group_with_scratchpad (
195+ oneapi_exp ::joint_sort (
196+ oneapi_exp ::group_with_scratchpad (
200197 id.get_group (),
201198 sycl::span{&scratch[0 ], local_memory_size}),
202199 ptr_keys,
203200 ptr_keys + sycl::min (n_items, n - group_id * n_items), comp);
204201 break ;
205202 case 2 :
206- my_sycl ::joint_sort (
203+ oneapi_exp ::joint_sort (
207204 id.get_group (), ptr_keys,
208205 ptr_keys + sycl::min (n_items, n - group_id * n_items),
209- my_sycl ::default_sorter<Compare>(
206+ oneapi_exp ::default_sorter<Compare>(
210207 sycl::span{&scratch[0 ], local_memory_size}));
211208 break ;
212209 }
@@ -217,7 +214,7 @@ int test_joint_sort(sycl::queue &q, std::size_t n_items, std::size_t local,
217214
218215template <typename T, typename Compare>
219216int test_custom_sorter (sycl::queue &q, sycl::buffer<T> &bufI1, Compare comp) {
220- std::size_t local = 256 ;
217+ std::size_t local = 4 ;
221218 auto n = bufI1.size ();
222219 if (n > local)
223220 return -1 ;
@@ -230,7 +227,7 @@ int test_custom_sorter(sycl::queue &q, sycl::buffer<T> &bufI1, Compare comp) {
230227 sycl::nd_range<2 >({local, 1 }, {local, 1 }), [=](sycl::nd_item<2 > id) {
231228 auto ptr = aI1.get_pointer ();
232229
233- my_sycl ::joint_sort (
230+ oneapi_exp ::joint_sort (
234231 id.get_group (), ptr, ptr + n,
235232 bubble_sorter<Compare>{comp, id.get_local_linear_id ()});
236233 });
@@ -243,9 +240,11 @@ void run_sort(sycl::queue &q, std::vector<T> &in, std::size_t size,
243240 Compare comp, int test_case, int sort_case) {
244241 std::vector<T> in2 (in.begin (), in.begin () + size);
245242 std::vector<T> expected (in.begin (), in.begin () + size);
246- std::size_t local =
243+ constexpr size_t work_size_limit = 4 ;
244+ std::size_t local = std::min (
245+ work_size_limit,
247246 q.get_device ()
248- .template get_info <sycl::info::device::max_work_group_size>();
247+ .template get_info <sycl::info::device::max_work_group_size>()) ;
249248 local = std::min (local, size);
250249 auto n_items = items_per_work_item * local;
251250
@@ -354,7 +353,7 @@ int main(int argc, char *argv[]) {
354353 return 0 ;
355354 }
356355
357- std::vector<int > sizes{1 , 2 , 64 , 256 , 1024 , 2048 , 4096 };
356+ std::vector<int > sizes{1 , 12 , 32 };
358357
359358 for (int i = 0 ; i < sizes.size (); ++i) {
360359 test_sort_by_type<std::int8_t >(q, sizes[i]);
0 commit comments