Skip to content

Commit eb17836

Browse files
author
Alexander Batashev
authored
[SYCL] Fix kernel::get_native (#3655)
This patch fixes compilation errors with kernel::get_native usage and improves test coverage for this method
1 parent 3e9ed1d commit eb17836

File tree

4 files changed

+74
-2
lines changed

4 files changed

+74
-2
lines changed

sycl/include/CL/sycl/backend/level_zero.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ struct interop<backend::level_zero,
5757
};
5858

5959
namespace detail {
60-
template <> class BackendReturn<backend::level_zero, kernel> {
60+
template <> struct BackendReturn<backend::level_zero, kernel> {
6161
using type = ze_kernel_handle_t;
6262
};
6363

sycl/include/CL/sycl/kernel.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,8 @@ class __SYCL_EXPORT kernel {
177177
typename backend_traits<Backend>::template return_type<kernel>
178178
get_native() const {
179179
return detail::pi::cast<
180-
backend_traits<Backend>::template return_type<kernel>>(getNativeImpl());
180+
typename backend_traits<Backend>::template return_type<kernel>>(
181+
getNativeImpl());
181182
}
182183

183184
private:
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// REQUIRES: opencl, opencl_dev_kit
2+
// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %opencl_options %s -o %t.ocl.out
3+
// RUN: %t.ocl.out
4+
5+
#include <CL/cl.h>
6+
7+
#include <CL/sycl/backend/opencl.hpp>
8+
#include <sycl/sycl.hpp>
9+
10+
constexpr auto BE = sycl::backend::opencl;
11+
12+
class TestKernel;
13+
14+
int main() {
15+
sycl::queue Q;
16+
17+
if (0) {
18+
Q.submit([](sycl::handler &CGH) { CGH.single_task<TestKernel>([] {}); });
19+
}
20+
21+
sycl::kernel_id KernelID = sycl::get_kernel_id<TestKernel>();
22+
23+
sycl::kernel_bundle KernelBundle =
24+
sycl::get_kernel_bundle<sycl::bundle_state::executable>(Q.get_context());
25+
26+
sycl::kernel Kernel = KernelBundle.get_kernel(KernelID);
27+
28+
cl_kernel Handle = Kernel.get_native<BE>();
29+
30+
size_t Size = 0;
31+
cl_int Err =
32+
clGetKernelInfo(Handle, CL_KERNEL_FUNCTION_NAME, 0, nullptr, &Size);
33+
assert(Err == CL_SUCCESS);
34+
35+
return 0;
36+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// REQUIRES: level_zero, level_zero_dev_kit
2+
// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %level_zero_options %s -o %t.ze.out
3+
// RUN: %t.ze.out
4+
5+
#include <level_zero/ze_api.h>
6+
7+
#include <CL/sycl/backend/level_zero.hpp>
8+
#include <sycl/sycl.hpp>
9+
10+
constexpr auto BE = sycl::backend::level_zero;
11+
12+
class TestKernel;
13+
14+
int main() {
15+
sycl::queue Q;
16+
17+
if (0) {
18+
Q.submit([](sycl::handler &CGH) { CGH.single_task<TestKernel>([] {}); });
19+
}
20+
21+
sycl::kernel_id KernelID = sycl::get_kernel_id<TestKernel>();
22+
23+
sycl::kernel_bundle KernelBundle =
24+
sycl::get_kernel_bundle<sycl::bundle_state::executable>(Q.get_context());
25+
26+
sycl::kernel Kernel = KernelBundle.get_kernel(KernelID);
27+
28+
ze_kernel_handle_t Handle = Kernel.get_native<BE>();
29+
30+
ze_kernel_properties_t KernelProperties;
31+
ze_result_t Err = zeKernelGetProperties(Handle, &KernelProperties);
32+
assert(Err == ZE_RESULT_SUCCESS);
33+
34+
return 0;
35+
}

0 commit comments

Comments
 (0)