Skip to content

Commit 70d05d1

Browse files
committed
Add a few regression tests
1 parent f60aaa7 commit 70d05d1

File tree

2 files changed

+197
-0
lines changed

2 files changed

+197
-0
lines changed
+187
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -o %t.out
2+
// REQUIRES: cpu
3+
// RUN: env SYCL_PARALLEL_FOR_RANGE_ROUNDING_TRACE=1 %CPU_RUN_PLACEHOLDER %t.out %CPU_CHECK_PLACEHOLDER
4+
5+
#include <CL/sycl.hpp>
6+
7+
using namespace sycl;
8+
9+
range<1> Range1 = {0};
10+
range<2> Range2 = {0, 0};
11+
range<3> Range3 = {0, 0, 0};
12+
13+
void check(const char *msg, size_t v, size_t ref) {
14+
std::cout << msg << v << std::endl;
15+
assert(v == ref);
16+
}
17+
18+
int try_item1(size_t size) {
19+
range<1> Size{size};
20+
int Counter = 0;
21+
{
22+
buffer<range<1>, 1> BufRange(&Range1, 1);
23+
buffer<int, 1> BufCounter(&Counter, 1);
24+
queue myQueue;
25+
26+
myQueue.submit([&](handler &cgh) {
27+
auto AccRange = BufRange.get_access<access::mode::read_write>(cgh);
28+
auto AccCounter = BufCounter.get_access<access::mode::atomic>(cgh);
29+
cgh.parallel_for<class PF_init_item1>(Size, [=](item<1> ITEM) {
30+
AccCounter[0].fetch_add(1);
31+
AccRange[0] = this_item<1>().get_range(0);
32+
});
33+
});
34+
myQueue.wait();
35+
}
36+
check("Size seen by user = ", Range1.get(0), size);
37+
check("Counter = ", Counter, size);
38+
return 0;
39+
}
40+
41+
void try_item2(size_t size) {
42+
range<2> Size{size, size};
43+
int Counter = 0;
44+
{
45+
buffer<range<2>, 1> BufRange(&Range2, 1);
46+
buffer<int, 1> BufCounter(&Counter, 1);
47+
queue myQueue;
48+
49+
myQueue.submit([&](handler &cgh) {
50+
auto AccRange = BufRange.get_access<access::mode::read_write>(cgh);
51+
auto AccCounter = BufCounter.get_access<access::mode::atomic>(cgh);
52+
cgh.parallel_for<class PF_init_item2>(Size, [=](item<2> ITEM) {
53+
AccCounter[0].fetch_add(1);
54+
AccRange[0][0] = this_item<2>().get_range(0);
55+
});
56+
});
57+
myQueue.wait();
58+
}
59+
check("Size seen by user = ", Range2.get(0), size);
60+
check("Counter = ", Counter, size * size);
61+
}
62+
63+
void try_item3(size_t size) {
64+
range<3> Size{size, size, size};
65+
int Counter = 0;
66+
{
67+
buffer<range<3>, 1> BufRange(&Range3, 1);
68+
buffer<int, 1> BufCounter(&Counter, 1);
69+
queue myQueue;
70+
71+
myQueue.submit([&](handler &cgh) {
72+
auto AccRange = BufRange.get_access<access::mode::read_write>(cgh);
73+
auto AccCounter = BufCounter.get_access<access::mode::atomic>(cgh);
74+
cgh.parallel_for<class PF_init_item3>(Size, [=](item<3> ITEM) {
75+
AccCounter[0].fetch_add(1);
76+
AccRange[0][0] = this_item<3>().get_range(0);
77+
});
78+
});
79+
myQueue.wait();
80+
}
81+
check("Size seen by user = ", Range3.get(0), size);
82+
check("Counter = ", Counter, size * size * size);
83+
}
84+
85+
void try_id1(size_t size) {
86+
range<1> Size{size};
87+
int Counter = 0;
88+
{
89+
buffer<range<1>, 1> BufRange(&Range1, 1);
90+
buffer<int, 1> BufCounter(&Counter, 1);
91+
queue myQueue;
92+
93+
myQueue.submit([&](handler &cgh) {
94+
auto AccRange = BufRange.get_access<access::mode::read_write>(cgh);
95+
auto AccCounter = BufCounter.get_access<access::mode::atomic>(cgh);
96+
cgh.parallel_for<class PF_init_id1>(Size, [=](id<1> ID) {
97+
AccCounter[0].fetch_add(1);
98+
AccRange[0] = this_id<1>()[0];
99+
});
100+
});
101+
myQueue.wait();
102+
}
103+
check("Counter = ", Counter, size);
104+
}
105+
106+
void try_id2(size_t size) {
107+
range<2> Size{size, size};
108+
int Counter = 0;
109+
{
110+
buffer<range<2>, 1> BufRange(&Range2, 1);
111+
buffer<int, 1> BufCounter(&Counter, 1);
112+
queue myQueue;
113+
114+
myQueue.submit([&](handler &cgh) {
115+
auto AccRange = BufRange.get_access<access::mode::read_write>(cgh);
116+
auto AccCounter = BufCounter.get_access<access::mode::atomic>(cgh);
117+
cgh.parallel_for<class PF_init_id2>(Size, [=](id<2> ID) {
118+
AccCounter[0].fetch_add(1);
119+
AccRange[0][0] = this_id<2>()[0];
120+
});
121+
});
122+
myQueue.wait();
123+
}
124+
check("Counter = ", Counter, size * size);
125+
}
126+
127+
void try_id3(size_t size) {
128+
range<3> Size{size, size, size};
129+
int Counter = 0;
130+
{
131+
buffer<range<3>, 1> BufRange(&Range3, 1);
132+
buffer<int, 1> BufCounter(&Counter, 1);
133+
queue myQueue;
134+
135+
myQueue.submit([&](handler &cgh) {
136+
auto AccRange = BufRange.get_access<access::mode::read_write>(cgh);
137+
auto AccCounter = BufCounter.get_access<access::mode::atomic>(cgh);
138+
cgh.parallel_for<class PF_init_id3>(Size, [=](id<3> ID) {
139+
AccCounter[0].fetch_add(1);
140+
AccRange[0][0] = this_id<3>()[0];
141+
});
142+
});
143+
myQueue.wait();
144+
}
145+
check("Counter = ", Counter, size * size * size);
146+
}
147+
148+
int main() {
149+
int x;
150+
151+
x = 10;
152+
try_item1(x);
153+
try_item2(x);
154+
try_item3(x);
155+
try_id1(x);
156+
try_id2(x);
157+
try_id3(x);
158+
159+
x = 1025;
160+
try_item1(x);
161+
try_item2(x);
162+
try_item3(x);
163+
try_id1(x);
164+
try_id2(x);
165+
try_id3(x);
166+
167+
return 0;
168+
}
169+
170+
// CHECK: Size seen by user = 10
171+
// CHECK-NEXT: Counter = 10
172+
// CHECK-NEXT: Size seen by user = 10
173+
// CHECK-NEXT: Counter = 100
174+
// CHECK-NEXT: Size seen by user = 10
175+
// CHECK-NEXT: Counter = 1000
176+
// CHECK-NEXT: Counter = 10
177+
// CHECK-NEXT: Counter = 100
178+
// CHECK-NEXT: Counter = 1000
179+
// CHECK-NEXT: Size seen by user = 1025
180+
// CHECK-NEXT: Counter = 1025
181+
// CHECK-NEXT: Size seen by user = 1025
182+
// CHECK-NEXT: Counter = 1050625
183+
// CHECK-NEXT: Size seen by user = 1025
184+
// CHECK-NEXT: Counter = 1076890625
185+
// CHECK-NEXT: Counter = 1025
186+
// CHECK-NEXT: Counter = 1050625
187+
// CHECK-NEXT: Counter = 1076890625
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// RUN: %clangxx -fsycl -fsycl-unnamed-lambda -fsycl-device-only -c %s -o %t.temp
2+
3+
#include "CL/sycl.hpp"
4+
5+
void foo(cl::sycl::queue queue) {
6+
cl::sycl::event queue_event2 = queue.submit([&](cl::sycl::handler &cgh) {
7+
cgh.parallel_for<class K1>(cl::sycl::range<1>{1},
8+
[=](cl::sycl::item<1> id) {});
9+
});
10+
}

0 commit comments

Comments
 (0)