Skip to content

Commit e27d8a5

Browse files
Cleanup event class to use function getter/setters
Signed-off-by: Aravind Gopalakrishnan <aravind.gopalakrishnan@intel.com>
1 parent e1bcad5 commit e27d8a5

File tree

6 files changed

+49
-40
lines changed

6 files changed

+49
-40
lines changed

level_zero/core/source/cmdlist/cmdlist_hw.inl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendEventReset(ze_event_hand
241241

242242
uint32_t packetsToReset = 1;
243243

244-
if (event->isTimestampEvent) {
244+
if (event->isEventTimestampFlagSet()) {
245245
baseAddr += event->getContextEndOffset();
246246
packetsToReset = EventPacketsCount::eventPackets;
247247
event->resetPackets();
@@ -1408,7 +1408,7 @@ void CommandListCoreFamily<gfxCoreFamily>::appendSignalEventPostWalker(ze_event_
14081408
return;
14091409
}
14101410
auto event = Event::fromHandle(hEvent);
1411-
if (event->isTimestampEvent) {
1411+
if (event->isEventTimestampFlagSet()) {
14121412
appendEventForProfiling(hEvent, false);
14131413
} else {
14141414
CommandListCoreFamily<gfxCoreFamily>::appendSignalEvent(hEvent);
@@ -1420,7 +1420,7 @@ void CommandListCoreFamily<gfxCoreFamily>::appendEventForProfilingCopyCommand(ze
14201420
using GfxFamily = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
14211421
auto event = Event::fromHandle(hEvent);
14221422

1423-
if (!event->isTimestampEvent) {
1423+
if (!event->isEventTimestampFlagSet()) {
14241424
return;
14251425
}
14261426
commandContainer.addToResidencyContainer(&event->getAllocation(this->device));
@@ -1524,7 +1524,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendSignalEvent(ze_event_han
15241524
commandContainer.addToResidencyContainer(&event->getAllocation(this->device));
15251525
uint64_t baseAddr = event->getGpuAddress(this->device);
15261526
size_t eventSignalOffset = 0;
1527-
if (event->isTimestampEvent) {
1527+
if (event->isEventTimestampFlagSet()) {
15281528
eventSignalOffset = event->getContextEndOffset();
15291529
}
15301530

@@ -1574,7 +1574,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendWaitOnEvents(uint32_t nu
15741574
gpuAddr = event->getGpuAddress(this->device);
15751575
uint32_t packetsToWait = event->getPacketsInUse();
15761576

1577-
if (event->isTimestampEvent) {
1577+
if (event->isEventTimestampFlagSet()) {
15781578
gpuAddr += event->getContextEndOffset();
15791579
}
15801580
for (uint32_t i = 0u; i < packetsToWait; i++) {
@@ -1647,7 +1647,7 @@ void CommandListCoreFamily<gfxCoreFamily>::appendEventForProfiling(ze_event_hand
16471647
} else {
16481648
auto event = Event::fromHandle(hEvent);
16491649

1650-
if (!event->isTimestampEvent) {
1650+
if (!event->isEventTimestampFlagSet()) {
16511651
return;
16521652
}
16531653

level_zero/core/source/cmdlist/cmdlist_hw_immediate.inl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::appendBarrier(
4545
bool isTimestampEvent = false;
4646
for (uint32_t i = 0; i < numWaitEvents; i++) {
4747
auto event = Event::fromHandle(phWaitEvents[i]);
48-
isTimestampEvent |= (event->isTimestampEvent) ? true : false;
48+
isTimestampEvent |= (event->isEventTimestampFlagSet()) ? true : false;
4949
}
5050
if (hSignalEvent) {
5151
auto signalEvent = Event::fromHandle(hSignalEvent);
52-
isTimestampEvent |= signalEvent->isTimestampEvent;
52+
isTimestampEvent |= signalEvent->isEventTimestampFlagSet();
5353
}
5454
if (isSyncModeQueue || isTimestampEvent) {
5555
auto ret = CommandListCoreFamily<gfxCoreFamily>::appendBarrier(hSignalEvent, numWaitEvents, phWaitEvents);
@@ -126,7 +126,7 @@ ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::appendMemoryFill(void
126126
template <GFXCORE_FAMILY gfxCoreFamily>
127127
ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::appendSignalEvent(ze_event_handle_t hEvent) {
128128
auto event = Event::fromHandle(hEvent);
129-
if (isSyncModeQueue || event->isTimestampEvent) {
129+
if (isSyncModeQueue || event->isEventTimestampFlagSet()) {
130130
auto ret = CommandListCoreFamily<gfxCoreFamily>::appendSignalEvent(hEvent);
131131
if (ret == ZE_RESULT_SUCCESS) {
132132
executeCommandListImmediate(true);
@@ -146,7 +146,7 @@ ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::appendSignalEvent(ze_
146146
template <GFXCORE_FAMILY gfxCoreFamily>
147147
ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::appendEventReset(ze_event_handle_t hEvent) {
148148
auto event = Event::fromHandle(hEvent);
149-
if (isSyncModeQueue || event->isTimestampEvent) {
149+
if (isSyncModeQueue || event->isEventTimestampFlagSet()) {
150150
auto ret = CommandListCoreFamily<gfxCoreFamily>::appendEventReset(hEvent);
151151
if (ret == ZE_RESULT_SUCCESS) {
152152
executeCommandListImmediate(true);
@@ -177,7 +177,7 @@ ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::appendWaitOnEvents(ui
177177
bool isTimestampEvent = false;
178178
for (uint32_t i = 0; i < numEvents; i++) {
179179
auto event = Event::fromHandle(phEvent[i]);
180-
isTimestampEvent |= (event->isTimestampEvent) ? true : false;
180+
isTimestampEvent |= (event->isEventTimestampFlagSet()) ? true : false;
181181
}
182182
if (isSyncModeQueue || isTimestampEvent) {
183183
auto ret = CommandListCoreFamily<gfxCoreFamily>::appendWaitOnEvents(numEvents, phEvent);

level_zero/core/source/event/event.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ ze_result_t EventPoolImp::initialize(DriverHandle *driver, Context *context, uin
4646

4747
DriverHandleImp *driverHandleImp = static_cast<DriverHandleImp *>(driver);
4848
bool useDevicesFromApi = true;
49+
bool useDeviceAlloc = isEventPoolDeviceAllocationFlagSet();
4950

5051
if (numDevices == 0) {
5152
numDevices = static_cast<uint32_t>(driverHandleImp->devices.size());
@@ -72,19 +73,19 @@ ze_result_t EventPoolImp::initialize(DriverHandle *driver, Context *context, uin
7273
}
7374
}
7475

75-
if (this->devices.size() > 1) {
76-
this->allocOnDevice = false;
77-
}
78-
7976
auto &hwHelper = devices[0]->getHwHelper();
8077

8178
eventAlignment = static_cast<uint32_t>(hwHelper.getTimestampPacketAllocatorAlignment());
8279
eventSize = static_cast<uint32_t>(alignUp(EventPacketsCount::eventPackets * hwHelper.getSingleTimestampPacketSize(), eventAlignment));
8380

8481
size_t alignedSize = alignUp<size_t>(numEvents * eventSize, MemoryConstants::pageSize64k);
85-
NEO::GraphicsAllocation::AllocationType allocationType = isEventPoolUsedForTimestamp ? NEO::GraphicsAllocation::AllocationType::TIMESTAMP_PACKET_TAG_BUFFER
86-
: NEO::GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY;
87-
if (this->allocOnDevice && !isEventPoolUsedForTimestamp) {
82+
NEO::GraphicsAllocation::AllocationType allocationType = isEventPoolTimestampFlagSet() ? NEO::GraphicsAllocation::AllocationType::TIMESTAMP_PACKET_TAG_BUFFER
83+
: NEO::GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY;
84+
if (this->devices.size() > 1) {
85+
useDeviceAlloc = false;
86+
}
87+
88+
if (useDeviceAlloc && !isEventPoolTimestampFlagSet()) {
8889
allocationType = NEO::GraphicsAllocation::AllocationType::GPU_TIMESTAMP_DEVICE_BUFFER;
8990
}
9091

level_zero/core/source/event/event.h

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ struct Event : _ze_event_handle_t {
7070
uint32_t kernelCount = 1u;
7171
ze_event_scope_flags_t signalScope = 0u;
7272
ze_event_scope_flags_t waitScope = 0u;
73-
bool isTimestampEvent = false;
74-
bool allocOnDevice = false;
7573
bool updateTaskCountEnabled = false;
7674

7775
uint64_t globalStartTS;
@@ -83,9 +81,16 @@ struct Event : _ze_event_handle_t {
8381
MetricStreamer *metricStreamer = nullptr;
8482
NEO::CommandStreamReceiver *csr = nullptr;
8583

84+
void setEventTimestampFlag(bool timestampFlag) {
85+
isTimestampEvent = timestampFlag;
86+
}
87+
88+
bool isEventTimestampFlagSet() { return isTimestampEvent; }
89+
8690
protected:
8791
uint64_t gpuAddress;
8892
NEO::GraphicsAllocation *allocation = nullptr;
93+
bool isTimestampEvent = false;
8994
};
9095

9196
template <typename TagSizeT>
@@ -153,20 +158,27 @@ struct EventPool : _ze_event_pool_handle_t {
153158

154159
virtual uint32_t getEventSize() = 0;
155160

156-
bool isEventPoolUsedForTimestamp = false;
157-
bool allocOnDevice = false;
161+
bool isEventPoolTimestampFlagSet() {
162+
if (eventPoolFlags & ZE_EVENT_POOL_FLAG_KERNEL_TIMESTAMP) {
163+
return true;
164+
}
165+
return false;
166+
}
167+
168+
bool isEventPoolDeviceAllocationFlagSet() {
169+
if (!(eventPoolFlags & ZE_EVENT_POOL_FLAG_HOST_VISIBLE)) {
170+
return true;
171+
}
172+
return false;
173+
}
158174

159175
std::unique_ptr<NEO::MultiGraphicsAllocation> eventPoolAllocations;
176+
ze_event_pool_flags_t eventPoolFlags;
160177
};
161178

162179
struct EventPoolImp : public EventPool {
163180
EventPoolImp(const ze_event_pool_desc_t *desc) : numEvents(desc->count) {
164-
if (desc->flags & ZE_EVENT_POOL_FLAG_KERNEL_TIMESTAMP) {
165-
isEventPoolUsedForTimestamp = true;
166-
}
167-
if (!(desc->flags & ZE_EVENT_POOL_FLAG_HOST_VISIBLE)) {
168-
allocOnDevice = true;
169-
}
181+
eventPoolFlags = desc->flags;
170182
}
171183

172184
ze_result_t initialize(DriverHandle *driver, Context *context, uint32_t numDevices, ze_device_handle_t *phDevices);

level_zero/core/source/event/event_impl.inl

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,11 @@ Event *Event::create(EventPool *eventPool, const ze_event_desc_t *desc, Device *
1313
auto event = new EventImp<TagSizeT>(eventPool, desc->index, device);
1414
UNRECOVERABLE_IF(event == nullptr);
1515

16-
if (eventPool->isEventPoolUsedForTimestamp) {
17-
event->isTimestampEvent = true;
16+
if (eventPool->isEventPoolTimestampFlagSet()) {
17+
event->setEventTimestampFlag(true);
1818
event->kernelTimestampsData = std::make_unique<NEO::TimestampPackets<TagSizeT>[]>(EventPacketsCount::maxKernelSplit);
1919
}
2020

21-
if (eventPool->allocOnDevice) {
22-
event->allocOnDevice = true;
23-
}
24-
2521
auto alloc = eventPool->getAllocation().getGraphicsAllocation(device->getNEODevice()->getRootDeviceIndex());
2622

2723
uint64_t baseHostAddr = reinterpret_cast<uint64_t>(alloc->getUnderlyingBuffer());
@@ -107,7 +103,7 @@ ze_result_t EventImp<TagSizeT>::queryStatus() {
107103
*hostAddr = metricStreamer->getNotificationState();
108104
}
109105
this->csr->downloadAllocations();
110-
if (isTimestampEvent) {
106+
if (isEventTimestampFlagSet()) {
111107
return queryStatusKernelTimestamp();
112108
}
113109
memcpy_s(static_cast<void *>(&queryVal), sizeof(uint32_t), static_cast<void *>(hostAddr), sizeof(uint32_t));
@@ -156,7 +152,7 @@ ze_result_t EventImp<TagSizeT>::hostEventSetValueTimestamps(TagSizeT eventVal) {
156152

157153
template <typename TagSizeT>
158154
ze_result_t EventImp<TagSizeT>::hostEventSetValue(uint32_t eventVal) {
159-
if (isTimestampEvent) {
155+
if (isEventTimestampFlagSet()) {
160156
return hostEventSetValueTimestamps(static_cast<TagSizeT>(eventVal));
161157
}
162158

@@ -220,7 +216,7 @@ ze_result_t EventImp<TagSizeT>::hostSynchronize(uint64_t timeout) {
220216

221217
template <typename TagSizeT>
222218
ze_result_t EventImp<TagSizeT>::reset() {
223-
if (isTimestampEvent) {
219+
if (isEventTimestampFlagSet()) {
224220
kernelCount = EventPacketsCount::maxKernelSplit;
225221
for (uint32_t i = 0; i < kernelCount; i++) {
226222
kernelTimestampsData[i].setPacketsUsed(NEO::TimestampPacketSizeControl::preferredPacketCount);
@@ -274,7 +270,7 @@ void EventImp<TagSizeT>::resetPackets() {
274270

275271
template <typename TagSizeT>
276272
uint32_t EventImp<TagSizeT>::getPacketsInUse() {
277-
if (isTimestampEvent) {
273+
if (isEventTimestampFlagSet()) {
278274
uint32_t packetsInUse = 0;
279275
for (uint32_t i = 0; i < kernelCount; i++) {
280276
packetsInUse += kernelTimestampsData[i].getPacketsUsed();
@@ -293,7 +289,7 @@ void EventImp<TagSizeT>::setPacketsInUse(uint32_t value) {
293289
template <typename TagSizeT>
294290
uint64_t EventImp<TagSizeT>::getPacketAddress(Device *device) {
295291
uint64_t address = getGpuAddress(device);
296-
if (isTimestampEvent && kernelCount > 1) {
292+
if (isEventTimestampFlagSet() && kernelCount > 1) {
297293
for (uint32_t i = 0; i < kernelCount - 1; i++) {
298294
address += kernelTimestampsData[i].getPacketsUsed() *
299295
NEO::TimestampPackets<TagSizeT>::getSinglePacketSize();

level_zero/core/test/unit_tests/sources/event/test_event.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ class TimestampEventCreate : public Test<DeviceFixture> {
543543
};
544544

545545
TEST_F(TimestampEventCreate, givenEventCreatedWithTimestampThenIsTimestampEventFlagSet) {
546-
EXPECT_TRUE(event->isTimestampEvent);
546+
EXPECT_TRUE(event->isEventTimestampFlagSet());
547547
}
548548

549549
TEST_F(TimestampEventCreate, givenEventTimestampsCreatedWhenResetIsInvokeThenCorrectDataAreSet) {

0 commit comments

Comments
 (0)