Skip to content

Commit a3951c2

Browse files
t4c1bb-sycl
authored andcommitted
[SYCL][CUDA] Added tests for atomic loads and stores for various orders and scopes (intel#648)
1 parent e1db858 commit a3951c2

File tree

4 files changed

+94
-86
lines changed

4 files changed

+94
-86
lines changed

SYCL/AtomicRef/load.h

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ void load_global_test(queue q, size_t N) {
8383
}
8484

8585
<<<<<<< HEAD
86+
<<<<<<< HEAD
87+
=======
88+
>>>>>>> d94406530 ([SYCL][CUDA] Added tests for atomic loads and stores for various orders and scopes (#648))
8689
template <access::address_space space, typename T,
8790
memory_order order = memory_order::relaxed,
8891
memory_scope scope = memory_scope::device>
@@ -105,6 +108,7 @@ void load_test(queue q, size_t N) {
105108
#endif
106109
}
107110
if constexpr (do_global_tests) {
111+
<<<<<<< HEAD
108112
#ifdef RUN_DEPRECATED
109113
if constexpr (do_ext_tests) {
110114
load_global_test<::sycl::ext::oneapi::atomic_ref, space, T, order, scope>(
@@ -147,13 +151,52 @@ void load_test_orders_scopes(queue q, size_t N) {
147151
load_test_scopes<space, T, memory_order::relaxed>(q, N);
148152
=======
149153
template <typename T> void load_test(queue q, size_t N) {
154+
=======
155+
>>>>>>> d94406530 ([SYCL][CUDA] Added tests for atomic loads and stores for various orders and scopes (#648))
150156
#ifdef RUN_DEPRECATED
151-
load_test<::sycl::ext::oneapi::atomic_ref,
152-
access::address_space::global_space, T>(q, N);
157+
if constexpr (do_ext_tests) {
158+
load_global_test<::sycl::ext::oneapi::atomic_ref, space, T, order, scope>(
159+
q, N);
160+
}
153161
#else
154-
load_test<::sycl::atomic_ref, access::address_space::global_space, T>(q, N);
162+
load_global_test<::sycl::atomic_ref, space, T, order, scope>(q, N);
155163
#endif
164+
<<<<<<< HEAD
156165
>>>>>>> a5f90c0cd ([SYCL] Speed up atomic_ref tests (#879))
166+
=======
167+
}
168+
}
169+
170+
template <access::address_space space, typename T,
171+
memory_order order = memory_order::relaxed>
172+
void load_test_scopes(queue q, size_t N) {
173+
std::vector<memory_scope> scopes =
174+
q.get_device().get_info<info::device::atomic_memory_scope_capabilities>();
175+
if (std::find(scopes.begin(), scopes.end(), memory_scope::system) !=
176+
scopes.end()) {
177+
load_test<space, T, order, memory_scope::system>(q, N);
178+
}
179+
if (std::find(scopes.begin(), scopes.end(), memory_scope::work_group) !=
180+
scopes.end()) {
181+
load_test<space, T, order, memory_scope::work_group>(q, N);
182+
}
183+
if (std::find(scopes.begin(), scopes.end(), memory_scope::sub_group) !=
184+
scopes.end()) {
185+
load_test<space, T, order, memory_scope::sub_group>(q, N);
186+
}
187+
load_test<space, T, order, memory_scope::device>(q, N);
188+
}
189+
190+
template <access::address_space space, typename T>
191+
void load_test_orders_scopes(queue q, size_t N) {
192+
std::vector<memory_order> orders =
193+
q.get_device().get_info<info::device::atomic_memory_order_capabilities>();
194+
if (std::find(orders.begin(), orders.end(), memory_order::acquire) !=
195+
orders.end()) {
196+
load_test_scopes<space, T, memory_order::acquire>(q, N);
197+
}
198+
load_test_scopes<space, T, memory_order::relaxed>(q, N);
199+
>>>>>>> d94406530 ([SYCL][CUDA] Added tests for atomic loads and stores for various orders and scopes (#648))
157200
}
158201

159202
template <access::address_space space> void load_test_all() {

SYCL/AtomicRef/load_atomic64.cpp

Lines changed: 0 additions & 40 deletions
This file was deleted.

SYCL/AtomicRef/store.h

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ void store_local_test(queue q, size_t N) {
7171
}
7272

7373
<<<<<<< HEAD
74+
<<<<<<< HEAD
75+
=======
76+
>>>>>>> d94406530 ([SYCL][CUDA] Added tests for atomic loads and stores for various orders and scopes (#648))
7477
template <access::address_space space, typename T,
7578
memory_order order = memory_order::relaxed,
7679
memory_scope scope = memory_scope::device>
@@ -93,6 +96,7 @@ void store_test(queue q, size_t N) {
9396
#endif
9497
}
9598
if constexpr (do_global_tests) {
99+
<<<<<<< HEAD
96100
#ifdef RUN_DEPRECATED
97101
if constexpr (do_ext_tests) {
98102
store_global_test<::sycl::ext::oneapi::atomic_ref, space, T, order,
@@ -135,15 +139,56 @@ void store_test_orders_scopes(queue q, size_t N) {
135139
store_test_scopes<space, T, memory_order::relaxed>(q, N);
136140
=======
137141
template <typename T> void store_test(queue q, size_t N) {
142+
=======
143+
>>>>>>> d94406530 ([SYCL][CUDA] Added tests for atomic loads and stores for various orders and scopes (#648))
138144
#ifdef RUN_DEPRECATED
139-
store_test<::sycl::ext::oneapi::atomic_ref,
140-
access::address_space::global_space, T>(q, N);
145+
if constexpr (do_ext_tests) {
146+
store_global_test<::sycl::ext::oneapi::atomic_ref, space, T, order,
147+
scope>(q, N);
148+
}
141149
#else
142-
store_test<::sycl::atomic_ref, access::address_space::global_space, T>(q, N);
150+
store_global_test<::sycl::atomic_ref, space, T, order, scope>(q, N);
143151
#endif
152+
<<<<<<< HEAD
144153
>>>>>>> a5f90c0cd ([SYCL] Speed up atomic_ref tests (#879))
145154
}
146155

156+
=======
157+
}
158+
}
159+
160+
template <access::address_space space, typename T,
161+
memory_order order = memory_order::relaxed>
162+
void store_test_scopes(queue q, size_t N) {
163+
std::vector<memory_scope> scopes =
164+
q.get_device().get_info<info::device::atomic_memory_scope_capabilities>();
165+
if (std::find(scopes.begin(), scopes.end(), memory_scope::system) !=
166+
scopes.end()) {
167+
store_test<space, T, order, memory_scope::system>(q, N);
168+
}
169+
if (std::find(scopes.begin(), scopes.end(), memory_scope::work_group) !=
170+
scopes.end()) {
171+
store_test<space, T, order, memory_scope::work_group>(q, N);
172+
}
173+
if (std::find(scopes.begin(), scopes.end(), memory_scope::sub_group) !=
174+
scopes.end()) {
175+
store_test<space, T, order, memory_scope::sub_group>(q, N);
176+
}
177+
store_test<space, T, order, memory_scope::device>(q, N);
178+
}
179+
180+
template <access::address_space space, typename T>
181+
void store_test_orders_scopes(queue q, size_t N) {
182+
std::vector<memory_order> orders =
183+
q.get_device().get_info<info::device::atomic_memory_order_capabilities>();
184+
if (std::find(orders.begin(), orders.end(), memory_order::release) !=
185+
orders.end()) {
186+
store_test_scopes<space, T, memory_order::release>(q, N);
187+
}
188+
store_test_scopes<space, T, memory_order::relaxed>(q, N);
189+
}
190+
191+
>>>>>>> d94406530 ([SYCL][CUDA] Added tests for atomic loads and stores for various orders and scopes (#648))
147192
template <access::address_space space> void store_test_all() {
148193
queue q;
149194

SYCL/AtomicRef/store_atomic64.cpp

Lines changed: 0 additions & 40 deletions
This file was deleted.

0 commit comments

Comments
 (0)