Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorXavier Hallade <xavier.hallade@intel.com>2022-07-01 11:36:00 +0300
committerXavier Hallade <xavier.hallade@intel.com>2022-07-01 12:20:00 +0300
commit41c10ac84ae420274dd79227dc698c8be14d13dd (patch)
tree4535ccc180b5b34c43af0017645448e29134cb35 /intern
parente7a21275c0f1bfb0e8bbeda384e5b46131e48b93 (diff)
Cycles: fix support for multiple Intel GPUs
Identical Intel GPUs ended up with the same id. Added PCI BDF to the id to make it unique.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/device/oneapi/device.cpp4
-rw-r--r--intern/cycles/kernel/device/oneapi/kernel.cpp3
2 files changed, 7 insertions, 0 deletions
diff --git a/intern/cycles/device/oneapi/device.cpp b/intern/cycles/device/oneapi/device.cpp
index f70425b32cf..8056c204188 100644
--- a/intern/cycles/device/oneapi/device.cpp
+++ b/intern/cycles/device/oneapi/device.cpp
@@ -89,6 +89,9 @@ bool device_oneapi_init()
if (getenv("SYCL_DEVICE_FILTER") == nullptr) {
_putenv_s("SYCL_DEVICE_FILTER", "host,level_zero");
}
+ if (getenv("SYCL_ENABLE_PCI") == nullptr) {
+ _putenv_s("SYCL_ENABLE_PCI", "1");
+ }
if (getenv("SYCL_PI_LEVEL_ZERO_USE_COPY_ENGINE_FOR_IN_ORDER_QUEUE") == nullptr) {
_putenv_s("SYCL_PI_LEVEL_ZERO_USE_COPY_ENGINE_FOR_IN_ORDER_QUEUE", "0");
}
@@ -96,6 +99,7 @@ bool device_oneapi_init()
setenv("SYCL_CACHE_PERSISTENT", "1", false);
setenv("SYCL_CACHE_THRESHOLD", "0", false);
setenv("SYCL_DEVICE_FILTER", "host,level_zero", false);
+ setenv("SYCL_ENABLE_PCI", "1", false);
setenv("SYCL_PI_LEVEL_ZERO_USE_COPY_ENGINE_FOR_IN_ORDER_QUEUE", "0", false);
# endif
diff --git a/intern/cycles/kernel/device/oneapi/kernel.cpp b/intern/cycles/kernel/device/oneapi/kernel.cpp
index 2b915027bda..11a551e822e 100644
--- a/intern/cycles/kernel/device/oneapi/kernel.cpp
+++ b/intern/cycles/kernel/device/oneapi/kernel.cpp
@@ -862,6 +862,9 @@ void oneapi_iterate_devices(OneAPIDeviceIteratorCallback cb, void *user_ptr)
device.get_platform().get_info<sycl::info::platform::name>();
std::string name = device.get_info<sycl::info::device::name>();
std::string id = "ONEAPI_" + platform_name + "_" + name;
+ if (device.has(sycl::aspect::ext_intel_pci_address)) {
+ id.append("_" + device.get_info<sycl::info::device::ext_intel_pci_address>());
+ }
(cb)(id.c_str(), name.c_str(), num, user_ptr);
num++;
}