@@ -168,9 +168,9 @@ struct ur_context_handle_t_ : _ur_object {
168168 // head.
169169 //
170170 // Cache of event pools to which host-visible events are added to.
171- std::vector<std::list<ze_event_pool_handle_t >> ZeEventPoolCache{12 };
171+ std::vector<std::list<ze_event_pool_handle_t >> ZeEventPoolCache{30 };
172172 std::vector<std::unordered_map<ze_device_handle_t , size_t >>
173- ZeEventPoolCacheDeviceMap{12 };
173+ ZeEventPoolCacheDeviceMap{30 };
174174
175175 // This map will be used to determine if a pool is full or not
176176 // by storing number of empty slots available in the pool.
@@ -224,7 +224,8 @@ struct ur_context_handle_t_ : _ur_object {
224224 ur_event_handle_t getEventFromContextCache (bool HostVisible,
225225 bool WithProfiling,
226226 ur_device_handle_t Device,
227- bool CounterBasedEventEnabled);
227+ bool CounterBasedEventEnabled,
228+ bool InterruptBasedEventEnabled);
228229
229230 // Add ur_event_handle_t to cache.
230231 void addEventToContextCache (ur_event_handle_t );
@@ -235,17 +236,29 @@ struct ur_context_handle_t_ : _ur_object {
235236 HostVisibleCounterBasedRegularCacheType,
236237 HostInvisibleCounterBasedRegularCacheType,
237238 HostVisibleCounterBasedImmediateCacheType,
238- HostInvisibleCounterBasedImmediateCacheType
239+ HostInvisibleCounterBasedImmediateCacheType,
240+
241+ HostVisibleInterruptBasedRegularCacheType,
242+ HostInvisibleInterruptBasedRegularCacheType,
243+ HostVisibleInterruptBasedImmediateCacheType,
244+ HostInvisibleInterruptBasedImmediateCacheType,
245+
246+ HostVisibleInterruptAndCounterBasedRegularCacheType,
247+ HostInvisibleInterruptAndCounterBasedRegularCacheType,
248+ HostVisibleInterruptAndCounterBasedImmediateCacheType,
249+ HostInvisibleInterruptAndCounterBasedImmediateCacheType
239250 };
240251
241252 std::list<ze_event_pool_handle_t > *
242253 getZeEventPoolCache (bool HostVisible, bool WithProfiling,
243254 bool CounterBasedEventEnabled, bool UsingImmediateCmdList,
255+ bool InterruptBasedEventEnabled,
244256 ze_device_handle_t ZeDevice) {
245257 EventPoolCacheType CacheType;
246258
247259 calculateCacheIndex (HostVisible, CounterBasedEventEnabled,
248- UsingImmediateCmdList, CacheType);
260+ InterruptBasedEventEnabled, UsingImmediateCmdList,
261+ CacheType);
249262 if (ZeDevice) {
250263 auto ZeEventPoolCacheMap =
251264 WithProfiling ? &ZeEventPoolCacheDeviceMap[CacheType * 2 ]
@@ -265,23 +278,57 @@ struct ur_context_handle_t_ : _ur_object {
265278 ur_result_t calculateCacheIndex (bool HostVisible,
266279 bool CounterBasedEventEnabled,
267280 bool UsingImmediateCmdList,
281+ bool InterruptBasedEventEnabled,
268282 EventPoolCacheType &CacheType) {
269- if (CounterBasedEventEnabled && HostVisible && !UsingImmediateCmdList) {
270- CacheType = HostVisibleCounterBasedRegularCacheType;
271- } else if (CounterBasedEventEnabled && !HostVisible &&
272- !UsingImmediateCmdList) {
273- CacheType = HostInvisibleCounterBasedRegularCacheType;
274- } else if (CounterBasedEventEnabled && HostVisible &&
275- UsingImmediateCmdList) {
276- CacheType = HostVisibleCounterBasedImmediateCacheType;
277- } else if (CounterBasedEventEnabled && !HostVisible &&
278- UsingImmediateCmdList) {
279- CacheType = HostInvisibleCounterBasedImmediateCacheType;
280- } else if (!CounterBasedEventEnabled && HostVisible) {
281- CacheType = HostVisibleCacheType;
283+ if (InterruptBasedEventEnabled) {
284+ if (CounterBasedEventEnabled) {
285+ if (HostVisible) {
286+ if (UsingImmediateCmdList) {
287+ CacheType = HostVisibleInterruptAndCounterBasedImmediateCacheType;
288+ } else {
289+ CacheType = HostVisibleInterruptAndCounterBasedRegularCacheType;
290+ }
291+ } else {
292+ if (UsingImmediateCmdList) {
293+ CacheType = HostInvisibleInterruptAndCounterBasedImmediateCacheType;
294+ } else {
295+ CacheType = HostInvisibleInterruptAndCounterBasedRegularCacheType;
296+ }
297+ }
298+ } else {
299+ if (HostVisible) {
300+ if (UsingImmediateCmdList) {
301+ CacheType = HostVisibleInterruptBasedImmediateCacheType;
302+ } else {
303+ CacheType = HostVisibleInterruptBasedRegularCacheType;
304+ }
305+ } else {
306+ if (UsingImmediateCmdList) {
307+ CacheType = HostInvisibleInterruptBasedImmediateCacheType;
308+ } else {
309+ CacheType = HostInvisibleInterruptBasedRegularCacheType;
310+ }
311+ }
312+ }
282313 } else {
283- CacheType = HostInvisibleCacheType;
314+ if (CounterBasedEventEnabled && HostVisible && !UsingImmediateCmdList) {
315+ CacheType = HostVisibleCounterBasedRegularCacheType;
316+ } else if (CounterBasedEventEnabled && !HostVisible &&
317+ !UsingImmediateCmdList) {
318+ CacheType = HostInvisibleCounterBasedRegularCacheType;
319+ } else if (CounterBasedEventEnabled && HostVisible &&
320+ UsingImmediateCmdList) {
321+ CacheType = HostVisibleCounterBasedImmediateCacheType;
322+ } else if (CounterBasedEventEnabled && !HostVisible &&
323+ UsingImmediateCmdList) {
324+ CacheType = HostInvisibleCounterBasedImmediateCacheType;
325+ } else if (!CounterBasedEventEnabled && HostVisible) {
326+ CacheType = HostVisibleCacheType;
327+ } else {
328+ CacheType = HostInvisibleCacheType;
329+ }
284330 }
331+
285332 return UR_RESULT_SUCCESS;
286333 }
287334
0 commit comments