Skip to content

Commit

Permalink
JIT flags append instead of override
Browse files Browse the repository at this point in the history
  • Loading branch information
pvelesko committed Nov 5, 2024
1 parent b985dd2 commit 052358a
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 9 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ CHIP_DEVICE=<N> # If there are multiple devices
CHIP_DEVICE_TYPE=<gpu/cpu/accel/fpga> or empty # Selects which type of device to use. Defaults to empty.
CHIP_LOGLEVEL=<trace/debug/info/warn/err/crit> # Sets the log level. If compiled in RELEASE, only err/crit are available
CHIP_DUMP_SPIRV=<ON/OFF(default)> # Dumps the generated SPIR-V code to a file
CHIP_JIT_FLAGS_OVERRIDE=<flags> # String to override the default JIT flags. Defaults to -cl-kernel-arg-info -cl-std=CL3.0
CHIP_JIT_FLAGS=<flags> # Additional JIT flags
CHIP_L0_COLLECT_EVENTS_TIMEOUT=<N(30s default)> # Timeout in seconds for collecting Level Zero events
CHIP_L0_EVENT_TIMEOUT=<N(0 default) # Timeout in seconds for how long Level Zero should wait on an event before timing out
CHIP_SKIP_UNINIT=<ON/OFF(default)> # If enabled, skips the uninitialization of chipStar's backend objects at program termination
Expand Down
4 changes: 2 additions & 2 deletions src/CHIPDriver.hh
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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");
Expand Down
3 changes: 2 additions & 1 deletion src/backend/Level0/CHIPBackendLevel0.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2558,7 +2558,8 @@ void CHIPModuleLevel0::compile(chipstar::Device *ChipDev) {
std::vector<size_t> ILSizes(1, SPIRVBin.size());
std::vector<const uint8_t *> ILInputs(
1, reinterpret_cast<const uint8_t *>(SPIRVBin.data()));
std::vector<const char *> BuildFlags(1, ChipEnvVars.getJitFlags().c_str());
auto Flags = Backend->getDefaultJitFlags() + ChipEnvVars.getJitFlags();
std::vector<const char *> BuildFlags(1, Flags.c_str());

appendDeviceLibrarySources(ILSizes, ILInputs, BuildFlags,
LzDev->getFpAtomicProps());
Expand Down
3 changes: 2 additions & 1 deletion src/backend/OpenCL/CHIPBackendOpenCL.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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 =
Expand Down
8 changes: 4 additions & 4 deletions tests/runtime/TestEnvVars.hip
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand All @@ -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<unsigned long>(2000), envVars.getL0EventTimeout(), "CHIP_L0_EVENT_TIMEOUT");
assertEqual(true, envVars.getOCLDisableQueueProfiling(), "CHIP_OCL_DISABLE_QUEUE_PROFILING");
Expand All @@ -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");
Expand All @@ -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");
Expand Down

0 comments on commit 052358a

Please sign in to comment.