Skip to content

Commit 77b6c4c

Browse files
authored
Revert "[L0] Phase 2 of Counter-Based Event Implementation"
1 parent 568a96a commit 77b6c4c

File tree

4 files changed

+29
-86
lines changed

4 files changed

+29
-86
lines changed

source/adapters/level_zero/context.cpp

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -560,12 +560,9 @@ ur_result_t ur_context_handle_t_::getFreeSlotInExistingOrNewPool(
560560

561561
ur_event_handle_t ur_context_handle_t_::getEventFromContextCache(
562562
bool HostVisible, bool WithProfiling, ur_device_handle_t Device,
563-
bool CounterBasedEventEnabled, bool UsingImmCmdList) {
563+
bool CounterBasedEventEnabled) {
564564
std::scoped_lock<ur_mutex> Lock(EventCacheMutex);
565565
auto Cache = getEventCache(HostVisible, WithProfiling, Device);
566-
if (CounterBasedEventEnabled) {
567-
Cache = getCounterBasedEventCache(WithProfiling, UsingImmCmdList, Device);
568-
}
569566
if (Cache->empty())
570567
return nullptr;
571568

@@ -588,17 +585,9 @@ void ur_context_handle_t_::addEventToContextCache(ur_event_handle_t Event) {
588585
Device = Event->UrQueue->Device;
589586
}
590587

591-
if (Event->CounterBasedEventsEnabled) {
592-
bool UsingImmediateCommandlists =
593-
!Event->UrQueue || Event->UrQueue->UsingImmCmdLists;
594-
auto Cache = getCounterBasedEventCache(Event->isProfilingEnabled(),
595-
UsingImmediateCommandlists, Device);
596-
Cache->emplace_back(Event);
597-
} else {
598-
auto Cache = getEventCache(Event->isHostVisible(),
599-
Event->isProfilingEnabled(), Device);
600-
Cache->emplace_back(Event);
601-
}
588+
auto Cache = getEventCache(Event->isHostVisible(),
589+
Event->isProfilingEnabled(), Device);
590+
Cache->emplace_back(Event);
602591
}
603592

604593
ur_result_t

source/adapters/level_zero/context.hpp

Lines changed: 23 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,6 @@ struct ur_context_handle_t_ : _ur_object {
3939
: ZeContext{ZeContext}, Devices{Devs, Devs + NumDevices},
4040
NumDevices{NumDevices} {
4141
OwnNativeHandle = OwnZeContext;
42-
for (const auto &Device : Devices) {
43-
for (int i = 0; i < EventCacheTypeCount; i++) {
44-
EventCaches.emplace_back();
45-
EventCachesDeviceMap[i].insert(
46-
std::make_pair(Device, EventCaches.size() - 1));
47-
}
48-
}
4942
}
5043

5144
ur_context_handle_t_(ze_context_handle_t ZeContext) : ZeContext{ZeContext} {}
@@ -157,10 +150,9 @@ struct ur_context_handle_t_ : _ur_object {
157150
// head.
158151
//
159152
// Cache of event pools to which host-visible events are added to.
160-
std::vector<std::list<ze_event_pool_handle_t>> ZeEventPoolCache{
161-
ZeEventPoolCacheTypeCount * 2};
153+
std::vector<std::list<ze_event_pool_handle_t>> ZeEventPoolCache{12};
162154
std::vector<std::unordered_map<ze_device_handle_t, size_t>>
163-
ZeEventPoolCacheDeviceMap{ZeEventPoolCacheTypeCount * 2};
155+
ZeEventPoolCacheDeviceMap{12};
164156

165157
// This map will be used to determine if a pool is full or not
166158
// by storing number of empty slots available in the pool.
@@ -182,9 +174,9 @@ struct ur_context_handle_t_ : _ur_object {
182174

183175
// Caches for events.
184176
using EventCache = std::vector<std::list<ur_event_handle_t>>;
185-
EventCache EventCaches{EventCacheTypeCount};
177+
EventCache EventCaches{4};
186178
std::vector<std::unordered_map<ur_device_handle_t, size_t>>
187-
EventCachesDeviceMap{EventCacheTypeCount};
179+
EventCachesDeviceMap{4};
188180

189181
// Initialize the PI context.
190182
ur_result_t initialize();
@@ -222,39 +214,25 @@ struct ur_context_handle_t_ : _ur_object {
222214
ur_event_handle_t getEventFromContextCache(bool HostVisible,
223215
bool WithProfiling,
224216
ur_device_handle_t Device,
225-
bool CounterBasedEventEnabled,
226-
bool UsingImmCmdList);
217+
bool CounterBasedEventEnabled);
227218

228219
// Add ur_event_handle_t to cache.
229220
void addEventToContextCache(ur_event_handle_t);
230221

231-
enum ZeEventPoolCacheType {
222+
enum EventPoolCacheType {
232223
HostVisibleCacheType,
233224
HostInvisibleCacheType,
234225
HostVisibleCounterBasedRegularCacheType,
235226
HostInvisibleCounterBasedRegularCacheType,
236227
HostVisibleCounterBasedImmediateCacheType,
237-
HostInvisibleCounterBasedImmediateCacheType,
238-
ZeEventPoolCacheTypeCount
239-
};
240-
241-
enum EventCacheType {
242-
HostVisibleProfilingCacheType,
243-
HostVisibleRegularCacheType,
244-
HostInvisibleProfilingCacheType,
245-
HostInvisibleRegularCacheType,
246-
CounterBasedImmediateCacheType,
247-
CounterBasedRegularCacheType,
248-
CounterBasedImmediateProfilingCacheType,
249-
CounterBasedRegularProfilingCacheType,
250-
EventCacheTypeCount
228+
HostInvisibleCounterBasedImmediateCacheType
251229
};
252230

253231
std::list<ze_event_pool_handle_t> *
254232
getZeEventPoolCache(bool HostVisible, bool WithProfiling,
255233
bool CounterBasedEventEnabled, bool UsingImmediateCmdList,
256234
ze_device_handle_t ZeDevice) {
257-
ZeEventPoolCacheType CacheType;
235+
EventPoolCacheType CacheType;
258236

259237
calculateCacheIndex(HostVisible, CounterBasedEventEnabled,
260238
UsingImmediateCmdList, CacheType);
@@ -277,7 +255,7 @@ struct ur_context_handle_t_ : _ur_object {
277255
ur_result_t calculateCacheIndex(bool HostVisible,
278256
bool CounterBasedEventEnabled,
279257
bool UsingImmediateCmdList,
280-
ZeEventPoolCacheType &CacheType) {
258+
EventPoolCacheType &CacheType) {
281259
if (CounterBasedEventEnabled && HostVisible && !UsingImmediateCmdList) {
282260
CacheType = HostVisibleCounterBasedRegularCacheType;
283261
} else if (CounterBasedEventEnabled && !HostVisible &&
@@ -341,51 +319,28 @@ struct ur_context_handle_t_ : _ur_object {
341319
if (HostVisible) {
342320
if (Device) {
343321
auto EventCachesMap =
344-
WithProfiling ? &EventCachesDeviceMap[HostVisibleProfilingCacheType]
345-
: &EventCachesDeviceMap[HostVisibleRegularCacheType];
346-
return &EventCaches[(*EventCachesMap)[Device]];
347-
} else {
348-
return WithProfiling ? &EventCaches[HostVisibleProfilingCacheType]
349-
: &EventCaches[HostVisibleRegularCacheType];
350-
}
351-
} else {
352-
if (Device) {
353-
auto EventCachesMap =
354-
WithProfiling
355-
? &EventCachesDeviceMap[HostInvisibleProfilingCacheType]
356-
: &EventCachesDeviceMap[HostInvisibleRegularCacheType];
357-
return &EventCaches[(*EventCachesMap)[Device]];
358-
} else {
359-
return WithProfiling ? &EventCaches[HostInvisibleProfilingCacheType]
360-
: &EventCaches[HostInvisibleRegularCacheType];
361-
}
362-
}
363-
};
364-
auto getCounterBasedEventCache(bool WithProfiling, bool UsingImmediateCmdList,
365-
ur_device_handle_t Device) {
366-
if (UsingImmediateCmdList) {
367-
if (Device) {
368-
auto EventCachesMap =
369-
WithProfiling
370-
? &EventCachesDeviceMap[CounterBasedImmediateProfilingCacheType]
371-
: &EventCachesDeviceMap[CounterBasedImmediateCacheType];
322+
WithProfiling ? &EventCachesDeviceMap[0] : &EventCachesDeviceMap[1];
323+
if (EventCachesMap->find(Device) == EventCachesMap->end()) {
324+
EventCaches.emplace_back();
325+
EventCachesMap->insert(
326+
std::make_pair(Device, EventCaches.size() - 1));
327+
}
372328
return &EventCaches[(*EventCachesMap)[Device]];
373329
} else {
374-
return WithProfiling
375-
? &EventCaches[CounterBasedImmediateProfilingCacheType]
376-
: &EventCaches[CounterBasedImmediateCacheType];
330+
return WithProfiling ? &EventCaches[0] : &EventCaches[1];
377331
}
378332
} else {
379333
if (Device) {
380334
auto EventCachesMap =
381-
WithProfiling
382-
? &EventCachesDeviceMap[CounterBasedRegularProfilingCacheType]
383-
: &EventCachesDeviceMap[CounterBasedRegularCacheType];
335+
WithProfiling ? &EventCachesDeviceMap[2] : &EventCachesDeviceMap[3];
336+
if (EventCachesMap->find(Device) == EventCachesMap->end()) {
337+
EventCaches.emplace_back();
338+
EventCachesMap->insert(
339+
std::make_pair(Device, EventCaches.size() - 1));
340+
}
384341
return &EventCaches[(*EventCachesMap)[Device]];
385342
} else {
386-
return WithProfiling
387-
? &EventCaches[CounterBasedRegularProfilingCacheType]
388-
: &EventCaches[CounterBasedRegularCacheType];
343+
return WithProfiling ? &EventCaches[2] : &EventCaches[3];
389344
}
390345
}
391346
}

source/adapters/level_zero/event.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1272,8 +1272,7 @@ ur_result_t EventCreate(ur_context_handle_t Context, ur_queue_handle_t Queue,
12721272
}
12731273

12741274
if (auto CachedEvent = Context->getEventFromContextCache(
1275-
HostVisible, ProfilingEnabled, Device, CounterBasedEventEnabled,
1276-
UsingImmediateCommandlists)) {
1275+
HostVisible, ProfilingEnabled, Device, CounterBasedEventEnabled)) {
12771276
*RetEvent = CachedEvent;
12781277
return UR_RESULT_SUCCESS;
12791278
}

source/adapters/level_zero/queue.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1187,7 +1187,7 @@ ur_queue_handle_t_::ur_queue_handle_t_(
11871187
return std::atoi(UrRet) != 0;
11881188
}();
11891189
this->CounterBasedEventsEnabled =
1190-
isInOrderQueue() && Device->useDriverInOrderLists() &&
1190+
UsingImmCmdLists && isInOrderQueue() && Device->useDriverInOrderLists() &&
11911191
useDriverCounterBasedEvents &&
11921192
Device->Platform->ZeDriverEventPoolCountingEventsExtensionFound;
11931193
}

0 commit comments

Comments
 (0)