From 8bc1f4a15e4cd5be1f25f6ed1583847f287ed578 Mon Sep 17 00:00:00 2001 From: Ruyman Reyes Date: Fri, 5 Jun 2020 19:28:10 +0000 Subject: [PATCH 1/2] [SYCL][CUDA] Cleanup of SYCL context on native unit tests Fixes #1816 Signed-off-by: Ruyman Reyes --- .../pi/cuda/test_interop_get_native.cpp | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/sycl/unittests/pi/cuda/test_interop_get_native.cpp b/sycl/unittests/pi/cuda/test_interop_get_native.cpp index f8cf9f5fea310..3a9cf0a985d67 100644 --- a/sycl/unittests/pi/cuda/test_interop_get_native.cpp +++ b/sycl/unittests/pi/cuda/test_interop_get_native.cpp @@ -19,17 +19,15 @@ using namespace cl::sycl; struct CudaInteropGetNativeTests : public ::testing::TestWithParam { protected: - queue syclQueue_; - context syclContext_; + std::unique_ptr syclQueue_; device syclDevice_; void SetUp() override { syclDevice_ = GetParam().get_devices()[0]; - syclQueue_ = queue{syclDevice_}; - syclContext_ = syclQueue_.get_context(); + syclQueue_ = std::unique_ptr{new queue{syclDevice_}}; } - void TearDown() override {} + void TearDown() override { syclQueue_.release(); } }; TEST_P(CudaInteropGetNativeTests, getNativeDevice) { @@ -41,31 +39,32 @@ TEST_P(CudaInteropGetNativeTests, getNativeDevice) { } TEST_P(CudaInteropGetNativeTests, getNativeContext) { - CUcontext cudaContext = get_native(syclContext_); + CUcontext cudaContext = get_native(syclQueue_->get_context()); ASSERT_NE(cudaContext, nullptr); } TEST_P(CudaInteropGetNativeTests, getNativeQueue) { - CUstream cudaStream = get_native(syclQueue_); + CUstream cudaStream = get_native(*syclQueue_); ASSERT_NE(cudaStream, nullptr); CUcontext streamContext = nullptr; CUresult result = cuStreamGetCtx(cudaStream, &streamContext); ASSERT_EQ(result, CUDA_SUCCESS); - CUcontext cudaContext = get_native(syclContext_); + CUcontext cudaContext = get_native(syclQueue_->get_context()); ASSERT_EQ(streamContext, cudaContext); } TEST_P(CudaInteropGetNativeTests, interopTaskGetMem) { buffer syclBuffer(range<1>{1}); - syclQueue_.submit([&](handler &cgh) { + syclQueue_->submit([&](handler &cgh) { auto syclAccessor = syclBuffer.get_access(cgh); cgh.interop_task([=](interop_handler ih) { CUdeviceptr cudaPtr = ih.get_mem(syclAccessor); CUdeviceptr cudaPtrBase; size_t cudaPtrSize = 0; - CUcontext cudaContext = get_native(syclContext_); + CUcontext cudaContext = + get_native(syclQueue_->get_context()); ASSERT_EQ(CUDA_SUCCESS, cuCtxPushCurrent(cudaContext)); ASSERT_EQ(CUDA_SUCCESS, cuMemGetAddressRange(&cudaPtrBase, &cudaPtrSize, cudaPtr)); @@ -76,8 +75,8 @@ TEST_P(CudaInteropGetNativeTests, interopTaskGetMem) { } TEST_P(CudaInteropGetNativeTests, interopTaskGetBufferMem) { - CUstream cudaStream = get_native(syclQueue_); - syclQueue_.submit([&](handler &cgh) { + CUstream cudaStream = get_native(*syclQueue_); + syclQueue_->submit([&](handler &cgh) { cgh.interop_task([=](interop_handler ih) { CUstream cudaInteropStream = ih.get_queue(); ASSERT_EQ(cudaInteropStream, cudaStream); From bfe7946eae873f68596b9b614d65674aa18b49c4 Mon Sep 17 00:00:00 2001 From: Ruyman Reyes Date: Sat, 6 Jun 2020 06:36:51 +0000 Subject: [PATCH 2/2] Fixed wrong usage of unique_ptr --- sycl/unittests/pi/cuda/test_interop_get_native.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sycl/unittests/pi/cuda/test_interop_get_native.cpp b/sycl/unittests/pi/cuda/test_interop_get_native.cpp index 3a9cf0a985d67..584f73ad45c00 100644 --- a/sycl/unittests/pi/cuda/test_interop_get_native.cpp +++ b/sycl/unittests/pi/cuda/test_interop_get_native.cpp @@ -27,7 +27,7 @@ struct CudaInteropGetNativeTests : public ::testing::TestWithParam { syclQueue_ = std::unique_ptr{new queue{syclDevice_}}; } - void TearDown() override { syclQueue_.release(); } + void TearDown() override { syclQueue_.reset(); } }; TEST_P(CudaInteropGetNativeTests, getNativeDevice) {