From 52549806a0944afc6fac3bb58f080e5c635ba023 Mon Sep 17 00:00:00 2001 From: Kamil Goras Date: Thu, 12 Oct 2023 10:43:06 +0200 Subject: [PATCH 1/3] UT commandNDRangeKernel --- tests/test_openclhpp.cpp | 83 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/tests/test_openclhpp.cpp b/tests/test_openclhpp.cpp index 7748e664..0f1c6948 100644 --- a/tests/test_openclhpp.cpp +++ b/tests/test_openclhpp.cpp @@ -408,6 +408,7 @@ void setUp(void) cl::pfn_clRetainCommandBufferKHR = ::clRetainCommandBufferKHR; cl::pfn_clReleaseCommandBufferKHR = ::clReleaseCommandBufferKHR; cl::pfn_clGetCommandBufferInfoKHR = ::clGetCommandBufferInfoKHR; + cl::pfn_clCommandNDRangeKernelKHR = ::clCommandNDRangeKernelKHR; #endif #if defined(cl_khr_semaphore) cl::pfn_clCreateSemaphoreWithPropertiesKHR = ::clCreateSemaphoreWithPropertiesKHR; @@ -485,6 +486,7 @@ void tearDown(void) cl::pfn_clRetainCommandBufferKHR = nullptr; cl::pfn_clReleaseCommandBufferKHR = nullptr; cl::pfn_clGetCommandBufferInfoKHR = nullptr; + cl::pfn_clCommandNDRangeKernelKHR = nullptr; #endif #if defined(cl_khr_semaphore) cl::pfn_clCreateSemaphoreWithPropertiesKHR = nullptr; @@ -3604,6 +3606,87 @@ void testCommandBufferInfoKHRCommandQueues(void) TEST_ASSERT_EQUAL_PTR(make_command_queue(2), command_queues[2]()); #endif } + +static cl_int clCommandNDRangeKernelKHR_testCommandNDRangeKernel(cl_command_buffer_khr command_buffer, + cl_command_queue command_queue, + const cl_ndrange_kernel_command_properties_khr* properties, + cl_kernel kernel, + cl_uint work_dim, + const size_t* global_work_offset, + const size_t* global_work_size, + const size_t* local_work_size, + cl_uint num_sync_points_in_wait_list, + const cl_sync_point_khr* sync_point_wait_list, + cl_sync_point_khr* sync_point, + cl_mutable_command_khr* mutable_handle, + cl_int cmock_to_return) +{ + TEST_ASSERT_EQUAL(0, properties[0]); + TEST_ASSERT_EQUAL(1, properties[1]); + TEST_ASSERT_EQUAL(2, properties[2]); + + TEST_ASSERT_EQUAL(3, sync_point_wait_list[0]); + TEST_ASSERT_EQUAL(2, sync_point_wait_list[1]); + TEST_ASSERT_EQUAL(1, sync_point_wait_list[2]); + + TEST_ASSERT_NOT_NULL(sync_point); + TEST_ASSERT_EQUAL_PTR(nullptr, mutable_handle); + switch (cmock_to_return) + { + case 0: + { + TEST_ASSERT_EQUAL_PTR(nullptr, command_queue); + return CL_SUCCESS; + } + case 1: + { + TEST_ASSERT_EQUAL_PTR(commandQueuePool[0](), command_queue); + return CL_INVALID_COMMAND_QUEUE; + } + } + return CL_SUCCESS; +} + +void testCommandNDRangeKernel(void) +{ +#if defined(cl_khr_command_buffer) + cl::vector properties{ 0,1,2 }; + cl::Kernel kernel; + cl::NDRange offset; + cl::NDRange global; + cl::NDRange local = cl::NullRange; + std::vector sync_points_vec{ 3,2,1 }; + cl_sync_point_khr sync_point{ 2 }; + cl::MutableCommandKhr* mutable_handle = nullptr; + cl::CommandQueue* command_queue = nullptr; + + clCommandNDRangeKernelKHR_StubWithCallback(clCommandNDRangeKernelKHR_testCommandNDRangeKernel); + cl_int ret = commandBufferKhrPool[0].commandNDRangeKernel( + properties, + kernel, + offset, + global, + local, + &sync_points_vec, + &sync_point, + mutable_handle, + command_queue); + TEST_ASSERT_EQUAL(ret, CL_SUCCESS); + + ret = commandBufferKhrPool[0].commandNDRangeKernel( + properties, + kernel, + offset, + global, + local, + &sync_points_vec, + &sync_point, + mutable_handle, + &commandQueuePool[0]); + TEST_ASSERT_EQUAL(ret, CL_INVALID_COMMAND_QUEUE); +#endif +} + // Tests for Device::GetInfo static cl_int clGetInfo_testDeviceGetInfoCLDeviceVendorId( cl_device_id device, cl_device_info param_name, size_t param_value_size, From d01722b3b03590ea1a19d12702f65af7f421c749 Mon Sep 17 00:00:00 2001 From: Kamil Goras Date: Mon, 16 Oct 2023 14:38:41 +0200 Subject: [PATCH 2/3] Added real data for kernel, ranges, sync_point check --- tests/test_openclhpp.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/tests/test_openclhpp.cpp b/tests/test_openclhpp.cpp index 0f1c6948..e77277a6 100644 --- a/tests/test_openclhpp.cpp +++ b/tests/test_openclhpp.cpp @@ -3631,11 +3631,20 @@ static cl_int clCommandNDRangeKernelKHR_testCommandNDRangeKernel(cl_command_buff TEST_ASSERT_NOT_NULL(sync_point); TEST_ASSERT_EQUAL_PTR(nullptr, mutable_handle); + + TEST_ASSERT_EQUAL_PTR(kernelPool[0](), kernel); + TEST_ASSERT_EQUAL(2, global_work_offset[0]); + TEST_ASSERT_EQUAL(5, global_work_size[0]); + switch (cmock_to_return) { case 0: { TEST_ASSERT_EQUAL_PTR(nullptr, command_queue); + if (sync_point != nullptr) + { + *sync_point = 15; + } return CL_SUCCESS; } case 1: @@ -3652,8 +3661,8 @@ void testCommandNDRangeKernel(void) #if defined(cl_khr_command_buffer) cl::vector properties{ 0,1,2 }; cl::Kernel kernel; - cl::NDRange offset; - cl::NDRange global; + cl::NDRange offset{ 2 }; + cl::NDRange global{ 5 }; cl::NDRange local = cl::NullRange; std::vector sync_points_vec{ 3,2,1 }; cl_sync_point_khr sync_point{ 2 }; @@ -3663,7 +3672,7 @@ void testCommandNDRangeKernel(void) clCommandNDRangeKernelKHR_StubWithCallback(clCommandNDRangeKernelKHR_testCommandNDRangeKernel); cl_int ret = commandBufferKhrPool[0].commandNDRangeKernel( properties, - kernel, + kernelPool[0], offset, global, local, @@ -3672,10 +3681,11 @@ void testCommandNDRangeKernel(void) mutable_handle, command_queue); TEST_ASSERT_EQUAL(ret, CL_SUCCESS); + TEST_ASSERT_EQUAL(15, sync_point); ret = commandBufferKhrPool[0].commandNDRangeKernel( properties, - kernel, + kernelPool[0], offset, global, local, From ffb7ea8887527d23593b9261ed3681891e2d98b3 Mon Sep 17 00:00:00 2001 From: Marcin Hajder Date: Wed, 18 Oct 2023 09:08:30 +0200 Subject: [PATCH 3/3] minor fix --- tests/test_openclhpp.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_openclhpp.cpp b/tests/test_openclhpp.cpp index e77277a6..d113b9c6 100644 --- a/tests/test_openclhpp.cpp +++ b/tests/test_openclhpp.cpp @@ -3660,7 +3660,6 @@ void testCommandNDRangeKernel(void) { #if defined(cl_khr_command_buffer) cl::vector properties{ 0,1,2 }; - cl::Kernel kernel; cl::NDRange offset{ 2 }; cl::NDRange global{ 5 }; cl::NDRange local = cl::NullRange;