From 052358a7ad0a40c95527da6d73e49161c8de38f5 Mon Sep 17 00:00:00 2001 From: Paulius Velesko Date: Tue, 5 Nov 2024 08:32:55 +0200 Subject: [PATCH] JIT flags append instead of override --- README.md | 2 +- src/CHIPDriver.hh | 4 ++-- src/backend/Level0/CHIPBackendLevel0.cc | 3 ++- src/backend/OpenCL/CHIPBackendOpenCL.cc | 3 ++- tests/runtime/TestEnvVars.hip | 8 ++++---- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 7a407c9ab..6f3553156 100644 --- a/README.md +++ b/README.md @@ -215,7 +215,7 @@ CHIP_DEVICE= # If there are multiple devices CHIP_DEVICE_TYPE= or empty # Selects which type of device to use. Defaults to empty. CHIP_LOGLEVEL= # Sets the log level. If compiled in RELEASE, only err/crit are available CHIP_DUMP_SPIRV= # Dumps the generated SPIR-V code to a file -CHIP_JIT_FLAGS_OVERRIDE= # String to override the default JIT flags. Defaults to -cl-kernel-arg-info -cl-std=CL3.0 +CHIP_JIT_FLAGS= # Additional JIT flags CHIP_L0_COLLECT_EVENTS_TIMEOUT= # Timeout in seconds for collecting Level Zero events CHIP_L0_EVENT_TIMEOUT= # If enabled, skips the uninitialization of chipStar's backend objects at program termination diff --git a/src/CHIPDriver.hh b/src/CHIPDriver.hh index 84bc0353d..528bc56dd 100644 --- a/src/CHIPDriver.hh +++ b/src/CHIPDriver.hh @@ -287,7 +287,7 @@ private: LazyJit_ = readEnvVar("CHIP_LAZY_JIT", value) ? parseBoolean(value) : LazyJit_; JitFlags_ = - readEnvVar("CHIP_JIT_FLAGS_OVERRIDE", value, false) ? value : JitFlags_; + readEnvVar("CHIP_JIT_FLAGS", value, false) ? value : JitFlags_; L0CollectEventsTimeout_ = readEnvVar("CHIP_L0_COLLECT_EVENTS_TIMEOUT", value) ? parseInt(value) @@ -343,7 +343,7 @@ private: logInfo("CHIP_DEVICE={}", DeviceIdx_); logInfo("CHIP_BE={}", Backend_.str()); logInfo("CHIP_DUMP_SPIRV={}", DumpSpirv_ ? "on" : "off"); - logInfo("CHIP_JIT_FLAGS_OVERRIDE={}", JitFlags_); + logInfo("CHIP_JIT_FLAGS={}", JitFlags_); logInfo("CHIP_L0_COLLECT_EVENTS_TIMEOUT={}", L0CollectEventsTimeout_); logInfo("CHIP_L0_EVENT_TIMEOUT={}", L0EventTimeout_); logInfo("CHIP_SKIP_UNINIT={}", SkipUninit_ ? "on" : "off"); diff --git a/src/backend/Level0/CHIPBackendLevel0.cc b/src/backend/Level0/CHIPBackendLevel0.cc index b39994795..e81f6c263 100644 --- a/src/backend/Level0/CHIPBackendLevel0.cc +++ b/src/backend/Level0/CHIPBackendLevel0.cc @@ -2558,7 +2558,8 @@ void CHIPModuleLevel0::compile(chipstar::Device *ChipDev) { std::vector ILSizes(1, SPIRVBin.size()); std::vector ILInputs( 1, reinterpret_cast(SPIRVBin.data())); - std::vector BuildFlags(1, ChipEnvVars.getJitFlags().c_str()); + auto Flags = Backend->getDefaultJitFlags() + ChipEnvVars.getJitFlags(); + std::vector BuildFlags(1, Flags.c_str()); appendDeviceLibrarySources(ILSizes, ILInputs, BuildFlags, LzDev->getFpAtomicProps()); diff --git a/src/backend/OpenCL/CHIPBackendOpenCL.cc b/src/backend/OpenCL/CHIPBackendOpenCL.cc index aaa2cb969..a761725ed 100644 --- a/src/backend/OpenCL/CHIPBackendOpenCL.cc +++ b/src/backend/OpenCL/CHIPBackendOpenCL.cc @@ -863,7 +863,8 @@ static cl::Program compileIL(cl::Context Ctx, CHIPDeviceOpenCL &ChipDev, cl_device_id DevId = ChipDev.get()->get(); auto Start = std::chrono::high_resolution_clock::now(); - Err = clCompileProgram(Prog.get(), 1, &DevId, Options.c_str(), 0, nullptr, + auto Flags = Backend->getDefaultJitFlags() + Options; + Err = clCompileProgram(Prog.get(), 1, &DevId, Flags.c_str(), 0, nullptr, nullptr, nullptr, nullptr); auto End = std::chrono::high_resolution_clock::now(); auto Duration = diff --git a/tests/runtime/TestEnvVars.hip b/tests/runtime/TestEnvVars.hip index b5b91737d..fb52687a8 100644 --- a/tests/runtime/TestEnvVars.hip +++ b/tests/runtime/TestEnvVars.hip @@ -56,7 +56,7 @@ void testEnvironmentVariableParsing() { setEnvVar("CHIP_DUMP_SPIRV", "1"); setEnvVar("CHIP_SKIP_UNINIT", "on"); setEnvVar("CHIP_LAZY_JIT", "1"); - setEnvVar("CHIP_JIT_FLAGS_OVERRIDE", "-O2"); + setEnvVar("CHIP_JIT_FLAGS", "-O2"); setEnvVar("CHIP_L0_COLLECT_EVENTS_TIMEOUT", "1000"); setEnvVar("CHIP_L0_EVENT_TIMEOUT", "2000"); setEnvVar("CHIP_OCL_DISABLE_QUEUE_PROFILING", "1"); @@ -73,7 +73,7 @@ void testEnvironmentVariableParsing() { assertEqual(true, envVars.getDumpSpirv(), "CHIP_DUMP_SPIRV"); assertEqual(true, envVars.getSkipUninit(), "CHIP_SKIP_UNINIT"); assertEqual(true, envVars.getLazyJit(), "CHIP_LAZY_JIT"); - assertEqual(std::string("-O2"), envVars.getJitFlags(), "CHIP_JIT_FLAGS_OVERRIDE"); + assertEqual(std::string("-O2"), envVars.getJitFlags(), "CHIP_JIT_FLAGS"); assertEqual(1000, envVars.getL0CollectEventsTimeout(), "CHIP_L0_COLLECT_EVENTS_TIMEOUT"); assertEqual(static_cast(2000), envVars.getL0EventTimeout(), "CHIP_L0_EVENT_TIMEOUT"); assertEqual(true, envVars.getOCLDisableQueueProfiling(), "CHIP_OCL_DISABLE_QUEUE_PROFILING"); @@ -87,7 +87,7 @@ void testEnvironmentVariableParsing() { unsetEnvVar("CHIP_DUMP_SPIRV"); unsetEnvVar("CHIP_SKIP_UNINIT"); unsetEnvVar("CHIP_LAZY_JIT"); - unsetEnvVar("CHIP_JIT_FLAGS_OVERRIDE"); + unsetEnvVar("CHIP_JIT_FLAGS"); unsetEnvVar("CHIP_L0_COLLECT_EVENTS_TIMEOUT"); unsetEnvVar("CHIP_L0_EVENT_TIMEOUT"); unsetEnvVar("CHIP_OCL_DISABLE_QUEUE_PROFILING"); @@ -108,7 +108,7 @@ void testDefaultValues() { assertEqual(false, envVars.getDumpSpirv(), "Default CHIP_DUMP_SPIRV"); assertEqual(false, envVars.getSkipUninit(), "Default CHIP_SKIP_UNINIT"); assertEqual(true, envVars.getLazyJit(), "Default CHIP_LAZY_JIT"); - assertEqual(std::string(CHIP_DEFAULT_JIT_FLAGS), envVars.getJitFlags(), "Default CHIP_JIT_FLAGS_OVERRIDE"); + assertEqual(std::string(CHIP_DEFAULT_JIT_FLAGS), envVars.getJitFlags(), "Default CHIP_JIT_FLAGS"); assertEqual(0, envVars.getL0CollectEventsTimeout(), "Default CHIP_L0_COLLECT_EVENTS_TIMEOUT"); assertEqual(UINT64_MAX, envVars.getL0EventTimeout(), "Default CHIP_L0_EVENT_TIMEOUT"); assertEqual(false, envVars.getOCLDisableQueueProfiling(), "Default CHIP_OCL_DISABLE_QUEUE_PROFILING");