[Bf-blender-cvs] [5bfce9a822e] master: Cycles: oneAPI: preload kernels only when not using prebuilt binaries

Xavier Hallade noreply at git.blender.org
Wed Oct 19 16:42:32 CEST 2022


Commit: 5bfce9a822efef9a841614156255030821df564c
Author: Xavier Hallade
Date:   Wed Oct 19 12:46:23 2022 +0200
Branches: master
https://developer.blender.org/rB5bfce9a822efef9a841614156255030821df564c

Cycles: oneAPI: preload kernels only when not using prebuilt binaries

sycl::build triggers compilation even if prebuilt binaries are
available, we'll have to find a better way in this case.

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

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

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

diff --git a/intern/cycles/kernel/CMakeLists.txt b/intern/cycles/kernel/CMakeLists.txt
index dfd21c4e675..e5d1c3d6563 100644
--- a/intern/cycles/kernel/CMakeLists.txt
+++ b/intern/cycles/kernel/CMakeLists.txt
@@ -767,6 +767,8 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
   string(PREPEND CYCLES_ONEAPI_SYCL_OPTIONS_spir64_gen "-device ${CYCLES_ONEAPI_SPIR64_GEN_DEVICES} ")
 
   if (WITH_CYCLES_ONEAPI_BINARIES)
+    # AoT binaries aren't currently reused when calling sycl::build.
+    list (APPEND sycl_compiler_flags -DSYCL_SKIP_KERNELS_PRELOAD)
     # Iterate over all targest and their options
     list (JOIN CYCLES_ONEAPI_SYCL_TARGETS "," targets_string)
     list (APPEND sycl_compiler_flags -fsycl-targets=${targets_string})
diff --git a/intern/cycles/kernel/device/oneapi/kernel.cpp b/intern/cycles/kernel/device/oneapi/kernel.cpp
index d15d6509d6a..1f32d3406ea 100644
--- a/intern/cycles/kernel/device/oneapi/kernel.cpp
+++ b/intern/cycles/kernel/device/oneapi/kernel.cpp
@@ -144,6 +144,10 @@ size_t oneapi_kernel_preferred_local_size(SyclQueue *queue,
 
 bool oneapi_load_kernels(SyclQueue *queue_, const uint requested_features)
 {
+#  ifdef SYCL_SKIP_KERNELS_PRELOAD
+  (void)queue_;
+  (void)requested_features;
+#  else
   assert(queue_);
   sycl::queue *queue = reinterpret_cast<sycl::queue *>(queue_);
 
@@ -175,7 +179,7 @@ bool oneapi_load_kernels(SyclQueue *queue_, const uint requested_features)
 
       sycl::kernel_bundle<sycl::bundle_state::input> one_kernel_bundle =
           sycl::get_kernel_bundle<sycl::bundle_state::input>(queue->get_context(), {kernel_id});
-      sycl::build(one_kernel_bundle, {queue->get_device()}, sycl::property::queue::in_order());
+      sycl::build(one_kernel_bundle);
     }
   }
   catch (sycl::exception const &e) {
@@ -184,7 +188,7 @@ bool oneapi_load_kernels(SyclQueue *queue_, const uint requested_features)
     }
     return false;
   }
-
+#  endif
   return true;
 }



More information about the Bf-blender-cvs mailing list