Add clGetKernelMaxConcurrentWorkGroupCountINTEL

clGetKernelMaxConcurrentWorkGroupCountINTEL replaces clGetExecutionInfoINTEL
function.

Change-Id: I7e3461695de7ee4c0e43c3e9770724b025c0e2be
Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
This commit is contained in:
Filip Hazubski
2020-01-22 12:47:58 +01:00
committed by sys_ocldev
parent 2c568542f1
commit 9c16c1a425
10 changed files with 123 additions and 113 deletions

View File

@@ -74,13 +74,13 @@ set(IGDRCL_SRCS_tests_api
${CMAKE_CURRENT_SOURCE_DIR}/cl_get_device_ids_tests.inl
${CMAKE_CURRENT_SOURCE_DIR}/cl_get_device_info_tests.inl
${CMAKE_CURRENT_SOURCE_DIR}/cl_get_event_profiling_info_tests.inl
${CMAKE_CURRENT_SOURCE_DIR}/cl_get_execution_info_intel_tests.inl
${CMAKE_CURRENT_SOURCE_DIR}/cl_get_extension_function_address_for_platform_tests.inl
${CMAKE_CURRENT_SOURCE_DIR}/cl_get_extension_function_address_tests.inl
${CMAKE_CURRENT_SOURCE_DIR}/cl_get_image_info_tests.inl
${CMAKE_CURRENT_SOURCE_DIR}/cl_get_image_params_tests.inl
${CMAKE_CURRENT_SOURCE_DIR}/cl_get_kernel_arg_info_tests.inl
${CMAKE_CURRENT_SOURCE_DIR}/cl_get_kernel_info_tests.inl
${CMAKE_CURRENT_SOURCE_DIR}/cl_get_kernel_max_concurrent_work_group_count_intel_tests.inl
${CMAKE_CURRENT_SOURCE_DIR}/cl_get_kernel_sub_group_info_khr_tests.inl
${CMAKE_CURRENT_SOURCE_DIR}/cl_get_kernel_sub_group_info_tests.inl
${CMAKE_CURRENT_SOURCE_DIR}/cl_get_kernel_suggested_local_work_size_intel_tests.inl

View File

@@ -5,7 +5,7 @@
*
*/
#include "unit_tests/api/cl_get_execution_info_intel_tests.inl"
#include "unit_tests/api/cl_get_kernel_max_concurrent_work_group_count_intel_tests.inl"
#include "unit_tests/api/cl_get_kernel_suggested_local_work_size_intel_tests.inl"
#include "unit_tests/api/cl_get_kernel_work_group_info_tests.inl"
#include "unit_tests/api/cl_get_mem_object_info_tests.inl"

View File

@@ -1,69 +0,0 @@
/*
* Copyright (C) 2017-2019 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "runtime/command_queue/command_queue.h"
#include "unit_tests/mocks/mock_kernel.h"
#include "cl_api_tests.h"
using namespace NEO;
using clGetExecutionInfoTests = api_tests;
namespace ULT {
TEST_F(clGetExecutionInfoTests, GivenInvalidInputWhenCallingGetExecutionInfoThenErrorIsReturned) {
retVal = clGetExecutionInfoINTEL(nullptr, pKernel, 0, nullptr, nullptr, 0, 0, nullptr, nullptr);
EXPECT_NE(CL_SUCCESS, retVal);
retVal = clGetExecutionInfoINTEL(pCommandQueue, nullptr, 0, nullptr, nullptr, 0, 0, nullptr, nullptr);
EXPECT_NE(CL_SUCCESS, retVal);
pKernel->isPatchedOverride = false;
retVal = clGetExecutionInfoINTEL(pCommandQueue, pKernel, 0, nullptr, nullptr, 0, 0, nullptr, nullptr);
EXPECT_NE(CL_SUCCESS, retVal);
pKernel->isPatchedOverride = true;
auto invalidParamName = 0xFFFF;
retVal = clGetExecutionInfoINTEL(pCommandQueue, pKernel, 0, nullptr, nullptr, invalidParamName, 0, nullptr, nullptr);
EXPECT_NE(CL_SUCCESS, retVal);
uint32_t queryResult;
retVal = clGetExecutionInfoINTEL(pCommandQueue, pKernel, 0, nullptr, nullptr, CL_EXECUTION_INFO_MAX_WORKGROUP_COUNT_INTEL,
sizeof(queryResult), nullptr, nullptr);
EXPECT_NE(CL_SUCCESS, retVal);
retVal = clGetExecutionInfoINTEL(pCommandQueue, pKernel, 0, nullptr, nullptr, CL_EXECUTION_INFO_MAX_WORKGROUP_COUNT_INTEL,
0, &queryResult, nullptr);
EXPECT_NE(CL_SUCCESS, retVal);
}
TEST_F(clGetExecutionInfoTests, GivenVariousInputWhenGettingMaxWorkGroupCountThenCorrectValuesAreReturned) {
uint32_t queryResult;
retVal = clGetExecutionInfoINTEL(pCommandQueue, pKernel, 0, nullptr, nullptr, CL_EXECUTION_INFO_MAX_WORKGROUP_COUNT_INTEL,
sizeof(queryResult), &queryResult, nullptr);
EXPECT_EQ(CL_SUCCESS, retVal);
EXPECT_NE(0u, queryResult);
uint64_t queryResult64 = 0;
size_t queryResultSize;
retVal = clGetExecutionInfoINTEL(pCommandQueue, pKernel, 0, nullptr, nullptr, CL_EXECUTION_INFO_MAX_WORKGROUP_COUNT_INTEL,
sizeof(queryResult64), &queryResult64, &queryResultSize);
EXPECT_EQ(CL_SUCCESS, retVal);
EXPECT_EQ(queryResult, queryResult64);
EXPECT_EQ(sizeof(queryResult), queryResultSize);
std::unique_ptr<MockKernel> pKernelWithExecutionEnvironmentPatch(MockKernel::create(pCommandQueue->getDevice(), pProgram));
uint32_t queryResultWithExecutionEnvironment;
retVal = clGetExecutionInfoINTEL(pCommandQueue, pKernelWithExecutionEnvironmentPatch.get(), 0, nullptr, nullptr,
CL_EXECUTION_INFO_MAX_WORKGROUP_COUNT_INTEL,
sizeof(queryResultWithExecutionEnvironment), &queryResultWithExecutionEnvironment, nullptr);
EXPECT_EQ(CL_SUCCESS, retVal);
EXPECT_EQ(queryResult, queryResultWithExecutionEnvironment);
}
} // namespace ULT

View File

@@ -83,9 +83,9 @@ TEST_F(clGetExtensionFunctionAddressForPlatformTests, GivenClGetKernelSuggestedL
EXPECT_EQ(retVal, reinterpret_cast<void *>(clGetKernelSuggestedLocalWorkSizeINTEL));
}
TEST_F(clGetExtensionFunctionAddressForPlatformTests, GivenClGetExecutionInfoINTELWhenGettingExtensionFunctionThenCorrectAddressIsReturned) {
auto retVal = clGetExtensionFunctionAddressForPlatform(pPlatform, "clGetExecutionInfoINTEL");
EXPECT_EQ(retVal, reinterpret_cast<void *>(clGetExecutionInfoINTEL));
TEST_F(clGetExtensionFunctionAddressForPlatformTests, GivenClGetKernelMaxConcurrentWorkGroupCountINTELWhenGettingExtensionFunctionThenCorrectAddressIsReturned) {
auto retVal = clGetExtensionFunctionAddressForPlatform(pPlatform, "clGetKernelMaxConcurrentWorkGroupCountINTEL");
EXPECT_EQ(retVal, reinterpret_cast<void *>(clGetKernelMaxConcurrentWorkGroupCountINTEL));
}
TEST_F(clGetExtensionFunctionAddressForPlatformTests, GivenClEnqueueNDCountKernelINTELWhenGettingExtensionFunctionThenCorrectAddressIsReturned) {

View File

@@ -168,9 +168,9 @@ TEST_F(clGetExtensionFunctionAddressTests, GivenClGetKernelSuggestedLocalWorkSiz
EXPECT_EQ(retVal, reinterpret_cast<void *>(clGetKernelSuggestedLocalWorkSizeINTEL));
}
TEST_F(clGetExtensionFunctionAddressTests, GivenClGetExecutionInfoINTELWhenGettingExtensionFunctionThenCorrectAddressIsReturned) {
auto retVal = clGetExtensionFunctionAddress("clGetExecutionInfoINTEL");
EXPECT_EQ(retVal, reinterpret_cast<void *>(clGetExecutionInfoINTEL));
TEST_F(clGetExtensionFunctionAddressTests, GivenClGetKernelMaxConcurrentWorkGroupCountINTELWhenGettingExtensionFunctionThenCorrectAddressIsReturned) {
auto retVal = clGetExtensionFunctionAddress("clGetKernelMaxConcurrentWorkGroupCountINTEL");
EXPECT_EQ(retVal, reinterpret_cast<void *>(clGetKernelMaxConcurrentWorkGroupCountINTEL));
}
TEST_F(clGetExtensionFunctionAddressTests, GivenClEnqueueNDCountKernelINTELWhenGettingExtensionFunctionThenCorrectAddressIsReturned) {

View File

@@ -0,0 +1,79 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "runtime/command_queue/command_queue.h"
#include "unit_tests/mocks/mock_kernel.h"
#include "cl_api_tests.h"
using namespace NEO;
using clGetKernelMaxConcurrentWorkGroupCountTests = api_tests;
namespace ULT {
TEST_F(clGetKernelMaxConcurrentWorkGroupCountTests, GivenInvalidInputWhenCallingGetKernelMaxConcurrentWorkGroupCountThenErrorIsReturned) {
size_t globalWorkOffset[3];
size_t localWorkSize[3];
size_t suggestedWorkGroupCount;
cl_uint workDim = 1;
retVal = clGetKernelMaxConcurrentWorkGroupCountINTEL(nullptr, pKernel, workDim,
globalWorkOffset, localWorkSize, &suggestedWorkGroupCount);
EXPECT_EQ(CL_INVALID_COMMAND_QUEUE, retVal);
retVal = clGetKernelMaxConcurrentWorkGroupCountINTEL(pCommandQueue, nullptr, workDim,
globalWorkOffset, localWorkSize, &suggestedWorkGroupCount);
EXPECT_EQ(CL_INVALID_KERNEL, retVal);
pKernel->isPatchedOverride = false;
retVal = clGetKernelMaxConcurrentWorkGroupCountINTEL(pCommandQueue, pKernel, workDim,
globalWorkOffset, localWorkSize, &suggestedWorkGroupCount);
EXPECT_EQ(CL_INVALID_KERNEL, retVal);
pKernel->isPatchedOverride = true;
retVal = clGetKernelMaxConcurrentWorkGroupCountINTEL(pCommandQueue, pKernel, workDim,
globalWorkOffset, localWorkSize, nullptr);
EXPECT_EQ(CL_INVALID_VALUE, retVal);
retVal = clGetKernelMaxConcurrentWorkGroupCountINTEL(pCommandQueue, pKernel, 0,
globalWorkOffset, localWorkSize, &suggestedWorkGroupCount);
EXPECT_EQ(CL_INVALID_WORK_DIMENSION, retVal);
retVal = clGetKernelMaxConcurrentWorkGroupCountINTEL(pCommandQueue, pKernel, 4,
globalWorkOffset, localWorkSize, &suggestedWorkGroupCount);
EXPECT_EQ(CL_INVALID_WORK_DIMENSION, retVal);
retVal = clGetKernelMaxConcurrentWorkGroupCountINTEL(pCommandQueue, pKernel, workDim,
nullptr, localWorkSize, &suggestedWorkGroupCount);
EXPECT_EQ(CL_INVALID_GLOBAL_OFFSET, retVal);
retVal = clGetKernelMaxConcurrentWorkGroupCountINTEL(pCommandQueue, pKernel, workDim,
globalWorkOffset, nullptr, &suggestedWorkGroupCount);
EXPECT_EQ(CL_INVALID_WORK_GROUP_SIZE, retVal);
}
TEST_F(clGetKernelMaxConcurrentWorkGroupCountTests, GivenVariousInputWhenGettingMaxConcurrentWorkGroupCountThenCorrectValuesAreReturned) {
cl_uint workDim = 3;
size_t globalWorkOffset[] = {0, 0, 0};
size_t localWorkSize[] = {8, 8, 8};
size_t maxConcurrentWorkGroupCount = 0;
retVal = clGetKernelMaxConcurrentWorkGroupCountINTEL(pCommandQueue, pKernel, workDim, globalWorkOffset, localWorkSize,
&maxConcurrentWorkGroupCount);
EXPECT_EQ(CL_SUCCESS, retVal);
size_t expectedMaxConcurrentWorkGroupCount = pKernel->getMaxWorkGroupCount(workDim, localWorkSize);
EXPECT_EQ(expectedMaxConcurrentWorkGroupCount, maxConcurrentWorkGroupCount);
std::unique_ptr<MockKernel> pKernelWithExecutionEnvironmentPatch(MockKernel::create(pCommandQueue->getDevice(), pProgram));
retVal = clGetKernelMaxConcurrentWorkGroupCountINTEL(pCommandQueue, pKernelWithExecutionEnvironmentPatch.get(), workDim,
globalWorkOffset, localWorkSize,
&maxConcurrentWorkGroupCount);
EXPECT_EQ(CL_SUCCESS, retVal);
expectedMaxConcurrentWorkGroupCount = pKernelWithExecutionEnvironmentPatch->getMaxWorkGroupCount(workDim, localWorkSize);
EXPECT_EQ(expectedMaxConcurrentWorkGroupCount, maxConcurrentWorkGroupCount);
}
} // namespace ULT