File tree Expand file tree Collapse file tree 6 files changed +19
-6
lines changed
Expand file tree Collapse file tree 6 files changed +19
-6
lines changed Original file line number Diff line number Diff line change @@ -210,7 +210,7 @@ class handler_impl {
210210 bool MKernelHasSpecialCaptures = true ;
211211
212212 // A pointer to a kernel name based cache retrieved on the application side.
213- KernelNameBasedCacheT *MKernelNameBasedCachePtr;
213+ KernelNameBasedCacheT *MKernelNameBasedCachePtr = nullptr ;
214214};
215215
216216} // namespace detail
Original file line number Diff line number Diff line change 1212#include < sycl/detail/ur.hpp>
1313
1414#include < mutex>
15+ #include < optional>
1516
1617#include < boost/unordered/unordered_flat_map.hpp>
1718
@@ -36,6 +37,7 @@ struct FastKernelSubcacheT {
3637
3738struct KernelNameBasedCacheT {
3839 FastKernelSubcacheT FastKernelSubcache;
40+ std::optional<bool > UsesAssert;
3941};
4042
4143} // namespace detail
Original file line number Diff line number Diff line change 1212#include < detail/device_global_map_entry.hpp>
1313#include < detail/host_pipe_map_entry.hpp>
1414#include < detail/kernel_arg_mask.hpp>
15+ #include < detail/kernel_name_based_cache_t.hpp>
1516#include < detail/spec_constant_impl.hpp>
1617#include < sycl/detail/cg_types.hpp>
1718#include < sycl/detail/common.hpp>
@@ -359,8 +360,16 @@ class ProgramManager {
359360 ~ProgramManager () = default ;
360361
361362 template <typename NameT>
362- bool kernelUsesAssert (const NameT &KernelName) const {
363- return m_KernelUsesAssert.find (KernelName) != m_KernelUsesAssert.end ();
363+ bool kernelUsesAssert (const NameT &KernelName,
364+ KernelNameBasedCacheT *KernelNameBasedCachePtr) const {
365+ if (!KernelNameBasedCachePtr)
366+ return m_KernelUsesAssert.find (KernelName) != m_KernelUsesAssert.end ();
367+
368+ std::optional<bool > &UsesAssert = KernelNameBasedCachePtr->UsesAssert ;
369+ if (!UsesAssert.has_value ())
370+ UsesAssert =
371+ m_KernelUsesAssert.find (KernelName) != m_KernelUsesAssert.end ();
372+ return UsesAssert.value ();
364373 }
365374
366375 SanitizerType kernelUsesSanitizer () const { return m_SanitizerFoundInImage; }
Original file line number Diff line number Diff line change @@ -872,7 +872,8 @@ class queue_impl : public std::enable_shared_from_this<queue_impl> {
872872 KernelUsesAssert =
873873 (!Handler.MKernel || Handler.MKernel ->hasSYCLMetadata ()) &&
874874 ProgramManager::getInstance ().kernelUsesAssert (
875- Handler.MKernelName .data ());
875+ Handler.MKernelName .data (),
876+ Handler.impl ->MKernelNameBasedCachePtr );
876877
877878 auto &PostProcess = *PostProcessorFunc;
878879 PostProcess (IsKernel, KernelUsesAssert, Event);
Original file line number Diff line number Diff line change @@ -3276,7 +3276,8 @@ ur_result_t ExecCGCommand::enqueueImpQueue() {
32763276 // Kernel only uses assert if it's non interop one
32773277 bool KernelUsesAssert =
32783278 (!SyclKernel || SyclKernel->hasSYCLMetadata ()) &&
3279- ProgramManager::getInstance ().kernelUsesAssert (KernelName);
3279+ ProgramManager::getInstance ().kernelUsesAssert (
3280+ KernelName, ExecKernel->MKernelNameBasedCachePtr );
32803281 if (KernelUsesAssert) {
32813282 EventImpl = MEvent.get ();
32823283 }
Original file line number Diff line number Diff line change @@ -550,7 +550,7 @@ event handler::finalize() {
550550 bool KernelUsesAssert =
551551 !(MKernel && MKernel->isInterop ()) &&
552552 detail::ProgramManager::getInstance ().kernelUsesAssert (
553- MKernelName.data ());
553+ MKernelName.data (), impl-> MKernelNameBasedCachePtr );
554554 DiscardEvent = !KernelUsesAssert;
555555 }
556556
You can’t perform that action at this time.
0 commit comments