Skip to content

Commit 0541ae0

Browse files
committed
[SYCL] Do not preload L0 v2 adapter if it's not requested
The adapter sets certain env variables during adapter init. Preloding it will set those variables and result in unexpected behavior for the legacy adater.
1 parent 0285dff commit 0541ae0

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

sycl/ur_win_proxy_loader/ur_win_proxy_loader.cpp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,27 @@ void *&getDllHandle() {
107107
return dllHandle;
108108
}
109109

110+
static bool shouldLoadL0V2adapter() {
111+
auto SyclEnv = std::getenv("SYCL_UR_USE_LEVEL_ZERO_V2");
112+
auto UREnv = std::getenv("UR_LOADER_USE_LEVEL_ZERO_V2");
113+
114+
try {
115+
if (SyclEnv && std::stoi(SyclEnv) == 1) {
116+
return true;
117+
}
118+
} catch (...) {
119+
}
120+
121+
try {
122+
if (UREnv && std::stoi(UREnv) == 1) {
123+
return true;
124+
}
125+
} catch (...) {
126+
}
127+
128+
return false;
129+
}
130+
110131
/// Load the adapter libraries
111132
void preloadLibraries() {
112133
// Suppress system errors.
@@ -142,7 +163,8 @@ void preloadLibraries() {
142163
getDllHandle() = loadAdapter(UR_LIBRARY_NAME(loader));
143164
loadAdapter(UR_LIBRARY_NAME(adapter_opencl));
144165
loadAdapter(UR_LIBRARY_NAME(adapter_level_zero));
145-
loadAdapter(UR_LIBRARY_NAME(adapter_level_zero_v2));
166+
if (shouldLoadL0V2adapter())
167+
loadAdapter(UR_LIBRARY_NAME(adapter_level_zero_v2));
146168
loadAdapter(UR_LIBRARY_NAME(adapter_cuda));
147169
loadAdapter(UR_LIBRARY_NAME(adapter_hip));
148170
loadAdapter(UR_LIBRARY_NAME(adapter_native_cpu));

0 commit comments

Comments
 (0)