From 9100610b5d5dad4ea0053ff5a5fac1b8b44aba23 Mon Sep 17 00:00:00 2001 From: "Dunajski, Bartosz" Date: Thu, 6 Oct 2022 08:47:30 +0000 Subject: [PATCH] Remove test API to disable overdispatch Signed-off-by: Dunajski, Bartosz --- opencl/extensions/public/cl_ext_private.h | 1 - opencl/source/api/api.cpp | 7 - opencl/source/kernel/kernel.cpp | 17 --- opencl/source/kernel/kernel.h | 1 - opencl/source/kernel/multi_device_kernel.cpp | 1 - opencl/source/kernel/multi_device_kernel.h | 1 - opencl/test/unit_test/api/CMakeLists.txt | 4 - .../unit_test/api/api_tests_dg2_and_later.cpp | 142 ------------------ 8 files changed, 174 deletions(-) delete mode 100644 opencl/test/unit_test/api/api_tests_dg2_and_later.cpp diff --git a/opencl/extensions/public/cl_ext_private.h b/opencl/extensions/public/cl_ext_private.h index e52c71148c..a509e0317f 100644 --- a/opencl/extensions/public/cl_ext_private.h +++ b/opencl/extensions/public/cl_ext_private.h @@ -164,7 +164,6 @@ using cl_unified_shared_memory_type_intel = cl_uint; #define CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_AFTER_DEPENDENCY_ROUND_ROBIN_INTEL 0x10024 #define CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_INTEL 0x10025 #define CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_STALL_BASED_ROUND_ROBIN_INTEL 0x10026 -#define CL_KERNEL_EXEC_INFO_EU_THREAD_OVER_DISPATCH_INTEL 0x10027 /****************************** * SLICE COUNT SELECTING * diff --git a/opencl/source/api/api.cpp b/opencl/source/api/api.cpp index 83e6535674..5393e4c08a 100644 --- a/opencl/source/api/api.cpp +++ b/opencl/source/api/api.cpp @@ -5096,13 +5096,6 @@ cl_int CL_API_CALL clSetKernelExecInfo(cl_kernel kernel, TRACING_EXIT(ClSetKernelExecInfo, &retVal); return retVal; } - case CL_KERNEL_EXEC_INFO_EU_THREAD_OVER_DISPATCH_INTEL: { - if ((paramValueSize != sizeof(cl_bool)) || (paramValue == nullptr)) { - return CL_INVALID_VALUE; - } - retVal = pMultiDeviceKernel->setOverdispatchParam(paramValueSize, paramValue); - break; - } default: { retVal = CL_INVALID_VALUE; break; diff --git a/opencl/source/kernel/kernel.cpp b/opencl/source/kernel/kernel.cpp index 34becb1cf4..1699d89e6e 100644 --- a/opencl/source/kernel/kernel.cpp +++ b/opencl/source/kernel/kernel.cpp @@ -2260,21 +2260,4 @@ bool Kernel::graphicsAllocationTypeUseSystemMemory(AllocationType type) { (type == AllocationType::SVM_ZERO_COPY); } -int32_t Kernel::setOverdispatchParam(size_t paramValueSize, const void *paramValue) { - auto &hwInfo = clDevice.getHardwareInfo(); - const auto &hwInfoConfig = *HwInfoConfig::get(hwInfo.platform.eProductFamily); - - if (!hwInfoConfig.isDisableOverdispatchAvailable(hwInfo)) { - return CL_INVALID_VALUE; - } - - if (*static_cast(paramValue) == CL_TRUE) { - additionalKernelExecInfo = AdditionalKernelExecInfo::NotSet; - return CL_SUCCESS; - } - - additionalKernelExecInfo = AdditionalKernelExecInfo::DisableOverdispatch; - return CL_SUCCESS; -} - } // namespace NEO diff --git a/opencl/source/kernel/kernel.h b/opencl/source/kernel/kernel.h index 93f950c2a8..4111c7588d 100644 --- a/opencl/source/kernel/kernel.h +++ b/opencl/source/kernel/kernel.h @@ -355,7 +355,6 @@ class Kernel : public ReferenceTrackedObject { uint64_t getKernelStartAddress(const bool localIdsGenerationByRuntime, const bool kernelUsesLocalIds, const bool isCssUsed, const bool returnFullAddress) const; bool isKernelDebugEnabled() const { return debugEnabled; } - int32_t setOverdispatchParam(size_t paramValueSize, const void *paramValue); void setAdditionalKernelExecInfo(uint32_t additionalKernelExecInfo); uint32_t getAdditionalKernelExecInfo() const; MOCKABLE_VIRTUAL bool requiresWaDisableRccRhwoOptimization() const; diff --git a/opencl/source/kernel/multi_device_kernel.cpp b/opencl/source/kernel/multi_device_kernel.cpp index 98b7873604..d38a3cab7a 100644 --- a/opencl/source/kernel/multi_device_kernel.cpp +++ b/opencl/source/kernel/multi_device_kernel.cpp @@ -53,7 +53,6 @@ void MultiDeviceKernel::clearSvmKernelExecInfo() { callOnEachKernel(&Kernel::cle void MultiDeviceKernel::clearUnifiedMemoryExecInfo() { callOnEachKernel(&Kernel::clearUnifiedMemoryExecInfo); } int MultiDeviceKernel::setKernelThreadArbitrationPolicy(uint32_t propertyValue) { return getResultFromEachKernel(&Kernel::setKernelThreadArbitrationPolicy, propertyValue); } cl_int MultiDeviceKernel::setKernelExecutionType(cl_execution_info_kernel_type_intel executionType) { return getResultFromEachKernel(&Kernel::setKernelExecutionType, executionType); } -int32_t MultiDeviceKernel::setOverdispatchParam(size_t paramValueSize, const void *paramValue) { return getResultFromEachKernel(&Kernel::setOverdispatchParam, paramValueSize, paramValue); } void MultiDeviceKernel::storeKernelArgAllocIdMemoryManagerCounter(uint32_t argIndex, uint32_t allocIdMemoryManagerCounter) { for (auto rootDeviceIndex = 0u; rootDeviceIndex < kernels.size(); rootDeviceIndex++) { diff --git a/opencl/source/kernel/multi_device_kernel.h b/opencl/source/kernel/multi_device_kernel.h index 23d09bbb3c..28511e00ce 100644 --- a/opencl/source/kernel/multi_device_kernel.h +++ b/opencl/source/kernel/multi_device_kernel.h @@ -66,7 +66,6 @@ class MultiDeviceKernel : public BaseObject<_cl_kernel> { void clearUnifiedMemoryExecInfo(); int setKernelThreadArbitrationPolicy(uint32_t propertyValue); cl_int setKernelExecutionType(cl_execution_info_kernel_type_intel executionType); - int32_t setOverdispatchParam(size_t paramValueSize, const void *paramValue); void storeKernelArgAllocIdMemoryManagerCounter(uint32_t argIndex, uint32_t allocIdMemoryManagerCounter); Program *getProgram() const { return program; } const KernelInfoContainer &getKernelInfos() const { return kernelInfos; } diff --git a/opencl/test/unit_test/api/CMakeLists.txt b/opencl/test/unit_test/api/CMakeLists.txt index 0b1ea8a9a2..0632e2baff 100644 --- a/opencl/test/unit_test/api/CMakeLists.txt +++ b/opencl/test/unit_test/api/CMakeLists.txt @@ -124,10 +124,6 @@ set(IGDRCL_SRCS_tests_api ${CMAKE_CURRENT_SOURCE_DIR}/cl_unload_platform_compiler_tests.inl ) -if(TESTS_DG2_AND_LATER) - list(APPEND IGDRCL_SRCS_tests_api ${CMAKE_CURRENT_SOURCE_DIR}/api_tests_dg2_and_later.cpp) -endif() - if(TESTS_PVC_AND_LATER) list(APPEND IGDRCL_SRCS_tests_api ${CMAKE_CURRENT_SOURCE_DIR}/cl_get_device_info_pvc_and_later_tests.cpp) endif() diff --git a/opencl/test/unit_test/api/api_tests_dg2_and_later.cpp b/opencl/test/unit_test/api/api_tests_dg2_and_later.cpp deleted file mode 100644 index e1571e55c1..0000000000 --- a/opencl/test/unit_test/api/api_tests_dg2_and_later.cpp +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (C) 2022 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#include "shared/source/os_interface/hw_info_config.h" -#include "shared/test/common/test_macros/test.h" - -#include "opencl/source/api/additional_extensions.h" -#include "opencl/test/unit_test/api/cl_api_tests.h" -#include "opencl/test/unit_test/fixtures/hello_world_fixture.h" -#include "opencl/test/unit_test/test_macros/test_checks_ocl.h" - -using namespace NEO; - -struct AdditionalKernelExecInfoFixture : public ApiFixture<> { - void setUp() { - ApiFixture::setUp(); - - auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo(); - auto revId = HwInfoConfig::get(hwInfo->platform.eProductFamily)->getHwRevIdFromStepping(REVISION_B, *hwInfo); - hwInfo->platform.usRevId = revId; - } -}; - -using AdditionalKernelExecInfoTests = Test; - -using matcherDG2AndLater = IsAtLeastXeHpgCore; -HWTEST2_F(AdditionalKernelExecInfoTests, givenEuThreadOverDispatchEnableWhenCallingClSetKernelExecInfoThenOverDispatchIsDisabled, matcherDG2AndLater) { - std::unique_ptr pKernelInfo = std::make_unique(); - std::unique_ptr pMultiDeviceKernel(MockMultiDeviceKernel::create(pProgram, MockKernel::toKernelInfoContainer(*pKernelInfo, testedRootDeviceIndex))); - auto pKernel = pMultiDeviceKernel->getKernel(testedRootDeviceIndex); - const auto &hwInfo = pDevice->getHardwareInfo(); - const auto &hwInfoConfig = *HwInfoConfig::get(hwInfo.platform.eProductFamily); - - cl_kernel_exec_info paramName = CL_KERNEL_EXEC_INFO_EU_THREAD_OVER_DISPATCH_INTEL; - cl_bool paramValue = CL_FALSE; - cl_int retVal = clSetKernelExecInfo(pMultiDeviceKernel.get(), paramName, sizeof(cl_bool), ¶mValue); - - if (hwInfoConfig.isDisableOverdispatchAvailable(hwInfo)) { - EXPECT_EQ(CL_SUCCESS, retVal); - } else { - EXPECT_EQ(CL_INVALID_VALUE, retVal); - } - EXPECT_EQ(AdditionalKernelExecInfo::DisableOverdispatch, pKernel->getAdditionalKernelExecInfo()); -} - -HWTEST2_F(AdditionalKernelExecInfoTests, givenNullPtrParamWhenSetKernelExecInfoSetThenReturnError, matcherDG2AndLater) { - std::unique_ptr pKernelInfo = std::make_unique(); - std::unique_ptr pMultiDeviceKernel(MockMultiDeviceKernel::create(pProgram, MockKernel::toKernelInfoContainer(*pKernelInfo, testedRootDeviceIndex))); - auto pKernel = pMultiDeviceKernel->getKernel(testedRootDeviceIndex); - - cl_kernel_exec_info paramName = CL_KERNEL_EXEC_INFO_EU_THREAD_OVER_DISPATCH_INTEL; - cl_int retVal = clSetKernelExecInfo(pMultiDeviceKernel.get(), paramName, sizeof(cl_bool), nullptr); - - EXPECT_EQ(CL_INVALID_VALUE, retVal); - EXPECT_EQ(AdditionalKernelExecInfo::DisableOverdispatch, pKernel->getAdditionalKernelExecInfo()); -} - -HWTEST2_F(AdditionalKernelExecInfoTests, givenIncorrectParamSizeWhenSetKernelExecInfoSetThenReturnError, matcherDG2AndLater) { - std::unique_ptr pKernelInfo = std::make_unique(); - std::unique_ptr pMultiDeviceKernel(MockMultiDeviceKernel::create(pProgram, MockKernel::toKernelInfoContainer(*pKernelInfo, testedRootDeviceIndex))); - auto pKernel = pMultiDeviceKernel->getKernel(testedRootDeviceIndex); - - cl_kernel_exec_info paramName = CL_KERNEL_EXEC_INFO_EU_THREAD_OVER_DISPATCH_INTEL; - cl_bool paramValue = CL_FALSE; - size_t paramSize = sizeof(cl_bool) + 1; - - cl_int retVal = clSetKernelExecInfo(pMultiDeviceKernel.get(), paramName, paramSize, ¶mValue); - - EXPECT_EQ(CL_INVALID_VALUE, retVal); - EXPECT_EQ(AdditionalKernelExecInfo::DisableOverdispatch, pKernel->getAdditionalKernelExecInfo()); -} - -struct EnqueueTaskWithAdditionalKernelExecInfo : public HelloWorldTest { - using Parent = HelloWorldTest; - - void SetUp() override { - Parent::kernelFilename = "required_work_group"; - Parent::kernelName = "CopyBuffer2"; - Parent::SetUp(); - } - - void TearDown() override { - Parent::TearDown(); - } -}; - -HWTEST2_F(EnqueueTaskWithAdditionalKernelExecInfo, givenKernelWithOverDispatchDisabledWhenEnqueuingTaskThenOverdispatchIsDisabledSuccessIsReturned, matcherDG2AndLater) { - auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo(); - const auto &hwInfoConfig = *HwInfoConfig::get(hwInfo->platform.eProductFamily); - hwInfo->platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(REVISION_B, *hwInfo); - - if (!hwInfoConfig.isDisableOverdispatchAvailable(*hwInfo)) { - GTEST_SKIP(); - } - - cl_uint numEventsInWaitList = 0; - cl_event *eventWaitList = nullptr; - cl_event *event = nullptr; - cl_kernel_exec_info paramName = CL_KERNEL_EXEC_INFO_EU_THREAD_OVER_DISPATCH_INTEL; - cl_bool paramValue = CL_FALSE; - - retVal = clSetKernelExecInfo(pMultiDeviceKernel, paramName, sizeof(cl_bool), ¶mValue); - EXPECT_EQ(CL_SUCCESS, retVal); - EXPECT_EQ(AdditionalKernelExecInfo::DisableOverdispatch, pKernel->getAdditionalKernelExecInfo()); - - cl_command_queue commandQueue = static_cast(pCmdQ); - cl_kernel kernel = static_cast(pMultiDeviceKernel); - - retVal = clEnqueueTask( - commandQueue, - kernel, - numEventsInWaitList, - eventWaitList, - event); - - EXPECT_EQ(CL_SUCCESS, retVal); -} - -HWTEST2_F(AdditionalKernelExecInfoTests, givenEuThreadOverDispatchEnableWhenCallingClSetKernelExecInfoThenThenStateIsTheSameAndSuccessIsReturned, IsAtLeastXeHpCore) { - const auto &hwInfo = pDevice->getHardwareInfo(); - const auto &hwInfoConfig = *HwInfoConfig::get(hwInfo.platform.eProductFamily); - - if (!hwInfoConfig.isDisableOverdispatchAvailable(hwInfo)) { - GTEST_SKIP(); - } - - std::unique_ptr pKernelInfo = std::make_unique(); - std::unique_ptr pMultiDeviceKernel(MockMultiDeviceKernel::create(pProgram, MockKernel::toKernelInfoContainer(*pKernelInfo, testedRootDeviceIndex))); - auto pKernel = pMultiDeviceKernel->getKernel(testedRootDeviceIndex); - EXPECT_EQ(AdditionalKernelExecInfo::DisableOverdispatch, pKernel->getAdditionalKernelExecInfo()); - - cl_kernel_exec_info paramName = CL_KERNEL_EXEC_INFO_EU_THREAD_OVER_DISPATCH_INTEL; - cl_bool paramValue = CL_TRUE; - cl_int retVal = clSetKernelExecInfo(pMultiDeviceKernel.get(), paramName, sizeof(cl_bool), ¶mValue); - - EXPECT_EQ(CL_SUCCESS, retVal); - EXPECT_EQ(AdditionalKernelExecInfo::NotSet, pKernel->getAdditionalKernelExecInfo()); -}