|
1 |
| -// UNSUPPORTED: cuda |
2 |
| -// CUDA does not support unnamed lambdas. |
3 | 1 | //
|
4 | 2 | // RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple -fsycl-unnamed-lambda %s -o %t.out
|
5 | 3 | // RUN: %HOST_RUN_PLACEHOLDER %t.out
|
6 | 4 | // RUN: %ACC_RUN_PLACEHOLDER %t.out
|
7 | 5 | // RUN: %CPU_RUN_PLACEHOLDER %t.out
|
8 | 6 | // RUN: %GPU_RUN_PLACEHOLDER %t.out
|
9 | 7 |
|
10 |
| -//==------ oq_kernels.cpp - SYCL ordered queue kernel shortcut test --------==// |
| 8 | +// SYCL ordered queue kernel shortcut test |
11 | 9 | //
|
12 | 10 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
13 | 11 | // See https://llvm.org/LICENSE.txt for license information.
|
@@ -42,28 +40,62 @@ int main() {
|
42 | 40 | A[i]++;
|
43 | 41 | });
|
44 | 42 |
|
| 43 | + q.single_task([=]() { |
| 44 | + for (int i = 0; i < N; i++) { |
| 45 | + A[i]++; |
| 46 | + } |
| 47 | + }); |
| 48 | + |
45 | 49 | q.single_task<class Bar>([=]() {
|
46 | 50 | for (int i = 0; i < N; i++) {
|
47 | 51 | A[i]++;
|
48 | 52 | }
|
49 | 53 | });
|
50 | 54 |
|
51 | 55 | id<1> offset(0);
|
| 56 | + q.parallel_for(range<1>{N}, offset, [=](id<1> ID) { |
| 57 | + auto i = ID[0]; |
| 58 | + A[i]++; |
| 59 | + }); |
| 60 | + |
52 | 61 | q.parallel_for<class Baz>(range<1>{N}, offset, [=](id<1> ID) {
|
53 | 62 | auto i = ID[0];
|
54 | 63 | A[i]++;
|
55 | 64 | });
|
56 | 65 |
|
57 | 66 | nd_range<1> NDR(range<1>{N}, range<1>{2});
|
| 67 | + q.parallel_for(NDR, [=](nd_item<1> Item) { |
| 68 | + auto i = Item.get_global_id(0); |
| 69 | + A[i]++; |
| 70 | + }); |
| 71 | + |
58 | 72 | q.parallel_for<class NDFoo>(NDR, [=](nd_item<1> Item) {
|
59 | 73 | auto i = Item.get_global_id(0);
|
60 | 74 | A[i]++;
|
61 | 75 | });
|
62 | 76 |
|
| 77 | + q.submit([&](handler &cgh) { |
| 78 | + cgh.parallel_for_work_group<class WkGrp>( |
| 79 | + range<1>{N / 2}, range<1>{2}, [=](group<1> myGroup) { |
| 80 | + auto j = myGroup.get_id(0); |
| 81 | + myGroup.parallel_for_work_item( |
| 82 | + [&](h_item<1> it) { A[(j * 2) + it.get_local_id(0)]++; }); |
| 83 | + }); |
| 84 | + }); |
| 85 | + |
| 86 | + q.submit([&](handler &cgh) { |
| 87 | + cgh.parallel_for_work_group( |
| 88 | + range<1>{N / 2}, range<1>{2}, [=](group<1> myGroup) { |
| 89 | + auto j = myGroup.get_id(0); |
| 90 | + myGroup.parallel_for_work_item( |
| 91 | + [&](h_item<1> it) { A[(j * 2) + it.get_local_id(0)]++; }); |
| 92 | + }); |
| 93 | + }); |
| 94 | + |
63 | 95 | q.wait();
|
64 | 96 |
|
65 | 97 | for (int i = 0; i < N; i++) {
|
66 |
| - if (A[i] != 6) |
| 98 | + if (A[i] != 11) |
67 | 99 | return 1;
|
68 | 100 | }
|
69 | 101 | }
|
|
0 commit comments