mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-19 16:24:18 +08:00
feature: additional checkers to enable feature
Resolves: NEO-13973 Signed-off-by: Damian Tomczak <damian.tomczak@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
bd721b225e
commit
c95a67b420
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2020-2024 Intel Corporation
|
* Copyright (C) 2020-2025 Intel Corporation
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
*
|
*
|
||||||
@@ -10,6 +10,7 @@
|
|||||||
#include "shared/source/device/device.h"
|
#include "shared/source/device/device.h"
|
||||||
#include "shared/source/execution_environment/root_device_environment.h"
|
#include "shared/source/execution_environment/root_device_environment.h"
|
||||||
#include "shared/source/helpers/api_specific_config.h"
|
#include "shared/source/helpers/api_specific_config.h"
|
||||||
|
#include "shared/source/helpers/compiler_product_helper.h"
|
||||||
#include "shared/source/release_helper/release_helper.h"
|
#include "shared/source/release_helper/release_helper.h"
|
||||||
|
|
||||||
#include "level_zero/core/source/compiler_interface/l0_reg_path.h"
|
#include "level_zero/core/source/compiler_interface/l0_reg_path.h"
|
||||||
@@ -33,6 +34,10 @@ bool ApiSpecificConfig::getGlobalBindlessHeapConfiguration(const ReleaseHelper *
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool ApiSpecificConfig::getBindlessMode(const Device &device) {
|
bool ApiSpecificConfig::getBindlessMode(const Device &device) {
|
||||||
|
if (device.getCompilerProductHelper().isForceBindlessRequired()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (debugManager.flags.UseBindlessMode.get() != -1) {
|
if (debugManager.flags.UseBindlessMode.get() != -1) {
|
||||||
return debugManager.flags.UseBindlessMode.get();
|
return debugManager.flags.UseBindlessMode.get();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2021-2024 Intel Corporation
|
* Copyright (C) 2021-2025 Intel Corporation
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
*
|
*
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
#include "shared/source/command_container/implicit_scaling.h"
|
#include "shared/source/command_container/implicit_scaling.h"
|
||||||
#include "shared/source/helpers/api_specific_config.h"
|
#include "shared/source/helpers/api_specific_config.h"
|
||||||
|
#include "shared/source/helpers/compiler_product_helper.h"
|
||||||
#include "shared/test/common/helpers/debug_manager_state_restore.h"
|
#include "shared/test/common/helpers/debug_manager_state_restore.h"
|
||||||
#include "shared/test/common/mocks/mock_ail_configuration.h"
|
#include "shared/test/common/mocks/mock_ail_configuration.h"
|
||||||
#include "shared/test/common/mocks/mock_device.h"
|
#include "shared/test/common/mocks/mock_device.h"
|
||||||
@@ -109,7 +110,7 @@ TEST(ApiSpecificConfigL0Tests, WhenCheckingIfBindlessAddressingIsEnabledThenRetu
|
|||||||
EXPECT_TRUE(ApiSpecificConfig::getBindlessMode(mockDevice));
|
EXPECT_TRUE(ApiSpecificConfig::getBindlessMode(mockDevice));
|
||||||
|
|
||||||
mockAilConfigurationHelper.setDisableBindlessAddressing(true);
|
mockAilConfigurationHelper.setDisableBindlessAddressing(true);
|
||||||
EXPECT_FALSE(ApiSpecificConfig::getBindlessMode(mockDevice));
|
EXPECT_EQ(mockDevice.getCompilerProductHelper().isHeaplessModeEnabled(), ApiSpecificConfig::getBindlessMode(mockDevice));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace NEO
|
} // namespace NEO
|
||||||
|
|||||||
@@ -3887,7 +3887,7 @@ TEST_F(ModuleTest, givenInternalOptionsWhenBindlessDisabledThenBindlesOptionsNot
|
|||||||
|
|
||||||
module->createBuildOptions("", buildOptions, internalBuildOptions);
|
module->createBuildOptions("", buildOptions, internalBuildOptions);
|
||||||
|
|
||||||
EXPECT_FALSE(NEO::CompilerOptions::contains(internalBuildOptions, NEO::CompilerOptions::bindlessMode));
|
EXPECT_EQ(device->getCompilerProductHelper().isHeaplessModeEnabled(), NEO::CompilerOptions::contains(internalBuildOptions, NEO::CompilerOptions::bindlessMode));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ModuleTest, givenSrcOptLevelInSrcNamesWhenMovingBuildOptionsThenOptionIsRemovedFromSrcNamesAndTranslatedOptionsStoredInDstNames) {
|
TEST_F(ModuleTest, givenSrcOptLevelInSrcNamesWhenMovingBuildOptionsThenOptionIsRemovedFromSrcNamesAndTranslatedOptionsStoredInDstNames) {
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2020-2024 Intel Corporation
|
* Copyright (C) 2020-2025 Intel Corporation
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "shared/source/debug_settings/debug_settings_manager.h"
|
#include "shared/source/debug_settings/debug_settings_manager.h"
|
||||||
|
#include "shared/source/device/device.h"
|
||||||
#include "shared/source/helpers/api_specific_config.h"
|
#include "shared/source/helpers/api_specific_config.h"
|
||||||
|
#include "shared/source/helpers/compiler_product_helper.h"
|
||||||
|
#include "shared/source/release_helper/release_helper.h"
|
||||||
|
|
||||||
#include "opencl/source/os_interface/ocl_reg_path.h"
|
#include "opencl/source/os_interface/ocl_reg_path.h"
|
||||||
|
|
||||||
@@ -25,6 +28,10 @@ bool ApiSpecificConfig::getGlobalBindlessHeapConfiguration(const ReleaseHelper *
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool ApiSpecificConfig::getBindlessMode(const Device &device) {
|
bool ApiSpecificConfig::getBindlessMode(const Device &device) {
|
||||||
|
if (device.getCompilerProductHelper().isForceBindlessRequired()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (debugManager.flags.UseBindlessMode.get() != -1) {
|
if (debugManager.flags.UseBindlessMode.get() != -1) {
|
||||||
return debugManager.flags.UseBindlessMode.get();
|
return debugManager.flags.UseBindlessMode.get();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ std::string Program::getInternalOptions() const {
|
|||||||
CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::greaterThan4gbBuffersRequired);
|
CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::greaterThan4gbBuffersRequired);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debugManager.flags.UseBindlessMode.get() == 1) {
|
if (NEO::ApiSpecificConfig::getBindlessMode(pClDevice->getDevice())) {
|
||||||
CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::bindlessMode);
|
CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::bindlessMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1653,7 +1653,7 @@ TEST_F(BuiltInTests, WhenBuiltinsLibIsCreatedThenAllStoragesSizeIsTwo) {
|
|||||||
|
|
||||||
TEST_F(BuiltInTests, GivenTypeAnyWhenGettingBuiltinCodeThenCorrectBuiltinReturned) {
|
TEST_F(BuiltInTests, GivenTypeAnyWhenGettingBuiltinCodeThenCorrectBuiltinReturned) {
|
||||||
auto builtinsLib = std::unique_ptr<BuiltinsLib>(new BuiltinsLib());
|
auto builtinsLib = std::unique_ptr<BuiltinsLib>(new BuiltinsLib());
|
||||||
BuiltinCode code = builtinsLib->getBuiltinCode(EBuiltInOps::copyBufferToBuffer, BuiltinCode::ECodeType::any, *pDevice);
|
BuiltinCode code = builtinsLib->getBuiltinCode(EBuiltInOps::adjustBuiltinType<EBuiltInOps::copyBufferToBuffer>(false, pDevice->getCompilerProductHelper().isHeaplessModeEnabled()), BuiltinCode::ECodeType::any, *pDevice);
|
||||||
EXPECT_EQ(BuiltinCode::ECodeType::binary, code.type);
|
EXPECT_EQ(BuiltinCode::ECodeType::binary, code.type);
|
||||||
EXPECT_NE(0u, code.resource.size());
|
EXPECT_NE(0u, code.resource.size());
|
||||||
EXPECT_EQ(pDevice, code.targetDevice);
|
EXPECT_EQ(pDevice, code.targetDevice);
|
||||||
@@ -1661,7 +1661,7 @@ TEST_F(BuiltInTests, GivenTypeAnyWhenGettingBuiltinCodeThenCorrectBuiltinReturne
|
|||||||
|
|
||||||
TEST_F(BuiltInTests, GivenTypeBinaryWhenGettingBuiltinCodeThenCorrectBuiltinReturned) {
|
TEST_F(BuiltInTests, GivenTypeBinaryWhenGettingBuiltinCodeThenCorrectBuiltinReturned) {
|
||||||
auto builtinsLib = std::unique_ptr<BuiltinsLib>(new BuiltinsLib());
|
auto builtinsLib = std::unique_ptr<BuiltinsLib>(new BuiltinsLib());
|
||||||
BuiltinCode code = builtinsLib->getBuiltinCode(EBuiltInOps::copyBufferToBuffer, BuiltinCode::ECodeType::binary, *pDevice);
|
BuiltinCode code = builtinsLib->getBuiltinCode(EBuiltInOps::adjustBuiltinType<EBuiltInOps::copyBufferToBuffer>(false, pDevice->getCompilerProductHelper().isHeaplessModeEnabled()), BuiltinCode::ECodeType::binary, *pDevice);
|
||||||
EXPECT_EQ(BuiltinCode::ECodeType::binary, code.type);
|
EXPECT_EQ(BuiltinCode::ECodeType::binary, code.type);
|
||||||
EXPECT_NE(0u, code.resource.size());
|
EXPECT_NE(0u, code.resource.size());
|
||||||
EXPECT_EQ(pDevice, code.targetDevice);
|
EXPECT_EQ(pDevice, code.targetDevice);
|
||||||
@@ -1810,7 +1810,7 @@ TEST_F(BuiltInTests, GivenTypeIntermediateWhenCreatingProgramFromCodeThenNullPoi
|
|||||||
|
|
||||||
TEST_F(BuiltInTests, GivenTypeBinaryWhenCreatingProgramFromCodeThenValidPointerIsReturned) {
|
TEST_F(BuiltInTests, GivenTypeBinaryWhenCreatingProgramFromCodeThenValidPointerIsReturned) {
|
||||||
auto builtinsLib = std::unique_ptr<BuiltinsLib>(new BuiltinsLib());
|
auto builtinsLib = std::unique_ptr<BuiltinsLib>(new BuiltinsLib());
|
||||||
const BuiltinCode bc = builtinsLib->getBuiltinCode(EBuiltInOps::copyBufferToBuffer, BuiltinCode::ECodeType::binary, *pDevice);
|
const BuiltinCode bc = builtinsLib->getBuiltinCode(EBuiltInOps::adjustBuiltinType<EBuiltInOps::copyBufferToBuffer>(false, pDevice->getCompilerProductHelper().isHeaplessModeEnabled()), BuiltinCode::ECodeType::binary, *pDevice);
|
||||||
EXPECT_NE(0u, bc.resource.size());
|
EXPECT_NE(0u, bc.resource.size());
|
||||||
auto program = std::unique_ptr<Program>(BuiltinDispatchInfoBuilder::createProgramFromCode(bc, toClDeviceVector(*pClDevice)));
|
auto program = std::unique_ptr<Program>(BuiltinDispatchInfoBuilder::createProgramFromCode(bc, toClDeviceVector(*pClDevice)));
|
||||||
EXPECT_NE(nullptr, program.get());
|
EXPECT_NE(nullptr, program.get());
|
||||||
@@ -1898,7 +1898,7 @@ TEST_F(BuiltInTests, givenSipKernelWhenAllocationFailsThenItHasNullptrGraphicsAl
|
|||||||
TEST_F(BuiltInTests, givenDebugFlagForceUseSourceWhenArgIsBinaryThenReturnBuiltinCodeBinary) {
|
TEST_F(BuiltInTests, givenDebugFlagForceUseSourceWhenArgIsBinaryThenReturnBuiltinCodeBinary) {
|
||||||
debugManager.flags.RebuildPrecompiledKernels.set(true);
|
debugManager.flags.RebuildPrecompiledKernels.set(true);
|
||||||
auto builtinsLib = std::unique_ptr<BuiltinsLib>(new BuiltinsLib());
|
auto builtinsLib = std::unique_ptr<BuiltinsLib>(new BuiltinsLib());
|
||||||
BuiltinCode code = builtinsLib->getBuiltinCode(EBuiltInOps::copyBufferToBuffer, BuiltinCode::ECodeType::binary, *pDevice);
|
BuiltinCode code = builtinsLib->getBuiltinCode(EBuiltInOps::adjustBuiltinType<EBuiltInOps::copyBufferToBuffer>(false, pDevice->getCompilerProductHelper().isHeaplessModeEnabled()), BuiltinCode::ECodeType::binary, *pDevice);
|
||||||
EXPECT_EQ(BuiltinCode::ECodeType::binary, code.type);
|
EXPECT_EQ(BuiltinCode::ECodeType::binary, code.type);
|
||||||
EXPECT_NE(0u, code.resource.size());
|
EXPECT_NE(0u, code.resource.size());
|
||||||
EXPECT_EQ(pDevice, code.targetDevice);
|
EXPECT_EQ(pDevice, code.targetDevice);
|
||||||
|
|||||||
@@ -1680,20 +1680,17 @@ TEST_F(ProgramTests, WhenCreatingProgramThenBindlessIsEnabledOnlyIfDebugFlagIsEn
|
|||||||
using namespace testing;
|
using namespace testing;
|
||||||
DebugManagerStateRestore restorer;
|
DebugManagerStateRestore restorer;
|
||||||
|
|
||||||
{
|
if (!pDevice->getCompilerProductHelper().isHeaplessModeEnabled()) {
|
||||||
|
|
||||||
debugManager.flags.UseBindlessMode.set(0);
|
debugManager.flags.UseBindlessMode.set(0);
|
||||||
MockProgram programNoBindless(pContext, false, toClDeviceVector(*pClDevice));
|
MockProgram programNoBindless(pContext, false, toClDeviceVector(*pClDevice));
|
||||||
auto internalOptionsNoBindless = programNoBindless.getInternalOptions();
|
auto internalOptionsNoBindless = programNoBindless.getInternalOptions();
|
||||||
EXPECT_FALSE(CompilerOptions::contains(internalOptionsNoBindless, CompilerOptions::bindlessMode)) << internalOptionsNoBindless;
|
EXPECT_FALSE(CompilerOptions::contains(internalOptionsNoBindless, CompilerOptions::bindlessMode)) << internalOptionsNoBindless;
|
||||||
}
|
}
|
||||||
{
|
|
||||||
|
|
||||||
debugManager.flags.UseBindlessMode.set(1);
|
debugManager.flags.UseBindlessMode.set(1);
|
||||||
MockProgram programBindless(pContext, false, toClDeviceVector(*pClDevice));
|
MockProgram programBindless(pContext, false, toClDeviceVector(*pClDevice));
|
||||||
auto internalOptionsBindless = programBindless.getInternalOptions();
|
auto internalOptionsBindless = programBindless.getInternalOptions();
|
||||||
EXPECT_TRUE(CompilerOptions::contains(internalOptionsBindless, CompilerOptions::bindlessMode)) << internalOptionsBindless;
|
EXPECT_TRUE(CompilerOptions::contains(internalOptionsBindless, CompilerOptions::bindlessMode)) << internalOptionsBindless;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ProgramTests, GivenForce32BitAddressesWhenProgramIsCreatedThenGreaterThan4gbBuffersRequiredIsCorrectlySet) {
|
TEST_F(ProgramTests, GivenForce32BitAddressesWhenProgramIsCreatedThenGreaterThan4gbBuffersRequiredIsCorrectlySet) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2021-2024 Intel Corporation
|
* Copyright (C) 2021-2025 Intel Corporation
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
*
|
*
|
||||||
@@ -86,6 +86,7 @@ class CompilerProductHelper {
|
|||||||
virtual void getKernelFp64AtomicCapabilities(uint32_t &fp64Caps) const = 0;
|
virtual void getKernelFp64AtomicCapabilities(uint32_t &fp64Caps) const = 0;
|
||||||
virtual void getKernelCapabilitiesExtra(const ReleaseHelper *releaseHelper, uint32_t &extraCaps) const = 0;
|
virtual void getKernelCapabilitiesExtra(const ReleaseHelper *releaseHelper, uint32_t &extraCaps) const = 0;
|
||||||
virtual bool isBindlessAddressingDisabled(const ReleaseHelper *releaseHelper) const = 0;
|
virtual bool isBindlessAddressingDisabled(const ReleaseHelper *releaseHelper) const = 0;
|
||||||
|
virtual bool isForceBindlessRequired() const = 0;
|
||||||
virtual const char *getCustomIgcLibraryName() const = 0;
|
virtual const char *getCustomIgcLibraryName() const = 0;
|
||||||
virtual const char *getFinalizerLibraryName() const = 0;
|
virtual const char *getFinalizerLibraryName() const = 0;
|
||||||
|
|
||||||
@@ -139,6 +140,7 @@ class CompilerProductHelperHw : public CompilerProductHelper {
|
|||||||
void getKernelFp64AtomicCapabilities(uint32_t &fp64Caps) const override;
|
void getKernelFp64AtomicCapabilities(uint32_t &fp64Caps) const override;
|
||||||
void getKernelCapabilitiesExtra(const ReleaseHelper *releaseHelper, uint32_t &extraCaps) const override;
|
void getKernelCapabilitiesExtra(const ReleaseHelper *releaseHelper, uint32_t &extraCaps) const override;
|
||||||
bool isBindlessAddressingDisabled(const ReleaseHelper *releaseHelper) const override;
|
bool isBindlessAddressingDisabled(const ReleaseHelper *releaseHelper) const override;
|
||||||
|
bool isForceBindlessRequired() const override;
|
||||||
const char *getCustomIgcLibraryName() const override;
|
const char *getCustomIgcLibraryName() const override;
|
||||||
const char *getFinalizerLibraryName() const override;
|
const char *getFinalizerLibraryName() const override;
|
||||||
|
|
||||||
|
|||||||
@@ -306,6 +306,11 @@ bool CompilerProductHelperHw<gfxProduct>::isBindlessAddressingDisabled(const Rel
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <PRODUCT_FAMILY gfxProduct>
|
||||||
|
bool CompilerProductHelperHw<gfxProduct>::isForceBindlessRequired() const {
|
||||||
|
return this->isHeaplessModeEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
template <PRODUCT_FAMILY gfxProduct>
|
template <PRODUCT_FAMILY gfxProduct>
|
||||||
const char *CompilerProductHelperHw<gfxProduct>::getCustomIgcLibraryName() const {
|
const char *CompilerProductHelperHw<gfxProduct>::getCustomIgcLibraryName() const {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2024 Intel Corporation
|
* Copyright (C) 2024-2025 Intel Corporation
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
*
|
*
|
||||||
@@ -61,6 +61,7 @@ class MockCompilerProductHelper : public CompilerProductHelper {
|
|||||||
ADDMETHOD_CONST_NOBASE_VOIDRETURN(getKernelFp64AtomicCapabilities, (uint32_t & fp64Caps));
|
ADDMETHOD_CONST_NOBASE_VOIDRETURN(getKernelFp64AtomicCapabilities, (uint32_t & fp64Caps));
|
||||||
ADDMETHOD_CONST_NOBASE_VOIDRETURN(getKernelCapabilitiesExtra, (const ReleaseHelper *releaseHelper, uint32_t &extraCaps));
|
ADDMETHOD_CONST_NOBASE_VOIDRETURN(getKernelCapabilitiesExtra, (const ReleaseHelper *releaseHelper, uint32_t &extraCaps));
|
||||||
ADDMETHOD_CONST_NOBASE(isBindlessAddressingDisabled, bool, false, (const ReleaseHelper *releaseHelper));
|
ADDMETHOD_CONST_NOBASE(isBindlessAddressingDisabled, bool, false, (const ReleaseHelper *releaseHelper));
|
||||||
|
ADDMETHOD_CONST_NOBASE(isForceBindlessRequired, bool, false, ());
|
||||||
ADDMETHOD_CONST_NOBASE(getProductConfigFromHwInfo, uint32_t, 0, (const HardwareInfo &hwInfo));
|
ADDMETHOD_CONST_NOBASE(getProductConfigFromHwInfo, uint32_t, 0, (const HardwareInfo &hwInfo));
|
||||||
ADDMETHOD_CONST_NOBASE(getCustomIgcLibraryName, const char *, nullptr, ());
|
ADDMETHOD_CONST_NOBASE(getCustomIgcLibraryName, const char *, nullptr, ());
|
||||||
ADDMETHOD_CONST_NOBASE(getFinalizerLibraryName, const char *, nullptr, ());
|
ADDMETHOD_CONST_NOBASE(getFinalizerLibraryName, const char *, nullptr, ());
|
||||||
|
|||||||
Reference in New Issue
Block a user