33//
44// SPDX-License-Identifier: MIT
55// =============================================================
6- #include < CL/sycl.hpp>
76#include < iostream>
7+ #include < sycl/sycl.hpp>
88
9- template <typename T>
10- auto get_multi_ptr (T *raw_ptr) {
9+ template <typename T> auto get_multi_ptr (T *raw_ptr) {
1110 auto multi_ptr =
12- sycl::address_space_cast<
13- sycl::access::address_space::global_space,
14- sycl::access::decorated::yes>(raw_ptr);
11+ sycl::address_space_cast<sycl::access::address_space::global_space,
12+ sycl::access::decorated::yes>(raw_ptr);
1513 return multi_ptr;
1614}
1715
@@ -28,41 +26,40 @@ int main() {
2826 memset (data2, 0 , sizeof (int ) * N);
2927
3028 auto e = q.submit ([&](auto &h) {
31- h.parallel_for (
32- sycl::nd_range (sycl::range{N / 16 }, sycl::range{32 }),
33- [=](sycl::nd_item<1 > it) [[intel::reqd_sub_group_size (16 )]] {
34- auto sg = it.get_sub_group ();
35- sycl::vec<int , 4 > x;
29+ h.parallel_for (sycl::nd_range (sycl::range{N / 16 }, sycl::range{32 }),
30+ [=](sycl::nd_item<1 > it) [[intel::reqd_sub_group_size (16 )]] {
31+ auto sg = it.get_sub_group ();
32+ sycl::vec<int , 4 > x;
3633
37- int base = (it.get_group (0 ) * 32 +
38- sg.get_group_id ()[0 ] * sg.get_local_range ()[0 ]) *
39- 16 ;
34+ int base =
35+ (it.get_group (0 ) * 32 +
36+ sg.get_group_id ()[0 ] * sg.get_local_range ()[0 ]) *
37+ 16 ;
4038
41- auto load_ptr0 = get_multi_ptr (&(data2[base + 0 * 64 ]));
42- x = sg.load <4 >(load_ptr0);
39+ auto load_ptr0 = get_multi_ptr (&(data2[base + 0 * 64 ]));
40+ x = sg.load <4 >(load_ptr0);
4341
44- auto store_ptr0 = get_multi_ptr (&(data[base + 0 * 64 ]));
45- sg.store <4 >(store_ptr0, x);
42+ auto store_ptr0 = get_multi_ptr (&(data[base + 0 * 64 ]));
43+ sg.store <4 >(store_ptr0, x);
4644
47- auto load_ptr1 = get_multi_ptr (&(data2[base + 1 * 64 ]));
48- x = sg.load <4 >(load_ptr1);
45+ auto load_ptr1 = get_multi_ptr (&(data2[base + 1 * 64 ]));
46+ x = sg.load <4 >(load_ptr1);
4947
50- auto store_ptr1 = get_multi_ptr (&(data[base + 1 * 64 ]));
51- sg.store <4 >(store_ptr1, x);
48+ auto store_ptr1 = get_multi_ptr (&(data[base + 1 * 64 ]));
49+ sg.store <4 >(store_ptr1, x);
5250
53- auto load_ptr2 = get_multi_ptr (&(data2[base + 2 * 64 ]));
54- x = sg.load <4 >(load_ptr2);
51+ auto load_ptr2 = get_multi_ptr (&(data2[base + 2 * 64 ]));
52+ x = sg.load <4 >(load_ptr2);
5553
56- auto store_ptr2 = get_multi_ptr (&(data[base + 2 * 64 ]));
57- sg.store <4 >(store_ptr2, x);
54+ auto store_ptr2 = get_multi_ptr (&(data[base + 2 * 64 ]));
55+ sg.store <4 >(store_ptr2, x);
5856
59- auto load_ptr3 = get_multi_ptr (&(data2[base + 3 * 64 ]));
60- x = sg.load <4 >(load_ptr3);
57+ auto load_ptr3 = get_multi_ptr (&(data2[base + 3 * 64 ]));
58+ x = sg.load <4 >(load_ptr3);
6159
62- auto store_ptr3 = get_multi_ptr (&(data[base + 3 *64 ]));
63- sg.store <4 >(store_ptr3, x);
64-
65- });
60+ auto store_ptr3 = get_multi_ptr (&(data[base + 3 * 64 ]));
61+ sg.store <4 >(store_ptr3, x);
62+ });
6663 });
6764 // Snippet end
6865 q.wait ();
0 commit comments