mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
Debug flag to control auto grf mode
Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
596c9026f0
commit
5266a95c03
@@ -52,6 +52,7 @@ NEO::ConstStringRef hasBufferOffsetArg = "-ze-intel-has-buffer-offset-arg";
|
||||
NEO::ConstStringRef debugKernelEnable = "-ze-kernel-debug-enable";
|
||||
NEO::ConstStringRef profileFlags = "-zet-profile-flags";
|
||||
NEO::ConstStringRef optLargeRegisterFile = "-ze-opt-large-register-file";
|
||||
NEO::ConstStringRef optAutoGrf = "-ze-intel-enable-auto-large-GRF-mode";
|
||||
} // namespace BuildOptions
|
||||
|
||||
ModuleTranslationUnit::ModuleTranslationUnit(L0::Device *device)
|
||||
@@ -691,12 +692,15 @@ void ModuleImp::createBuildOptions(const char *pBuildFlags, std::string &apiOpti
|
||||
std::string buildFlags(pBuildFlags);
|
||||
|
||||
apiOptions = pBuildFlags;
|
||||
NEO::CompilerOptions::applyAdditionalApiOptions(apiOptions);
|
||||
|
||||
moveBuildOption(apiOptions, apiOptions, NEO::CompilerOptions::optDisable, BuildOptions::optDisable);
|
||||
moveBuildOption(internalBuildOptions, apiOptions, NEO::CompilerOptions::greaterThan4gbBuffersRequired, BuildOptions::greaterThan4GbRequired);
|
||||
moveBuildOption(internalBuildOptions, apiOptions, NEO::CompilerOptions::allowZebin, NEO::CompilerOptions::allowZebin);
|
||||
moveBuildOption(internalBuildOptions, apiOptions, NEO::CompilerOptions::largeGrf, BuildOptions::optLargeRegisterFile);
|
||||
moveBuildOption(internalBuildOptions, apiOptions, NEO::CompilerOptions::autoGrf, BuildOptions::optAutoGrf);
|
||||
|
||||
NEO::CompilerOptions::applyAdditionalOptions(internalBuildOptions);
|
||||
NEO::CompilerOptions::applyAdditionalInternalOptions(internalBuildOptions);
|
||||
|
||||
moveOptLevelOption(apiOptions, apiOptions);
|
||||
moveProfileFlagsOption(apiOptions, apiOptions);
|
||||
|
||||
@@ -34,6 +34,7 @@ extern NEO::ConstStringRef hasBufferOffsetArg;
|
||||
extern NEO::ConstStringRef debugKernelEnable;
|
||||
extern NEO::ConstStringRef profileFlags;
|
||||
extern NEO::ConstStringRef optLargeRegisterFile;
|
||||
extern NEO::ConstStringRef optAutoGrf;
|
||||
|
||||
} // namespace BuildOptions
|
||||
|
||||
|
||||
@@ -60,6 +60,17 @@ TEST_F(ModuleTests, WhenCreatingBuildOptionsThenOptionsParsedCorrectly) {
|
||||
delete module;
|
||||
}
|
||||
|
||||
TEST_F(ModuleTests, whenCreatingAutoGrfBuildOptionsThenOptionsParsedCorrectly) {
|
||||
ModuleImp module(device, nullptr, ModuleType::User);
|
||||
|
||||
std::string buildOptions;
|
||||
std::string internalBuildOptions;
|
||||
|
||||
module.createBuildOptions(BuildOptions::optAutoGrf.data(), buildOptions, internalBuildOptions);
|
||||
|
||||
EXPECT_TRUE(NEO::CompilerOptions::contains(internalBuildOptions, NEO::CompilerOptions::autoGrf));
|
||||
}
|
||||
|
||||
TEST(ModuleBuildLog, WhenCreatingModuleBuildLogThenNonNullPointerReturned) {
|
||||
auto moduleBuildLog = ModuleBuildLog::create();
|
||||
ASSERT_NE(nullptr, moduleBuildLog);
|
||||
@@ -299,6 +310,35 @@ TEST_F(ModuleTests, givenLargeGrfFlagSetWhenCreatingModuleThenOverrideInternalFl
|
||||
EXPECT_EQ(pMockCompilerInterface->inputInternalOptions.find("-cl-intel-128-GRF-per-thread"), std::string::npos);
|
||||
}
|
||||
|
||||
TEST_F(ModuleTests, givenAutoGrfFlagSetWhenCreatingModuleThenOverrideInternalFlags) {
|
||||
DebugManagerStateRestore restorer;
|
||||
DebugManager.flags.ForceAutoGrfCompilationMode.set(1);
|
||||
|
||||
auto pMockCompilerInterface = new MockCompilerInterface;
|
||||
auto &rootDeviceEnvironment = this->neoDevice->executionEnvironment->rootDeviceEnvironments[this->neoDevice->getRootDeviceIndex()];
|
||||
rootDeviceEnvironment->compilerInterface.reset(pMockCompilerInterface);
|
||||
|
||||
auto zebinData = std::make_unique<ZebinTestData::ZebinWithL0TestCommonModule>(device->getHwInfo());
|
||||
const auto &src = zebinData->storage;
|
||||
|
||||
ze_module_desc_t moduleDesc = {};
|
||||
moduleDesc.format = ZE_MODULE_FORMAT_IL_SPIRV;
|
||||
moduleDesc.pInputModule = src.data();
|
||||
moduleDesc.inputSize = src.size();
|
||||
|
||||
auto mockTranslationUnit = new MockModuleTranslationUnit(device);
|
||||
Module module(device, nullptr, ModuleType::User);
|
||||
|
||||
module.translationUnit.reset(mockTranslationUnit);
|
||||
|
||||
ze_result_t result = ZE_RESULT_ERROR_MODULE_BUILD_FAILURE;
|
||||
result = module.initialize(&moduleDesc, neoDevice);
|
||||
EXPECT_EQ(result, ZE_RESULT_SUCCESS);
|
||||
|
||||
EXPECT_NE(pMockCompilerInterface->receivedApiOptions.find("-cl-intel-enable-auto-large-GRF-mode"), std::string::npos);
|
||||
EXPECT_EQ(pMockCompilerInterface->receivedApiOptions.find("-cl-intel-256-GRF-per-thread"), std::string::npos);
|
||||
}
|
||||
|
||||
TEST_F(ModuleTests, givenDefaultGrfFlagSetWhenCreatingModuleThenOverrideInternalFlags) {
|
||||
DebugManagerStateRestore restorer;
|
||||
DebugManager.flags.ForceDefaultGrfCompilationMode.set(true);
|
||||
|
||||
Reference in New Issue
Block a user