Debug flag to control auto grf mode

Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
Dunajski, Bartosz
2022-11-10 13:30:18 +00:00
committed by Compute-Runtime-Automation
parent 596c9026f0
commit 5266a95c03
10 changed files with 92 additions and 11 deletions

View File

@@ -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);

View File

@@ -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

View File

@@ -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);