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 {
210
210
bool MKernelHasSpecialCaptures = true ;
211
211
212
212
// A pointer to a kernel name based cache retrieved on the application side.
213
- KernelNameBasedCacheT *MKernelNameBasedCachePtr;
213
+ KernelNameBasedCacheT *MKernelNameBasedCachePtr = nullptr ;
214
214
};
215
215
216
216
} // namespace detail
Original file line number Diff line number Diff line change 12
12
#include < sycl/detail/ur.hpp>
13
13
14
14
#include < mutex>
15
+ #include < optional>
15
16
16
17
#include < boost/unordered/unordered_flat_map.hpp>
17
18
@@ -36,6 +37,7 @@ struct FastKernelSubcacheT {
36
37
37
38
struct KernelNameBasedCacheT {
38
39
FastKernelSubcacheT FastKernelSubcache;
40
+ std::optional<bool > UsesAssert;
39
41
};
40
42
41
43
} // namespace detail
Original file line number Diff line number Diff line change 12
12
#include < detail/device_global_map_entry.hpp>
13
13
#include < detail/host_pipe_map_entry.hpp>
14
14
#include < detail/kernel_arg_mask.hpp>
15
+ #include < detail/kernel_name_based_cache_t.hpp>
15
16
#include < detail/spec_constant_impl.hpp>
16
17
#include < sycl/detail/cg_types.hpp>
17
18
#include < sycl/detail/common.hpp>
@@ -359,8 +360,16 @@ class ProgramManager {
359
360
~ProgramManager () = default ;
360
361
361
362
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 ();
364
373
}
365
374
366
375
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> {
872
872
KernelUsesAssert =
873
873
(!Handler.MKernel || Handler.MKernel ->hasSYCLMetadata ()) &&
874
874
ProgramManager::getInstance ().kernelUsesAssert (
875
- Handler.MKernelName .data ());
875
+ Handler.MKernelName .data (),
876
+ Handler.impl ->MKernelNameBasedCachePtr );
876
877
877
878
auto &PostProcess = *PostProcessorFunc;
878
879
PostProcess (IsKernel, KernelUsesAssert, Event);
Original file line number Diff line number Diff line change @@ -3276,7 +3276,8 @@ ur_result_t ExecCGCommand::enqueueImpQueue() {
3276
3276
// Kernel only uses assert if it's non interop one
3277
3277
bool KernelUsesAssert =
3278
3278
(!SyclKernel || SyclKernel->hasSYCLMetadata ()) &&
3279
- ProgramManager::getInstance ().kernelUsesAssert (KernelName);
3279
+ ProgramManager::getInstance ().kernelUsesAssert (
3280
+ KernelName, ExecKernel->MKernelNameBasedCachePtr );
3280
3281
if (KernelUsesAssert) {
3281
3282
EventImpl = MEvent.get ();
3282
3283
}
Original file line number Diff line number Diff line change @@ -550,7 +550,7 @@ event handler::finalize() {
550
550
bool KernelUsesAssert =
551
551
!(MKernel && MKernel->isInterop ()) &&
552
552
detail::ProgramManager::getInstance ().kernelUsesAssert (
553
- MKernelName.data ());
553
+ MKernelName.data (), impl-> MKernelNameBasedCachePtr );
554
554
DiscardEvent = !KernelUsesAssert;
555
555
}
556
556
You can’t perform that action at this time.
0 commit comments