fix: read ONEAPI_PVC_SEND_WAR_WA env

- disable optimization with compiler internal option when env is set to
zero

Related-To: NEO-15378, GSD-10884

Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
Mateusz Hoppe
2025-07-08 15:55:32 +00:00
committed by Compute-Runtime-Automation
parent fc37b98b69
commit 703497b067
18 changed files with 270 additions and 3 deletions

View File

@@ -9,6 +9,7 @@
#include "shared/source/built_ins/built_ins.h"
#include "shared/source/debug_settings/debug_settings_manager.h"
#include "shared/source/execution_environment/execution_environment.h"
#include "shared/source/helpers/compiler_product_helper.h"
#include "shared/source/os_interface/os_interface.h"
@@ -353,9 +354,11 @@ std::unique_ptr<BuiltinFunctionsLibImpl::BuiltinData> BuiltinFunctionsLibImpl::l
}
StackVec<BuiltInCodeType, 2> supportedTypes{};
if (!NEO::debugManager.flags.RebuildPrecompiledKernels.get()) {
bool requiresRebuild = !device->getNEODevice()->getExecutionEnvironment()->isOneApiPvcWaEnv();
if (!requiresRebuild && !NEO::debugManager.flags.RebuildPrecompiledKernels.get()) {
supportedTypes.push_back(BuiltInCodeType::binary);
}
supportedTypes.push_back(BuiltInCodeType::intermediate);
NEO::BuiltinCode builtinCode{};

View File

@@ -53,6 +53,8 @@ void DriverImp::initialize(ze_result_t *result) {
envVariables.fp64Emulation =
envReader.getSetting("NEO_FP64_EMULATION", false);
bool oneApiPvcWa = envReader.getSetting("ONEAPI_PVC_SEND_WAR_WA", true);
auto executionEnvironment = new NEO::ExecutionEnvironment();
UNRECOVERABLE_IF(nullptr == executionEnvironment);
@@ -69,6 +71,7 @@ void DriverImp::initialize(ze_result_t *result) {
}
executionEnvironment->setMetricsEnabled(envVariables.metrics);
executionEnvironment->setOneApiPvcWaEnv(oneApiPvcWa);
executionEnvironment->incRefInternal();
auto neoDevices = NEO::DeviceFactory::createDevices(*executionEnvironment);

View File

@@ -327,6 +327,8 @@ ze_result_t ModuleTranslationUnit::createFromNativeBinary(const char *input, siz
bool rebuild = NEO::debugManager.flags.RebuildPrecompiledKernels.get() && irBinarySize != 0;
rebuild |= NEO::isRebuiltToPatchtokensRequired(device->getNEODevice(), archive, this->options, this->isBuiltIn, false);
rebuild |= !device->getNEODevice()->getExecutionEnvironment()->isOneApiPvcWaEnv();
if (rebuild && irBinarySize == 0) {
driverHandle->clearErrorDescription();
return ZE_RESULT_ERROR_INVALID_NATIVE_BINARY;
@@ -927,6 +929,9 @@ void ModuleImp::createBuildOptions(const char *pBuildFlags, std::string &apiOpti
this->isFunctionSymbolExportEnabled = moveBuildOption(apiOptions, apiOptions, BuildOptions::enableLibraryCompile, BuildOptions::enableLibraryCompile);
this->isGlobalSymbolExportEnabled = moveBuildOption(apiOptions, apiOptions, BuildOptions::enableGlobalVariableSymbols, BuildOptions::enableGlobalVariableSymbols);
if (getDevice()->getNEODevice()->getExecutionEnvironment()->isOneApiPvcWaEnv() == false) {
NEO::CompilerOptions::concatenateAppend(internalBuildOptions, NEO::CompilerOptions::optDisableSendWarWa);
}
createBuildExtraOptions(apiOptions, internalBuildOptions);
}
if (NEO::ApiSpecificConfig::getBindlessMode(*device->getNEODevice())) {