From 0b61b2d87beeb81db5212a870650ceb01c0a9513 Mon Sep 17 00:00:00 2001 From: Alexey Bader Date: Sat, 28 Nov 2020 13:24:36 +0300 Subject: [PATCH 1/4] [SYCL][CUDA][NFC] Check alignment of USM allocations --- sycl/plugins/cuda/pi_cuda.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sycl/plugins/cuda/pi_cuda.cpp b/sycl/plugins/cuda/pi_cuda.cpp index fc801df260c93..a5749f4ca0cbd 100644 --- a/sycl/plugins/cuda/pi_cuda.cpp +++ b/sycl/plugins/cuda/pi_cuda.cpp @@ -4164,6 +4164,9 @@ pi_result cuda_piextUSMHostAlloc(void **result_ptr, pi_context context, result = error; } + assert(alignment == 0 || + (result == PI_SUCCESS && + reinterpret_cast(*result_ptr) % alignment == 0)); return result; } @@ -4185,6 +4188,9 @@ pi_result cuda_piextUSMDeviceAlloc(void **result_ptr, pi_context context, result = error; } + assert(alignment == 0 || + (result == PI_SUCCESS && + reinterpret_cast(*result_ptr) % alignment == 0)); return result; } @@ -4207,6 +4213,9 @@ pi_result cuda_piextUSMSharedAlloc(void **result_ptr, pi_context context, result = error; } + assert(alignment == 0 || + (result == PI_SUCCESS && + reinterpret_cast(*result_ptr) % alignment == 0)); return result; } From 15924f122c39eabb68b7e2931b5185387bf29cb9 Mon Sep 17 00:00:00 2001 From: Alexey Bader Date: Tue, 1 Dec 2020 12:37:44 +0300 Subject: [PATCH 2/4] Add alignment checks to OpenCL and Level Zero plug-ins. --- sycl/plugins/level_zero/pi_level_zero.cpp | 6 ++++++ sycl/plugins/opencl/pi_opencl.cpp | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/sycl/plugins/level_zero/pi_level_zero.cpp b/sycl/plugins/level_zero/pi_level_zero.cpp index efbf971d6945b..0141a28f28331 100644 --- a/sycl/plugins/level_zero/pi_level_zero.cpp +++ b/sycl/plugins/level_zero/pi_level_zero.cpp @@ -4674,6 +4674,8 @@ pi_result piextUSMHostAlloc(void **ResultPtr, pi_context Context, ZE_CALL( zeMemAllocHost(Context->ZeContext, &ZeDesc, Size, Alignment, ResultPtr)); + assert(alignment == 0 || + reinterpret_cast(*result_ptr) % alignment == 0); return PI_SUCCESS; } @@ -4700,6 +4702,8 @@ pi_result USMDeviceAllocImpl(void **ResultPtr, pi_context Context, ZE_CALL(zeMemAllocDevice(Context->ZeContext, &ZeDesc, Size, Alignment, Device->ZeDevice, ResultPtr)); + assert(alignment == 0 || + reinterpret_cast(*result_ptr) % alignment == 0); return PI_SUCCESS; } @@ -4721,6 +4725,8 @@ pi_result USMSharedAllocImpl(void **ResultPtr, pi_context Context, ZE_CALL(zeMemAllocShared(Context->ZeContext, &ZeDevDesc, &ZeHostDesc, Size, Alignment, Device->ZeDevice, ResultPtr)); + assert(alignment == 0 || + reinterpret_cast(*result_ptr) % alignment == 0); return PI_SUCCESS; } diff --git a/sycl/plugins/opencl/pi_opencl.cpp b/sycl/plugins/opencl/pi_opencl.cpp index 1aae5013a92a8..6a65cc6e9962d 100644 --- a/sycl/plugins/opencl/pi_opencl.cpp +++ b/sycl/plugins/opencl/pi_opencl.cpp @@ -713,6 +713,9 @@ pi_result piextUSMHostAlloc(void **result_ptr, pi_context context, *result_ptr = Ptr; + assert(alignment == 0 || + (RetVal == PI_SUCCESS && + reinterpret_cast(*result_ptr) % alignment == 0)); return RetVal; } @@ -746,6 +749,9 @@ pi_result piextUSMDeviceAlloc(void **result_ptr, pi_context context, *result_ptr = Ptr; + assert(alignment == 0 || + (RetVal == PI_SUCCESS && + reinterpret_cast(*result_ptr) % alignment == 0)); return RetVal; } @@ -779,6 +785,9 @@ pi_result piextUSMSharedAlloc(void **result_ptr, pi_context context, *result_ptr = Ptr; + assert(alignment == 0 || + (RetVal == PI_SUCCESS && + reinterpret_cast(*result_ptr) % alignment == 0)); return RetVal; } From ad618650c1d0e48af658c77f6dcd2b825627a047 Mon Sep 17 00:00:00 2001 From: Alexey Bader Date: Tue, 1 Dec 2020 13:05:58 +0300 Subject: [PATCH 3/4] Fix typo in parameter name. --- sycl/plugins/level_zero/pi_level_zero.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sycl/plugins/level_zero/pi_level_zero.cpp b/sycl/plugins/level_zero/pi_level_zero.cpp index 0141a28f28331..7ab21cc8d6c80 100644 --- a/sycl/plugins/level_zero/pi_level_zero.cpp +++ b/sycl/plugins/level_zero/pi_level_zero.cpp @@ -4674,8 +4674,8 @@ pi_result piextUSMHostAlloc(void **ResultPtr, pi_context Context, ZE_CALL( zeMemAllocHost(Context->ZeContext, &ZeDesc, Size, Alignment, ResultPtr)); - assert(alignment == 0 || - reinterpret_cast(*result_ptr) % alignment == 0); + assert(Alignment == 0 || + reinterpret_cast(*result_ptr) % Alignment == 0); return PI_SUCCESS; } @@ -4702,8 +4702,8 @@ pi_result USMDeviceAllocImpl(void **ResultPtr, pi_context Context, ZE_CALL(zeMemAllocDevice(Context->ZeContext, &ZeDesc, Size, Alignment, Device->ZeDevice, ResultPtr)); - assert(alignment == 0 || - reinterpret_cast(*result_ptr) % alignment == 0); + assert(Alignment == 0 || + reinterpret_cast(*result_ptr) % Alignment == 0); return PI_SUCCESS; } @@ -4725,8 +4725,8 @@ pi_result USMSharedAllocImpl(void **ResultPtr, pi_context Context, ZE_CALL(zeMemAllocShared(Context->ZeContext, &ZeDevDesc, &ZeHostDesc, Size, Alignment, Device->ZeDevice, ResultPtr)); - assert(alignment == 0 || - reinterpret_cast(*result_ptr) % alignment == 0); + assert(Alignment == 0 || + reinterpret_cast(*result_ptr) % Alignment == 0); return PI_SUCCESS; } From c476b1765565420e7db939925939587dd62ecfa1 Mon Sep 17 00:00:00 2001 From: Alexey Bader Date: Wed, 2 Dec 2020 12:46:43 +0300 Subject: [PATCH 4/4] Fix another typo. --- sycl/plugins/level_zero/pi_level_zero.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sycl/plugins/level_zero/pi_level_zero.cpp b/sycl/plugins/level_zero/pi_level_zero.cpp index 7ab21cc8d6c80..a970ef387faa8 100644 --- a/sycl/plugins/level_zero/pi_level_zero.cpp +++ b/sycl/plugins/level_zero/pi_level_zero.cpp @@ -4675,7 +4675,7 @@ pi_result piextUSMHostAlloc(void **ResultPtr, pi_context Context, zeMemAllocHost(Context->ZeContext, &ZeDesc, Size, Alignment, ResultPtr)); assert(Alignment == 0 || - reinterpret_cast(*result_ptr) % Alignment == 0); + reinterpret_cast(*ResultPtr) % Alignment == 0); return PI_SUCCESS; } @@ -4703,7 +4703,7 @@ pi_result USMDeviceAllocImpl(void **ResultPtr, pi_context Context, Device->ZeDevice, ResultPtr)); assert(Alignment == 0 || - reinterpret_cast(*result_ptr) % Alignment == 0); + reinterpret_cast(*ResultPtr) % Alignment == 0); return PI_SUCCESS; } @@ -4726,7 +4726,7 @@ pi_result USMSharedAllocImpl(void **ResultPtr, pi_context Context, Alignment, Device->ZeDevice, ResultPtr)); assert(Alignment == 0 || - reinterpret_cast(*result_ptr) % Alignment == 0); + reinterpret_cast(*ResultPtr) % Alignment == 0); return PI_SUCCESS; }