Refactor(ocl): refactor OCL Kernel and MultiDeviceKernel class 1/n

- For static create() method for Kernel and MultiDeviceKernel force errcodeRet
parameter to be passed via reference (instead of a pointer)
- Move part of kernel's creation logic to initialize() method

Signed-off-by: Kacper Nowak <kacper.nowak@intel.com>
This commit is contained in:
Kacper Nowak
2023-04-06 21:44:42 +00:00
committed by Compute-Runtime-Automation
parent 01d03aa5b6
commit 7be2ac84d3
36 changed files with 132 additions and 144 deletions

View File

@@ -186,11 +186,12 @@ TEST_F(KernelSubGroupInfoKhrTest, GivenNullDeviceWhenGettingSubGroupInfoFromSing
}
TEST_F(KernelSubGroupInfoKhrTest, GivenNullDeviceWhenGettingSubGroupInfoFromMultiDeviceKernelThenInvalidDeviceErrorIsReturned) {
cl_int retVal{CL_SUCCESS};
MockUnrestrictiveContext context;
auto mockProgram = std::make_unique<MockProgram>(&context, false, context.getDevices());
std::unique_ptr<MultiDeviceKernel> pMultiDeviceKernel(
MultiDeviceKernel::create<MockKernel>(mockProgram.get(), this->pMultiDeviceKernel->getKernelInfos(), nullptr));
MultiDeviceKernel::create<MockKernel>(mockProgram.get(), this->pMultiDeviceKernel->getKernelInfos(), retVal));
ASSERT_EQ(CL_SUCCESS, retVal);
retVal = clGetKernelSubGroupInfoKHR(
pMultiDeviceKernel.get(),

View File

@@ -339,7 +339,9 @@ TEST_F(KernelSubGroupInfoTest, GivenNullDeviceWhenGettingSubGroupInfoFromMultiDe
MockUnrestrictiveContext context;
auto mockProgram = std::make_unique<MockProgram>(&context, false, context.getDevices());
std::unique_ptr<MultiDeviceKernel> pMultiDeviceKernel(MultiDeviceKernel::create<MockKernel>(mockProgram.get(), this->pMultiDeviceKernel->getKernelInfos(), nullptr));
cl_int retVal{CL_SUCCESS};
std::unique_ptr<MultiDeviceKernel> pMultiDeviceKernel(MultiDeviceKernel::create<MockKernel>(mockProgram.get(), this->pMultiDeviceKernel->getKernelInfos(), retVal));
ASSERT_EQ(CL_SUCCESS, retVal);
retVal = clGetKernelSubGroupInfo(
pMultiDeviceKernel.get(),

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2018-2022 Intel Corporation
* Copyright (C) 2018-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -33,7 +33,9 @@ class KernelArgSvmApiFixture : public ApiFixture<> {
pKernelInfo->addArgBuffer(0, 0x30, sizeof(void *));
pKernelInfo->setAddressQualifier(0, KernelArgMetadata::AddrGlobal);
pMockMultiDeviceKernel = MultiDeviceKernel::create<MockKernel>(pProgram, MockKernel::toKernelInfoContainer(*pKernelInfo, testedRootDeviceIndex), nullptr);
cl_int retVal{CL_SUCCESS};
pMockMultiDeviceKernel = MultiDeviceKernel::create<MockKernel>(pProgram, MockKernel::toKernelInfoContainer(*pKernelInfo, testedRootDeviceIndex), retVal);
ASSERT_EQ(CL_SUCCESS, retVal);
pMockKernel = static_cast<MockKernel *>(pMockMultiDeviceKernel->getKernel(testedRootDeviceIndex));
ASSERT_NE(nullptr, pMockKernel);
pMockKernel->setCrossThreadData(pCrossThreadData, sizeof(pCrossThreadData));
@@ -81,10 +83,12 @@ TEST_F(clSetKernelArgSVMPointerTests, GivenDeviceNotSupportingSvmWhenSettingKern
auto hwInfo = executionEnvironment->rootDeviceEnvironments[ApiFixture::testedRootDeviceIndex]->getMutableHardwareInfo();
hwInfo->capabilityTable.ftrSvm = false;
cl_int retVal{CL_SUCCESS};
std::unique_ptr<MultiDeviceKernel> pMultiDeviceKernel(
MultiDeviceKernel::create<MockKernel>(pProgram, MockKernel::toKernelInfoContainer(*pKernelInfo, testedRootDeviceIndex), nullptr));
MultiDeviceKernel::create<MockKernel>(pProgram, MockKernel::toKernelInfoContainer(*pKernelInfo, testedRootDeviceIndex), retVal));
ASSERT_EQ(CL_SUCCESS, retVal);
auto retVal = clSetKernelArgSVMPointer(
retVal = clSetKernelArgSVMPointer(
pMultiDeviceKernel.get(), // cl_kernel kernel
0, // cl_uint arg_index
nullptr // const void *arg_value

View File

@@ -23,7 +23,9 @@ class KernelExecInfoFixture : public ApiFixture<> {
pKernelInfo = std::make_unique<KernelInfo>();
pKernelInfo->kernelDescriptor.kernelAttributes.simdSize = 1;
pMockMultiDeviceKernel = MultiDeviceKernel::create<MockKernel>(pProgram, MockKernel::toKernelInfoContainer(*pKernelInfo, testedRootDeviceIndex), nullptr);
cl_int retVal{CL_SUCCESS};
pMockMultiDeviceKernel = MultiDeviceKernel::create<MockKernel>(pProgram, MockKernel::toKernelInfoContainer(*pKernelInfo, testedRootDeviceIndex), retVal);
ASSERT_EQ(CL_SUCCESS, retVal);
pMockKernel = static_cast<MockKernel *>(pMockMultiDeviceKernel->getKernel(testedRootDeviceIndex));
ASSERT_NE(nullptr, pMockKernel);
svmCapabilities = pDevice->getDeviceInfo().svmCapabilities;
@@ -75,8 +77,10 @@ TEST_F(clSetKernelExecInfoTests, GivenDeviceNotSupportingSvmWhenSettingKernelExe
auto hwInfo = executionEnvironment->rootDeviceEnvironments[ApiFixture::testedRootDeviceIndex]->getMutableHardwareInfo();
VariableBackup<bool> ftrSvm{&hwInfo->capabilityTable.ftrSvm, false};
cl_int retVal{CL_SUCCESS};
std::unique_ptr<MultiDeviceKernel> pMultiDeviceKernel(MultiDeviceKernel::create<MockKernel>(
pProgram, MockKernel::toKernelInfoContainer(*pKernelInfo, testedRootDeviceIndex), nullptr));
pProgram, MockKernel::toKernelInfoContainer(*pKernelInfo, testedRootDeviceIndex), retVal));
ASSERT_EQ(CL_SUCCESS, retVal);
uint32_t newPolicy = CL_KERNEL_EXEC_INFO_THREAD_ARBITRATION_POLICY_ROUND_ROBIN_INTEL;
retVal = clSetKernelExecInfo(