Skip to content

Commit bdd87ed

Browse files
committed
[SYCL][E2E] Test kernel with kernel_device_specific::work_group_size WG size and large register file
1 parent 4b993a7 commit bdd87ed

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// RUN: %{build} -o %t.out
2+
// RUN: %{run} %t.out
3+
4+
// REQUIRES: gpu && gpu-intel-pvc
5+
// UNSUPPORTED: cuda || hip
6+
7+
// Currently fails because of issue in UR Level Zero adapter.
8+
// XFAIL: level_zero
9+
10+
// clang-format off
11+
#include <sycl/sycl.hpp>
12+
#include <sycl/ext/intel/experimental/grf_size_properties.hpp>
13+
// clang-format on
14+
15+
using namespace sycl;
16+
17+
// Test that kernel can be submitted with work group size returned by
18+
// info::kernel_device_specific::work_group_size when large register file is
19+
// used.
20+
21+
class MyKernel;
22+
namespace syclex = sycl::ext::oneapi::experimental;
23+
namespace intelex = sycl::ext::intel::experimental;
24+
25+
__attribute__((noinline)) void f(int *Result, nd_item<1> &index) {
26+
Result[index.get_global_id()] = index.get_global_id();
27+
}
28+
29+
int main() {
30+
queue myQueue;
31+
auto myContext = myQueue.get_context();
32+
auto myDev = myQueue.get_device();
33+
34+
kernel_id kernelId = get_kernel_id<MyKernel>();
35+
auto myBundle =
36+
get_kernel_bundle<bundle_state::executable>(myContext, {kernelId});
37+
38+
kernel myKernel = myBundle.get_kernel(kernelId);
39+
size_t maxWgSize =
40+
myKernel.get_info<info::kernel_device_specific::work_group_size>(myDev);
41+
42+
nd_range myRange{range{maxWgSize}, range{maxWgSize}};
43+
44+
int *Result = sycl::malloc_shared<int>(maxWgSize, myQueue);
45+
syclex::properties kernel_properties{intelex::grf_size<256>};
46+
myQueue.submit([&](handler &cgh) {
47+
cgh.use_kernel_bundle(myBundle);
48+
cgh.parallel_for<MyKernel>(myRange, kernel_properties,
49+
([=](nd_item<1> index) { f(Result, index); }));
50+
});
51+
52+
myQueue.wait();
53+
return 0;
54+
}

0 commit comments

Comments
 (0)