mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Remove device enqueue part 7
- mainly remove BlockKernelManager and ReflectionSurfaceHelper Related-To: NEO-6559 Signed-off-by: Katarzyna Cencelewska <katarzyna.cencelewska@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
8ebef3769c
commit
97765cd39f
@ -6,7 +6,6 @@
|
||||
|
||||
set(IGDRCL_SRCS_tests_program
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/block_kernel_manager_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/kernel_data.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/kernel_data_OCL2_0.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/kernel_info_tests.cpp
|
||||
@ -22,7 +21,6 @@ set(IGDRCL_SRCS_tests_program
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/program_spec_constants_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/program_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/program_tests.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/program_with_block_kernels_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/program_with_kernel_debug_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/program_with_source.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/program_with_zebin.h
|
||||
|
@ -1,89 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/memory_manager/graphics_allocation.h"
|
||||
#include "shared/source/program/kernel_info.h"
|
||||
#include "shared/test/common/mocks/mock_graphics_allocation.h"
|
||||
|
||||
#include "opencl/test/unit_test/mocks/mock_block_kernel_manager.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
TEST(BlockKernelManagerTest, WhenPushingPrivateSurfaceThenPrivateSurfaceArrayIsResized) {
|
||||
MockGraphicsAllocation allocation(0, 0);
|
||||
KernelInfo *blockInfo = new KernelInfo;
|
||||
MockBlockKernelManager blockManager;
|
||||
|
||||
blockManager.addBlockKernelInfo(blockInfo);
|
||||
|
||||
EXPECT_EQ(0u, blockManager.blockPrivateSurfaceArray.size());
|
||||
|
||||
blockManager.pushPrivateSurface(&allocation, 0);
|
||||
|
||||
EXPECT_EQ(1u, blockManager.blockPrivateSurfaceArray.size());
|
||||
}
|
||||
|
||||
TEST(BlockKernelManagerTest, WhenPushingPrivateSurfaceThenAllocationsArePlacedInCorrectPosition) {
|
||||
MockGraphicsAllocation allocation1(0, 0);
|
||||
MockGraphicsAllocation allocation2(0, 0);
|
||||
KernelInfo *blockInfo = new KernelInfo;
|
||||
KernelInfo *blockInfo2 = new KernelInfo;
|
||||
MockBlockKernelManager blockManager;
|
||||
|
||||
blockManager.addBlockKernelInfo(blockInfo);
|
||||
blockManager.addBlockKernelInfo(blockInfo2);
|
||||
|
||||
blockManager.pushPrivateSurface(&allocation1, 0);
|
||||
blockManager.pushPrivateSurface(&allocation2, 1);
|
||||
|
||||
EXPECT_EQ(2u, blockManager.blockPrivateSurfaceArray.size());
|
||||
|
||||
EXPECT_EQ(&allocation1, blockManager.blockPrivateSurfaceArray[0]);
|
||||
EXPECT_EQ(&allocation2, blockManager.blockPrivateSurfaceArray[1]);
|
||||
}
|
||||
|
||||
TEST(BlockKernelManagerTest, WhenPushingPrivateSurfaceThenPrivateSurfaceArrayIsSetToNullptrOnFirstCall) {
|
||||
MockGraphicsAllocation allocation(0, 0);
|
||||
KernelInfo *blockInfo = new KernelInfo;
|
||||
KernelInfo *blockInfo2 = new KernelInfo;
|
||||
KernelInfo *blockInfo3 = new KernelInfo;
|
||||
MockBlockKernelManager blockManager;
|
||||
|
||||
blockManager.addBlockKernelInfo(blockInfo);
|
||||
blockManager.addBlockKernelInfo(blockInfo2);
|
||||
blockManager.addBlockKernelInfo(blockInfo3);
|
||||
|
||||
blockManager.pushPrivateSurface(&allocation, 1);
|
||||
|
||||
EXPECT_EQ(3u, blockManager.blockPrivateSurfaceArray.size());
|
||||
|
||||
EXPECT_EQ(nullptr, blockManager.blockPrivateSurfaceArray[0]);
|
||||
EXPECT_EQ(nullptr, blockManager.blockPrivateSurfaceArray[2]);
|
||||
}
|
||||
|
||||
TEST(BlockKernelManagerTest, WhenGettingPrivateSurfaceThenValidAllocationIsReturned) {
|
||||
MockGraphicsAllocation allocation(0, 0);
|
||||
KernelInfo *blockInfo = new KernelInfo;
|
||||
|
||||
MockBlockKernelManager blockManager;
|
||||
|
||||
blockManager.addBlockKernelInfo(blockInfo);
|
||||
|
||||
blockManager.pushPrivateSurface(&allocation, 0);
|
||||
|
||||
EXPECT_EQ(1u, blockManager.blockPrivateSurfaceArray.size());
|
||||
|
||||
EXPECT_EQ(&allocation, blockManager.getPrivateSurface(0));
|
||||
}
|
||||
|
||||
TEST(BlockKernelManagerTest, GivenOutOfBoundIndexWhenGettingPrivateSurfaceThenNullptrIsReturned) {
|
||||
MockBlockKernelManager blockManager;
|
||||
EXPECT_EQ(nullptr, blockManager.getPrivateSurface(0));
|
||||
EXPECT_EQ(nullptr, blockManager.getPrivateSurface(10));
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 Intel Corporation
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@ -128,3 +128,12 @@ TEST(KernelInfo, whenGetKernelNamesStringIsCalledThenNamesAreProperlyConcatenate
|
||||
kernelInfoArray.push_back(&kernel2);
|
||||
EXPECT_STREQ("kern1;kern2", concatenateKernelNames(kernelInfoArray).c_str());
|
||||
}
|
||||
|
||||
TEST(KernelInfo, givenNumbersOfSamplerWhenCheckSamplerStateCountAndSamplerStateArraySizeThenCorrectValueAreReturned) {
|
||||
KernelInfo kernel = {};
|
||||
uint8_t numSamplers = 5u;
|
||||
kernel.kernelDescriptor.payloadMappings.samplerTable.numSamplers = numSamplers;
|
||||
auto samplerSize = HwHelper::get(defaultHwInfo->platform.eRenderCoreFamily).getSamplerStateSize();
|
||||
EXPECT_EQ(kernel.getSamplerStateArrayCount(), numSamplers);
|
||||
EXPECT_EQ(kernel.getSamplerStateArraySize(*defaultHwInfo), static_cast<size_t>(numSamplers * samplerSize));
|
||||
}
|
||||
|
@ -2102,85 +2102,6 @@ TEST_F(ProgramTests, GivenFailingGenBinaryProgramWhenRebuildingBinaryThenInvalid
|
||||
EXPECT_EQ(CL_INVALID_BINARY, retVal);
|
||||
}
|
||||
|
||||
TEST_F(ProgramTests, GivenZeroPrivateSizeInBlockWhenAllocateBlockProvateSurfacesCalledThenNoSurfaceIsCreated) {
|
||||
MockProgram *program = new MockProgram(pContext, false, toClDeviceVector(*pClDevice));
|
||||
|
||||
uint32_t crossThreadOffsetBlock = 0;
|
||||
|
||||
auto infoBlock = new MockKernelInfo;
|
||||
infoBlock->setPrivateMemory(0, false, 8, crossThreadOffsetBlock, 0);
|
||||
|
||||
program->blockKernelManager->addBlockKernelInfo(infoBlock);
|
||||
|
||||
program->allocateBlockPrivateSurfaces(*pClDevice);
|
||||
|
||||
EXPECT_EQ(nullptr, program->getBlockKernelManager()->getPrivateSurface(0));
|
||||
|
||||
delete program;
|
||||
}
|
||||
|
||||
TEST_F(ProgramTests, GivenNonZeroPrivateSizeInBlockWhenAllocateBlockProvateSurfacesCalledThenSurfaceIsCreated) {
|
||||
MockProgram *program = new MockProgram(pContext, false, toClDeviceVector(*pClDevice));
|
||||
|
||||
uint32_t crossThreadOffsetBlock = 0;
|
||||
|
||||
auto infoBlock = new MockKernelInfo;
|
||||
infoBlock->setPrivateMemory(1000, false, 8, crossThreadOffsetBlock, 0);
|
||||
|
||||
program->blockKernelManager->addBlockKernelInfo(infoBlock);
|
||||
|
||||
program->allocateBlockPrivateSurfaces(*pClDevice);
|
||||
|
||||
EXPECT_NE(nullptr, program->getBlockKernelManager()->getPrivateSurface(0));
|
||||
|
||||
delete program;
|
||||
}
|
||||
|
||||
TEST_F(ProgramTests, GivenNonZeroPrivateSizeInBlockWhenAllocateBlockProvateSurfacesCalledThenSecondSurfaceIsNotCreated) {
|
||||
MockProgram *program = new MockProgram(pContext, false, toClDeviceVector(*pClDevice));
|
||||
|
||||
uint32_t crossThreadOffsetBlock = 0;
|
||||
|
||||
auto infoBlock = new MockKernelInfo;
|
||||
infoBlock->setPrivateMemory(1000, false, 8, crossThreadOffsetBlock, 0);
|
||||
|
||||
program->blockKernelManager->addBlockKernelInfo(infoBlock);
|
||||
|
||||
program->allocateBlockPrivateSurfaces(*pClDevice);
|
||||
|
||||
GraphicsAllocation *privateSurface = program->getBlockKernelManager()->getPrivateSurface(0);
|
||||
|
||||
EXPECT_NE(nullptr, privateSurface);
|
||||
|
||||
program->allocateBlockPrivateSurfaces(*pClDevice);
|
||||
|
||||
GraphicsAllocation *privateSurface2 = program->getBlockKernelManager()->getPrivateSurface(0);
|
||||
|
||||
EXPECT_EQ(privateSurface, privateSurface2);
|
||||
|
||||
delete program;
|
||||
}
|
||||
|
||||
TEST_F(ProgramTests, givenProgramWithBlockKernelsWhenfreeBlockResourcesisCalledThenFreeGraphhicsAllocationsFromBlockKernelManagerIsCalled) {
|
||||
MockProgram *program = new MockProgram(pContext, false, toClDeviceVector(*pClDevice));
|
||||
|
||||
uint32_t crossThreadOffsetBlock = 0;
|
||||
|
||||
auto infoBlock = new MockKernelInfo;
|
||||
infoBlock->setPrivateMemory(1000, false, 8, crossThreadOffsetBlock, 0);
|
||||
|
||||
program->blockKernelManager->addBlockKernelInfo(infoBlock);
|
||||
|
||||
GraphicsAllocation *privateSurface = pDevice->getMemoryManager()->allocateGraphicsMemoryWithProperties(MockAllocationProperties{pDevice->getRootDeviceIndex(), MemoryConstants::pageSize});
|
||||
EXPECT_NE(nullptr, privateSurface);
|
||||
|
||||
program->getBlockKernelManager()->pushPrivateSurface(privateSurface, 0);
|
||||
|
||||
program->freeBlockResources();
|
||||
|
||||
delete program;
|
||||
}
|
||||
|
||||
class Program32BitTests : public ProgramTests {
|
||||
public:
|
||||
void SetUp() override {
|
||||
@ -2401,137 +2322,6 @@ TEST_F(ProgramTests, WhenLinkingTwoValidSpirvProgramsThenValidProgramIsReturned)
|
||||
node1->release();
|
||||
}
|
||||
|
||||
TEST_F(ProgramTests, givenSeparateBlockKernelsWhenNoParentAndSubgroupKernelsThenSeparateNoneKernel) {
|
||||
MockProgram program(pContext, false, toClDeviceVector(*pClDevice));
|
||||
|
||||
EXPECT_EQ(0u, program.getKernelInfoArray(rootDeviceIndex).size());
|
||||
EXPECT_EQ(0u, program.getParentKernelInfoArray(rootDeviceIndex).size());
|
||||
EXPECT_EQ(0u, program.getSubgroupKernelInfoArray(rootDeviceIndex).size());
|
||||
|
||||
program.separateBlockKernels(rootDeviceIndex);
|
||||
|
||||
EXPECT_EQ(0u, program.getKernelInfoArray(rootDeviceIndex).size());
|
||||
EXPECT_EQ(0u, program.getBlockKernelManager()->getCount());
|
||||
}
|
||||
|
||||
TEST_F(ProgramTests, givenSeparateBlockKernelsWhenRegularKernelsThenSeparateNoneKernel) {
|
||||
MockProgram program(pContext, false, toClDeviceVector(*pClDevice));
|
||||
|
||||
auto pRegularKernel1Info = new KernelInfo();
|
||||
pRegularKernel1Info->kernelDescriptor.kernelMetadata.kernelName = "regular_kernel_1";
|
||||
program.getKernelInfoArray(rootDeviceIndex).push_back(pRegularKernel1Info);
|
||||
|
||||
auto pRegularKernel2Info = new KernelInfo();
|
||||
pRegularKernel2Info->kernelDescriptor.kernelMetadata.kernelName = "regular_kernel_2";
|
||||
program.getKernelInfoArray(rootDeviceIndex).push_back(pRegularKernel2Info);
|
||||
|
||||
EXPECT_EQ(2u, program.getKernelInfoArray(rootDeviceIndex).size());
|
||||
|
||||
program.separateBlockKernels(rootDeviceIndex);
|
||||
|
||||
EXPECT_EQ(2u, program.getKernelInfoArray(rootDeviceIndex).size());
|
||||
EXPECT_EQ(0, strcmp("regular_kernel_1", program.getKernelInfoArray(rootDeviceIndex).at(0)->kernelDescriptor.kernelMetadata.kernelName.c_str()));
|
||||
EXPECT_EQ(0, strcmp("regular_kernel_2", program.getKernelInfoArray(rootDeviceIndex).at(1)->kernelDescriptor.kernelMetadata.kernelName.c_str()));
|
||||
|
||||
EXPECT_EQ(0u, program.getBlockKernelManager()->getCount());
|
||||
}
|
||||
|
||||
TEST_F(ProgramTests, givenSeparateBlockKernelsWhenChildLikeKernelWithoutParentKernelThenSeparateNoneKernel) {
|
||||
MockProgram program(pContext, false, toClDeviceVector(*pClDevice));
|
||||
|
||||
auto pParentKernelInfo = new KernelInfo();
|
||||
pParentKernelInfo->kernelDescriptor.kernelMetadata.kernelName = "another_parent_kernel";
|
||||
program.getKernelInfoArray(rootDeviceIndex).push_back(pParentKernelInfo);
|
||||
program.getParentKernelInfoArray(rootDeviceIndex).push_back(pParentKernelInfo);
|
||||
|
||||
auto pChildKernelInfo = new KernelInfo();
|
||||
pChildKernelInfo->kernelDescriptor.kernelMetadata.kernelName = "childlike_kernel_dispatch_0";
|
||||
program.getKernelInfoArray(rootDeviceIndex).push_back(pChildKernelInfo);
|
||||
|
||||
EXPECT_EQ(2u, program.getKernelInfoArray(rootDeviceIndex).size());
|
||||
EXPECT_EQ(1u, program.getParentKernelInfoArray(rootDeviceIndex).size());
|
||||
|
||||
program.separateBlockKernels(rootDeviceIndex);
|
||||
|
||||
EXPECT_EQ(2u, program.getKernelInfoArray(rootDeviceIndex).size());
|
||||
EXPECT_EQ(0, strcmp("another_parent_kernel", program.getKernelInfoArray(rootDeviceIndex).at(0)->kernelDescriptor.kernelMetadata.kernelName.c_str()));
|
||||
EXPECT_EQ(0, strcmp("childlike_kernel_dispatch_0", program.getKernelInfoArray(rootDeviceIndex).at(1)->kernelDescriptor.kernelMetadata.kernelName.c_str()));
|
||||
|
||||
EXPECT_EQ(0u, program.getBlockKernelManager()->getCount());
|
||||
}
|
||||
|
||||
TEST_F(ProgramTests, givenSeparateBlockKernelsWhenChildLikeKernelWithoutSubgroupKernelThenSeparateNoneKernel) {
|
||||
MockProgram program(pContext, false, toClDeviceVector(*pClDevice));
|
||||
|
||||
auto pSubgroupKernelInfo = new KernelInfo();
|
||||
pSubgroupKernelInfo->kernelDescriptor.kernelMetadata.kernelName = "another_subgroup_kernel";
|
||||
program.getKernelInfoArray(rootDeviceIndex).push_back(pSubgroupKernelInfo);
|
||||
program.getSubgroupKernelInfoArray(rootDeviceIndex).push_back(pSubgroupKernelInfo);
|
||||
|
||||
auto pChildKernelInfo = new KernelInfo();
|
||||
pChildKernelInfo->kernelDescriptor.kernelMetadata.kernelName = "childlike_kernel_dispatch_0";
|
||||
program.getKernelInfoArray(rootDeviceIndex).push_back(pChildKernelInfo);
|
||||
|
||||
EXPECT_EQ(2u, program.getKernelInfoArray(rootDeviceIndex).size());
|
||||
EXPECT_EQ(1u, program.getSubgroupKernelInfoArray(rootDeviceIndex).size());
|
||||
|
||||
program.separateBlockKernels(rootDeviceIndex);
|
||||
|
||||
EXPECT_EQ(2u, program.getKernelInfoArray(rootDeviceIndex).size());
|
||||
EXPECT_EQ(0, strcmp("another_subgroup_kernel", program.getKernelInfoArray(rootDeviceIndex).at(0)->kernelDescriptor.kernelMetadata.kernelName.c_str()));
|
||||
EXPECT_EQ(0, strcmp("childlike_kernel_dispatch_0", program.getKernelInfoArray(rootDeviceIndex).at(1)->kernelDescriptor.kernelMetadata.kernelName.c_str()));
|
||||
|
||||
EXPECT_EQ(0u, program.getBlockKernelManager()->getCount());
|
||||
}
|
||||
|
||||
TEST_F(ProgramTests, givenSeparateBlockKernelsWhenParentKernelWithChildKernelThenSeparateChildKernel) {
|
||||
MockProgram program(pContext, false, toClDeviceVector(*pClDevice));
|
||||
|
||||
auto pParentKernelInfo = new KernelInfo();
|
||||
pParentKernelInfo->kernelDescriptor.kernelMetadata.kernelName = "parent_kernel";
|
||||
program.getKernelInfoArray(rootDeviceIndex).push_back(pParentKernelInfo);
|
||||
program.getParentKernelInfoArray(rootDeviceIndex).push_back(pParentKernelInfo);
|
||||
|
||||
auto pChildKernelInfo = new KernelInfo();
|
||||
pChildKernelInfo->kernelDescriptor.kernelMetadata.kernelName = "parent_kernel_dispatch_0";
|
||||
program.getKernelInfoArray(rootDeviceIndex).push_back(pChildKernelInfo);
|
||||
|
||||
EXPECT_EQ(2u, program.getKernelInfoArray(rootDeviceIndex).size());
|
||||
EXPECT_EQ(1u, program.getParentKernelInfoArray(rootDeviceIndex).size());
|
||||
|
||||
program.separateBlockKernels(rootDeviceIndex);
|
||||
|
||||
EXPECT_EQ(1u, program.getKernelInfoArray(rootDeviceIndex).size());
|
||||
EXPECT_EQ(0, strcmp("parent_kernel", program.getKernelInfoArray(rootDeviceIndex).at(0)->kernelDescriptor.kernelMetadata.kernelName.c_str()));
|
||||
|
||||
EXPECT_EQ(1u, program.getBlockKernelManager()->getCount());
|
||||
EXPECT_EQ(0, strcmp("parent_kernel_dispatch_0", program.getBlockKernelManager()->getBlockKernelInfo(0)->kernelDescriptor.kernelMetadata.kernelName.c_str()));
|
||||
}
|
||||
|
||||
TEST_F(ProgramTests, givenSeparateBlockKernelsWhenSubgroupKernelWithChildKernelThenSeparateChildKernel) {
|
||||
MockProgram program(pContext, false, toClDeviceVector(*pClDevice));
|
||||
|
||||
auto pSubgroupKernelInfo = new KernelInfo();
|
||||
pSubgroupKernelInfo->kernelDescriptor.kernelMetadata.kernelName = "subgroup_kernel";
|
||||
program.getKernelInfoArray(rootDeviceIndex).push_back(pSubgroupKernelInfo);
|
||||
program.getSubgroupKernelInfoArray(rootDeviceIndex).push_back(pSubgroupKernelInfo);
|
||||
|
||||
auto pChildKernelInfo = new KernelInfo();
|
||||
pChildKernelInfo->kernelDescriptor.kernelMetadata.kernelName = "subgroup_kernel_dispatch_0";
|
||||
program.getKernelInfoArray(rootDeviceIndex).push_back(pChildKernelInfo);
|
||||
|
||||
EXPECT_EQ(2u, program.getKernelInfoArray(rootDeviceIndex).size());
|
||||
EXPECT_EQ(1u, program.getSubgroupKernelInfoArray(rootDeviceIndex).size());
|
||||
|
||||
program.separateBlockKernels(rootDeviceIndex);
|
||||
|
||||
EXPECT_EQ(1u, program.getKernelInfoArray(rootDeviceIndex).size());
|
||||
EXPECT_EQ(0, strcmp("subgroup_kernel", program.getKernelInfoArray(rootDeviceIndex).at(0)->kernelDescriptor.kernelMetadata.kernelName.c_str()));
|
||||
|
||||
EXPECT_EQ(1u, program.getBlockKernelManager()->getCount());
|
||||
EXPECT_EQ(0, strcmp("subgroup_kernel_dispatch_0", program.getBlockKernelManager()->getBlockKernelInfo(0)->kernelDescriptor.kernelMetadata.kernelName.c_str()));
|
||||
}
|
||||
|
||||
TEST(ProgramDestructionTests, givenProgramUsingDeviceWhenItIsDestroyedAfterPlatfromCleanupThenItIsCleanedUpProperly) {
|
||||
initPlatform();
|
||||
auto device = platform()->getClDevice(0);
|
||||
@ -3124,19 +2914,6 @@ TEST_F(ProgramBinTest, GivenDebugDataAvailableWhenLinkingProgramThenDebugDataIsS
|
||||
|
||||
using ProgramMultiRootDeviceTests = MultiRootDeviceFixture;
|
||||
|
||||
TEST_F(ProgramMultiRootDeviceTests, WhenPrivateSurfaceIsCreatedThenItHasCorrectRootDeviceIndex) {
|
||||
auto program = std::make_unique<MockProgram>(context.get(), false, toClDeviceVector(*device1));
|
||||
auto infoBlock = std::make_unique<MockKernelInfo>();
|
||||
infoBlock->setPrivateMemory(1000, false, 8, 0, 0);
|
||||
|
||||
program->blockKernelManager->addBlockKernelInfo(infoBlock.release());
|
||||
program->allocateBlockPrivateSurfaces(*device1);
|
||||
|
||||
auto privateSurface = program->getBlockKernelManager()->getPrivateSurface(0);
|
||||
EXPECT_NE(nullptr, privateSurface);
|
||||
EXPECT_EQ(expectedRootDeviceIndex, privateSurface->getRootDeviceIndex());
|
||||
}
|
||||
|
||||
TEST_F(ProgramMultiRootDeviceTests, WhenProgramIsCreatedThenBuildInfosVectorIsProperlyResized) {
|
||||
{
|
||||
ClDeviceVector deviceVector;
|
||||
|
@ -1,124 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/compiler_interface/compiler_interface.h"
|
||||
#include "shared/source/device/device.h"
|
||||
|
||||
#include "opencl/source/cl_device/cl_device.h"
|
||||
#include "opencl/source/program/block_kernel_manager.h"
|
||||
#include "opencl/test/unit_test/fixtures/context_fixture.h"
|
||||
#include "opencl/test/unit_test/fixtures/platform_fixture.h"
|
||||
#include "opencl/test/unit_test/fixtures/program_fixture.h"
|
||||
#include "opencl/test/unit_test/fixtures/run_kernel_fixture.h"
|
||||
#include "opencl/test/unit_test/mocks/mock_context.h"
|
||||
#include "opencl/test/unit_test/mocks/mock_program.h"
|
||||
#include "opencl/test/unit_test/test_macros/test_checks_ocl.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace NEO {
|
||||
|
||||
class ProgramWithBlockKernelsTest : public ContextFixture,
|
||||
public PlatformFixture,
|
||||
public ProgramFixture,
|
||||
public testing::Test {
|
||||
|
||||
using ContextFixture::SetUp;
|
||||
using PlatformFixture::SetUp;
|
||||
|
||||
protected:
|
||||
ProgramWithBlockKernelsTest() {
|
||||
}
|
||||
|
||||
void SetUp() override {
|
||||
PlatformFixture::SetUp();
|
||||
device = pPlatform->getClDevice(0);
|
||||
ContextFixture::SetUp(1, &device);
|
||||
ProgramFixture::SetUp();
|
||||
REQUIRE_OCL_21_OR_SKIP(pContext);
|
||||
}
|
||||
|
||||
void TearDown() override {
|
||||
ProgramFixture::TearDown();
|
||||
ContextFixture::TearDown();
|
||||
PlatformFixture::TearDown();
|
||||
}
|
||||
cl_device_id device;
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
};
|
||||
|
||||
TEST_F(ProgramWithBlockKernelsTest, GivenKernelWithBlockKernelsWhenProgramIsBuildingThenKernelInfosHaveCorrectNames) {
|
||||
CreateProgramFromBinary(pContext, pContext->getDevices(), "simple_block_kernel", "-cl-std=CL2.0");
|
||||
auto rootDeviceIndex = pContext->getDevice(0)->getRootDeviceIndex();
|
||||
auto mockProgram = pProgram;
|
||||
ASSERT_NE(nullptr, mockProgram);
|
||||
|
||||
retVal = mockProgram->build(
|
||||
pProgram->getDevices(),
|
||||
nullptr,
|
||||
false);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
auto kernelInfo = mockProgram->Program::getKernelInfo("simple_block_kernel", rootDeviceIndex);
|
||||
EXPECT_NE(nullptr, kernelInfo);
|
||||
|
||||
auto blockKernelInfo = mockProgram->Program::getKernelInfo("simple_block_kernel_dispatch_0", rootDeviceIndex);
|
||||
EXPECT_EQ(nullptr, blockKernelInfo);
|
||||
|
||||
std::vector<const KernelInfo *> blockKernelInfos(mockProgram->blockKernelManager->getCount());
|
||||
|
||||
for (size_t i = 0; i < mockProgram->blockKernelManager->getCount(); i++) {
|
||||
const KernelInfo *blockKernelInfo = mockProgram->blockKernelManager->getBlockKernelInfo(i);
|
||||
EXPECT_NE(nullptr, blockKernelInfo);
|
||||
blockKernelInfos[i] = blockKernelInfo;
|
||||
}
|
||||
|
||||
bool blockKernelFound = false;
|
||||
for (size_t i = 0; i < mockProgram->blockKernelManager->getCount(); i++) {
|
||||
if (blockKernelInfos[i]->kernelDescriptor.kernelMetadata.kernelName.find("simple_block_kernel_dispatch") != std::string::npos) {
|
||||
blockKernelFound = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
EXPECT_TRUE(blockKernelFound);
|
||||
}
|
||||
|
||||
TEST_F(ProgramWithBlockKernelsTest, GivenKernelWithBlockKernelsWhenProgramIsLinkedThenBlockKernelsAreSeparated) {
|
||||
CreateProgramFromBinary(pContext, pContext->getDevices(), "simple_block_kernel", "-cl-std=CL2.0");
|
||||
const char *buildOptions = "-cl-std=CL2.0";
|
||||
|
||||
overwriteBuiltInBinaryName("simple_block_kernel", true);
|
||||
|
||||
ASSERT_NE(nullptr, pProgram);
|
||||
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
Program *programLinked = new Program(pContext, false, pContext->getDevices());
|
||||
cl_program program = pProgram;
|
||||
|
||||
retVal = pProgram->compile(pProgram->getDevices(), buildOptions, 0, nullptr, nullptr);
|
||||
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
retVal = programLinked->link(pProgram->getDevices(), buildOptions, 1, &program);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
BlockKernelManager *blockManager = programLinked->getBlockKernelManager();
|
||||
|
||||
EXPECT_NE(0u, blockManager->getCount());
|
||||
|
||||
for (uint32_t i = 0; i < blockManager->getCount(); i++) {
|
||||
const KernelInfo *info = blockManager->getBlockKernelInfo(i);
|
||||
if (info->kernelDescriptor.kernelMetadata.kernelName.find("simple_block_kernel_dispatch") != std::string::npos) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
restoreBuiltInBinaryName();
|
||||
delete programLinked;
|
||||
}
|
||||
|
||||
} // namespace NEO
|
Reference in New Issue
Block a user