[Bf-blender-cvs] [f07b09da273] master: Cycles: Improve oneAPI backend support for non-Intel platforms
Nikita Sirgienko
noreply at git.blender.org
Fri Nov 25 17:47:16 CET 2022
Commit: f07b09da2739d6a21ed816eba7c2f5e34cd16a14
Author: Nikita Sirgienko
Date: Fri Nov 25 15:43:40 2022 +0100
Branches: master
https://developer.blender.org/rBf07b09da2739d6a21ed816eba7c2f5e34cd16a14
Cycles: Improve oneAPI backend support for non-Intel platforms
===================================================================
M build_files/cmake/platform/platform_unix.cmake
M build_files/cmake/platform/platform_win32.cmake
M intern/cycles/device/oneapi/device.cpp
===================================================================
diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake
index 10be375ee0f..3a75fda35a4 100644
--- a/build_files/cmake/platform/platform_unix.cmake
+++ b/build_files/cmake/platform/platform_unix.cmake
@@ -326,9 +326,10 @@ if(WITH_CYCLES AND WITH_CYCLES_DEVICE_ONEAPI)
file(GLOB _sycl_runtime_libraries
${SYCL_ROOT_DIR}/lib/libsycl.so
${SYCL_ROOT_DIR}/lib/libsycl.so.*
- ${SYCL_ROOT_DIR}/lib/libpi_level_zero.so
+ ${SYCL_ROOT_DIR}/lib/libpi_*.so
)
list(FILTER _sycl_runtime_libraries EXCLUDE REGEX ".*\.py")
+ list(REMOVE_ITEM _sycl_runtime_libraries "${SYCL_ROOT_DIR}/lib/libpi_opencl.so")
list(APPEND PLATFORM_BUNDLED_LIBRARIES ${_sycl_runtime_libraries})
unset(_sycl_runtime_libraries)
endif()
diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake
index 2ec11d708a6..9bad8045946 100644
--- a/build_files/cmake/platform/platform_win32.cmake
+++ b/build_files/cmake/platform/platform_win32.cmake
@@ -972,7 +972,13 @@ if(WITH_CYCLES AND WITH_CYCLES_DEVICE_ONEAPI)
endforeach()
unset(_sycl_runtime_libraries_glob)
- list(APPEND _sycl_runtime_libraries ${SYCL_ROOT_DIR}/bin/pi_level_zero.dll)
+ file(GLOB _sycl_pi_runtime_libraries_glob
+ ${SYCL_ROOT_DIR}/bin/pi_*.dll
+ )
+ list(REMOVE_ITEM _sycl_pi_runtime_libraries_glob "${SYCL_ROOT_DIR}/bin/pi_opencl.dll")
+ list (APPEND _sycl_runtime_libraries ${_sycl_pi_runtime_libraries_glob})
+ unset(_sycl_pi_runtime_libraries_glob)
+
list(APPEND PLATFORM_BUNDLED_LIBRARIES ${_sycl_runtime_libraries})
unset(_sycl_runtime_libraries)
endif()
diff --git a/intern/cycles/device/oneapi/device.cpp b/intern/cycles/device/oneapi/device.cpp
index 66d6f749e30..abd2a63f0ad 100644
--- a/intern/cycles/device/oneapi/device.cpp
+++ b/intern/cycles/device/oneapi/device.cpp
@@ -31,6 +31,8 @@ bool device_oneapi_init()
* improves stability as of intel/LLVM SYCL-nightly/20220529.
* All these env variable can be set beforehand by end-users and
* will in that case -not- be overwritten. */
+ /* By default, enable only Level-Zero and if all devices are allowed, also CUDA and HIP.
+ * OpenCL backend isn't currently well supported. */
# ifdef _WIN32
if (getenv("SYCL_CACHE_PERSISTENT") == nullptr) {
_putenv_s("SYCL_CACHE_PERSISTENT", "1");
@@ -39,7 +41,12 @@ bool device_oneapi_init()
_putenv_s("SYCL_CACHE_THRESHOLD", "0");
}
if (getenv("SYCL_DEVICE_FILTER") == nullptr) {
- _putenv_s("SYCL_DEVICE_FILTER", "level_zero");
+ if (getenv("CYCLES_ONEAPI_ALL_DEVICES") == nullptr) {
+ _putenv_s("SYCL_DEVICE_FILTER", "level_zero");
+ }
+ else {
+ _putenv_s("SYCL_DEVICE_FILTER", "level_zero,cuda,hip");
+ }
}
if (getenv("SYCL_ENABLE_PCI") == nullptr) {
_putenv_s("SYCL_ENABLE_PCI", "1");
@@ -50,7 +57,12 @@ bool device_oneapi_init()
# elif __linux__
setenv("SYCL_CACHE_PERSISTENT", "1", false);
setenv("SYCL_CACHE_THRESHOLD", "0", false);
- setenv("SYCL_DEVICE_FILTER", "level_zero", false);
+ if (getenv("CYCLES_ONEAPI_ALL_DEVICES") == nullptr) {
+ setenv("SYCL_DEVICE_FILTER", "level_zero", false);
+ }
+ else {
+ setenv("SYCL_DEVICE_FILTER", "level_zero,cuda,hip", false);
+ }
setenv("SYCL_ENABLE_PCI", "1", false);
setenv("SYCL_PI_LEVEL_ZERO_USE_COPY_ENGINE_FOR_IN_ORDER_QUEUE", "0", false);
# endif
More information about the Bf-blender-cvs
mailing list