[Bf-blender-cvs] [41c10ac84ae] master: Cycles: fix support for multiple Intel GPUs

Xavier Hallade noreply at git.blender.org
Fri Jul 1 11:20:48 CEST 2022


Commit: 41c10ac84ae420274dd79227dc698c8be14d13dd
Author: Xavier Hallade
Date:   Fri Jul 1 10:36:00 2022 +0200
Branches: master
https://developer.blender.org/rB41c10ac84ae420274dd79227dc698c8be14d13dd

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.

===================================================================

M	intern/cycles/device/oneapi/device.cpp
M	intern/cycles/kernel/device/oneapi/kernel.cpp

===================================================================

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++;
   }



More information about the Bf-blender-cvs mailing list