Skip to content
This repository was archived by the owner on Mar 28, 2023. It is now read-only.

Commit a84675d

Browse files
authored
Add cuda event interop test and has_native_event (#1053)
This PR add testing of the CUDA backend experimental event interop and `has_native_event`. It checks that valid types are returned and that the created SYCL objects can be used to do work. Additionally it checks that `has_native_event` returns true for a SYCL kernel but false for a host_task. Depends on: intel/llvm#6288
1 parent ae5c5e8 commit a84675d

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

SYCL/Plugin/interop-cuda-experimental.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,37 @@ int main() {
9696
assert(check_queue(new_Q));
9797
}
9898

99+
// Create new event
100+
CUevent cu_event;
101+
102+
CUDA_CHECK(cuCtxSetCurrent(cu_ctx));
103+
CUDA_CHECK(cuEventCreate(&cu_event, CU_EVENT_DEFAULT));
104+
105+
auto sycl_event =
106+
sycl::make_event<sycl::backend::ext_oneapi_cuda>(cu_event, sycl_ctx);
107+
auto native_event =
108+
sycl::get_native<sycl::backend::ext_oneapi_cuda>(sycl_event);
109+
110+
check_type<sycl::event>(sycl_event);
111+
check_type<CUevent>(native_event);
112+
113+
// Check sycl queue with sycl_ctx still works
114+
{
115+
sycl::queue new_Q(sycl_ctx, sycl::default_selector());
116+
assert(check_queue(new_Q));
117+
}
118+
119+
// Check has_native_event
120+
{
121+
auto e = Q.submit([&](sycl::handler &cgh) { cgh.single_task([] {}); });
122+
assert(sycl::ext::oneapi::cuda::has_native_event(e));
123+
}
124+
125+
{
126+
auto e = Q.submit([&](sycl::handler &cgh) { cgh.host_task([] {}); });
127+
assert(!sycl::ext::oneapi::cuda::has_native_event(e));
128+
}
129+
99130
// Create new queue
100131
CUstream cu_queue;
101132
CUDA_CHECK(cuCtxSetCurrent(cu_ctx));

0 commit comments

Comments
 (0)