mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 23:03:02 +08:00
fix: Release temporary allocations from bcs split
Related-To: NEO-7933 Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
464c67789f
commit
48114e5423
@@ -12,7 +12,7 @@
|
||||
#include "shared/source/sku_info/sku_info_base.h"
|
||||
|
||||
#include "level_zero/core/source/cmdlist/cmdlist_hw_immediate.h"
|
||||
#include "level_zero/core/source/cmdqueue/cmdqueue.h"
|
||||
#include "level_zero/core/source/cmdqueue/cmdqueue_imp.h"
|
||||
#include "level_zero/core/source/context/context.h"
|
||||
#include "level_zero/core/source/event/event.h"
|
||||
|
||||
@@ -118,6 +118,10 @@ struct BcsSplit {
|
||||
|
||||
totalSize -= localSize;
|
||||
engineCount--;
|
||||
|
||||
if (hSignalEvent) {
|
||||
Event::fromHandle(hSignalEvent)->appendAdditionalCsr(static_cast<CommandQueueImp *>(cmdQsForSplit[i])->getCsr());
|
||||
}
|
||||
}
|
||||
|
||||
cmdList->addEventsToCmdList(static_cast<uint32_t>(cmdQsForSplit.size()), eventHandles.data(), hasRelaxedOrderingDependencies, false);
|
||||
|
||||
@@ -384,7 +384,8 @@ void Event::resetPackets(bool resetAllPackets) {
|
||||
cpuStartTimestamp = 0;
|
||||
gpuStartTimestamp = 0;
|
||||
gpuEndTimestamp = 0;
|
||||
this->csr = this->device->getNEODevice()->getDefaultEngine().commandStreamReceiver;
|
||||
this->csrs.clear();
|
||||
this->csrs.push_back(this->device->getNEODevice()->getDefaultEngine().commandStreamReceiver);
|
||||
}
|
||||
|
||||
void Event::setIsCompleted() {
|
||||
|
||||
@@ -135,7 +135,15 @@ struct Event : _ze_event_handle_t {
|
||||
return isTimestampEvent || usingContextEndOffset;
|
||||
}
|
||||
void setCsr(NEO::CommandStreamReceiver *csr) {
|
||||
this->csr = csr;
|
||||
this->csrs[0] = csr;
|
||||
}
|
||||
void appendAdditionalCsr(NEO::CommandStreamReceiver *additonalCsr) {
|
||||
for (const auto &csr : csrs) {
|
||||
if (csr == additonalCsr) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
csrs.push_back(additonalCsr);
|
||||
}
|
||||
|
||||
void increaseKernelCount();
|
||||
@@ -226,7 +234,7 @@ struct Event : _ze_event_handle_t {
|
||||
|
||||
// Metric streamer instance associated with the event.
|
||||
MetricStreamer *metricStreamer = nullptr;
|
||||
NEO::CommandStreamReceiver *csr = nullptr;
|
||||
StackVec<NEO::CommandStreamReceiver *, 1> csrs;
|
||||
void *hostAddress = nullptr;
|
||||
Device *device = nullptr;
|
||||
EventPool *eventPool = nullptr;
|
||||
|
||||
@@ -42,7 +42,7 @@ Event *Event::create(EventPool *eventPool, const ze_event_desc_t *desc, Device *
|
||||
event->hostAddress = reinterpret_cast<void *>(baseHostAddr + event->eventPoolOffset);
|
||||
event->signalScope = desc->signal;
|
||||
event->waitScope = desc->wait;
|
||||
event->csr = csr;
|
||||
event->csrs.push_back(csr);
|
||||
event->maxKernelCount = eventPool->getMaxKernelCount();
|
||||
event->maxPacketCount = eventPool->getEventMaxPackets();
|
||||
event->isFromIpcPool = eventPool->getImportedIpcPool();
|
||||
@@ -167,10 +167,14 @@ ze_result_t EventImp<TagSizeT>::queryStatusEventPackets() {
|
||||
}
|
||||
}
|
||||
if (this->downloadAllocationRequired) {
|
||||
this->csr->downloadAllocations();
|
||||
for (auto &csr : csrs) {
|
||||
csr->downloadAllocations();
|
||||
}
|
||||
}
|
||||
this->setIsCompleted();
|
||||
this->csr->getInternalAllocationStorage()->cleanAllocationList(this->csr->peekTaskCount(), NEO::AllocationUsage::TEMPORARY_ALLOCATION);
|
||||
for (auto &csr : csrs) {
|
||||
csr->getInternalAllocationStorage()->cleanAllocationList(csr->peekTaskCount(), NEO::AllocationUsage::TEMPORARY_ALLOCATION);
|
||||
}
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -180,7 +184,9 @@ ze_result_t EventImp<TagSizeT>::queryStatus() {
|
||||
hostEventSetValue(metricStreamer->getNotificationState());
|
||||
}
|
||||
if (this->downloadAllocationRequired) {
|
||||
this->csr->downloadAllocation(this->getAllocation(this->device));
|
||||
for (auto &csr : csrs) {
|
||||
csr->downloadAllocation(this->getAllocation(this->device));
|
||||
}
|
||||
}
|
||||
|
||||
if (!this->isFromIpcPool && isAlreadyCompleted()) {
|
||||
@@ -292,7 +298,7 @@ ze_result_t EventImp<TagSizeT>::hostSynchronize(uint64_t timeout) {
|
||||
|
||||
ze_result_t ret = ZE_RESULT_NOT_READY;
|
||||
|
||||
if (this->csr->getType() == NEO::CommandStreamReceiverType::CSR_AUB) {
|
||||
if (this->csrs[0]->getType() == NEO::CommandStreamReceiverType::CSR_AUB) {
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -320,7 +326,7 @@ ze_result_t EventImp<TagSizeT>::hostSynchronize(uint64_t timeout) {
|
||||
|
||||
if (elapsedTimeSinceGpuHangCheck.count() >= this->gpuHangCheckPeriod.count()) {
|
||||
lastHangCheckTime = currentTime;
|
||||
if (this->csr->isGpuHangDetected()) {
|
||||
if (this->csrs[0]->isGpuHangDetected()) {
|
||||
if (device->getNEODevice()->getRootDeviceEnvironment().assertHandler.get()) {
|
||||
device->getNEODevice()->getRootDeviceEnvironment().assertHandler->printAssertAndAbort();
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace ult {
|
||||
template <>
|
||||
struct WhiteBox<::L0::Event> : public ::L0::Event {
|
||||
using BaseClass = ::L0::Event;
|
||||
using BaseClass::csr;
|
||||
using BaseClass::csrs;
|
||||
using BaseClass::Event;
|
||||
using BaseClass::gpuHangCheckPeriod;
|
||||
using BaseClass::hostAddress;
|
||||
@@ -36,7 +36,7 @@ using Event = WhiteBox<::L0::Event>;
|
||||
template <typename TagSizeT>
|
||||
struct WhiteBox<::L0::EventImp<TagSizeT>> : public L0::EventImp<TagSizeT> {
|
||||
using BaseClass = ::L0::EventImp<TagSizeT>;
|
||||
using BaseClass::csr;
|
||||
using BaseClass::csrs;
|
||||
using BaseClass::gpuHangCheckPeriod;
|
||||
using BaseClass::hostAddress;
|
||||
using BaseClass::hostEventSetValueTimestamps;
|
||||
|
||||
@@ -472,7 +472,7 @@ TEST_F(EventAssertTest, GivenGpuHangWhenHostSynchronizeIsCalledThenAssertIsCheck
|
||||
const auto csr = std::make_unique<MockCommandStreamReceiver>(*neoDevice->getExecutionEnvironment(), 0, neoDevice->getDeviceBitfield());
|
||||
csr->isGpuHangDetectedReturnValue = true;
|
||||
|
||||
event->csr = csr.get();
|
||||
event->csrs[0] = csr.get();
|
||||
event->gpuHangCheckPeriod = std::chrono::microseconds::zero();
|
||||
auto assertHandler = new MockAssertHandler(device->getNEODevice());
|
||||
neoDevice->getRootDeviceEnvironmentRef().assertHandler.reset(assertHandler);
|
||||
@@ -488,7 +488,7 @@ TEST_F(EventAssertTest, GivenNoGpuHangAndOneNanosecondTimeoutWhenHostSynchronize
|
||||
const auto csr = std::make_unique<MockCommandStreamReceiver>(*neoDevice->getExecutionEnvironment(), 0, neoDevice->getDeviceBitfield());
|
||||
csr->isGpuHangDetectedReturnValue = false;
|
||||
|
||||
event->csr = csr.get();
|
||||
event->csrs[0] = csr.get();
|
||||
event->gpuHangCheckPeriod = std::chrono::microseconds::zero();
|
||||
auto assertHandler = new MockAssertHandler(device->getNEODevice());
|
||||
neoDevice->getRootDeviceEnvironmentRef().assertHandler.reset(assertHandler);
|
||||
@@ -506,7 +506,7 @@ TEST_F(EventAssertTest, GivenEventSignalledWhenHostSynchronizeIsCalledThenAssert
|
||||
*hostAddr = Event::STATE_SIGNALED;
|
||||
|
||||
event->setUsingContextEndOffset(false);
|
||||
event->csr = csr.get();
|
||||
event->csrs[0] = csr.get();
|
||||
|
||||
auto assertHandler = new MockAssertHandler(device->getNEODevice());
|
||||
neoDevice->getRootDeviceEnvironmentRef().assertHandler.reset(assertHandler);
|
||||
|
||||
@@ -934,8 +934,8 @@ TEST_F(CommandListCreate, whenCreatingImmCmdListWithSyncModeAndAppendSignalEvent
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
commandList->appendSignalEvent(event);
|
||||
|
||||
@@ -974,8 +974,8 @@ TEST_F(CommandListCreate, whenCreatingImmCmdListWithSyncModeAndAppendBarrierThen
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
commandList->appendBarrier(nullptr, 1, &event);
|
||||
|
||||
@@ -1340,8 +1340,8 @@ HWTEST_F(CommandListCreate, GivenGpuHangWhenCreatingImmediateCommandListAndAppen
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
returnValue = commandList->appendWaitOnEvents(1, &event, false, true);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, returnValue);
|
||||
@@ -1396,8 +1396,8 @@ HWTEST2_F(CommandListCreate, GivenGpuHangOnExecutingCommandListsWhenCreatingImme
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
MockCommandStreamReceiver mockCommandStreamReceiver(*neoDevice->executionEnvironment, neoDevice->getRootDeviceIndex(), neoDevice->getDeviceBitfield());
|
||||
mockCommandStreamReceiver.waitForCompletionWithTimeoutReturnValue = WaitStatus::GpuHang;
|
||||
@@ -1475,8 +1475,8 @@ HWTEST2_F(CommandListCreate, GivenGpuHangOnSynchronizingWhenCreatingImmediateCom
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
MockCommandStreamReceiver mockCommandStreamReceiver(*neoDevice->executionEnvironment, neoDevice->getRootDeviceIndex(), neoDevice->getDeviceBitfield());
|
||||
mockCommandStreamReceiver.waitForCompletionWithTimeoutReturnValue = WaitStatus::GpuHang;
|
||||
@@ -1526,8 +1526,8 @@ HWTEST2_F(CommandListCreate, GivenGpuHangOnSynchronizingWhenCreatingImmediateCom
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
MockCommandStreamReceiver mockCommandStreamReceiver(*neoDevice->executionEnvironment, neoDevice->getRootDeviceIndex(), neoDevice->getDeviceBitfield());
|
||||
Mock<CommandQueue> mockCommandQueue(device, &mockCommandStreamReceiver, &desc);
|
||||
@@ -1576,8 +1576,8 @@ HWTEST2_F(CommandListCreate, GivenGpuHangOnSynchronizingWhenCreatingImmediateCom
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
MockCommandStreamReceiver mockCommandStreamReceiver(*neoDevice->executionEnvironment, neoDevice->getRootDeviceIndex(), neoDevice->getDeviceBitfield());
|
||||
Mock<CommandQueue> mockCommandQueue(device, &mockCommandStreamReceiver, &desc);
|
||||
@@ -1626,8 +1626,8 @@ HWTEST_F(CommandListCreate, GivenGpuHangWhenCreatingImmediateCommandListAndAppen
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
returnValue = commandList->appendWaitOnEvents(1, &event, false, true);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, returnValue);
|
||||
@@ -1714,8 +1714,8 @@ HWTEST_F(CommandListCreate, GivenGpuHangAndEnabledFlushTaskSubmissionFlagWhenCre
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
MockCommandStreamReceiver mockCommandStreamReceiver(*neoDevice->executionEnvironment, neoDevice->getRootDeviceIndex(), neoDevice->getDeviceBitfield());
|
||||
mockCommandStreamReceiver.waitForCompletionWithTimeoutReturnValue = WaitStatus::GpuHang;
|
||||
@@ -1761,8 +1761,8 @@ TEST_F(CommandListCreate, whenCreatingImmCmdListWithSyncModeAndAppendResetEventT
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
commandList->appendEventReset(event);
|
||||
|
||||
@@ -1802,8 +1802,8 @@ TEST_F(CommandListCreate, whenCreatingImmCmdListWithASyncModeAndAppendSignalEven
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
commandList->appendSignalEvent(event);
|
||||
|
||||
@@ -1843,8 +1843,8 @@ TEST_F(CommandListCreate, whenCreatingImmCmdListWithASyncModeAndAppendBarrierThe
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
commandList->appendBarrier(event, 0, nullptr);
|
||||
|
||||
@@ -1887,8 +1887,8 @@ TEST_F(CommandListCreate, whenCreatingImmCmdListWithASyncModeAndCopyEngineAndApp
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
commandList->appendBarrier(event, 0, nullptr);
|
||||
|
||||
@@ -1930,8 +1930,8 @@ TEST_F(CommandListCreate, whenCreatingImmCmdListWithASyncModeAndAppendEventReset
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
commandList->appendEventReset(event);
|
||||
|
||||
|
||||
@@ -1171,8 +1171,8 @@ TEST_F(CommandListCreate, whenCreatingImmCmdListWithASyncModeAndAppendSignalEven
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
commandList->appendSignalEvent(event);
|
||||
|
||||
@@ -1212,8 +1212,8 @@ TEST_F(CommandListCreate, whenCreatingImmCmdListWithASyncModeAndAppendBarrierThe
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
commandList->appendBarrier(event, 0, nullptr);
|
||||
|
||||
@@ -1255,8 +1255,8 @@ TEST_F(CommandListCreate, whenCreatingImmCmdListWithASyncModeAndAppendEventReset
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
commandList->appendEventReset(event);
|
||||
|
||||
|
||||
@@ -378,10 +378,10 @@ HWTEST2_F(CommandListTest, givenImmediateCommandListWhenFlushImmediateThenOverri
|
||||
auto event = std::unique_ptr<Event>(static_cast<Event *>(L0::Event::create<typename FamilyType::TimestampPacketType>(eventPool.get(), &eventDesc, device)));
|
||||
|
||||
MockCommandStreamReceiver mockCommandStreamReceiver(*neoDevice->executionEnvironment, neoDevice->getRootDeviceIndex(), neoDevice->getDeviceBitfield());
|
||||
cmdList.csr = event->csr;
|
||||
event->csr = &mockCommandStreamReceiver;
|
||||
cmdList.csr = event->csrs[0];
|
||||
event->csrs[0] = &mockCommandStreamReceiver;
|
||||
cmdList.flushImmediate(ZE_RESULT_SUCCESS, false, false, false, event->toHandle());
|
||||
EXPECT_EQ(event->csr, cmdList.csr);
|
||||
EXPECT_EQ(event->csrs[0], cmdList.csr);
|
||||
}
|
||||
|
||||
HWTEST2_F(CommandListTest,
|
||||
|
||||
@@ -270,8 +270,8 @@ HWTEST_F(L0DebuggerSimpleTest, givenUseCsrImmediateSubmissionEnabledWithImmediat
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
returnValue = commandList->appendWaitOnEvents(1, &event, false, true);
|
||||
EXPECT_EQ(returnValue, ZE_RESULT_SUCCESS);
|
||||
@@ -334,8 +334,8 @@ HWTEST_F(L0DebuggerSimpleTest, givenUseCsrImmediateSubmissionDisabledWithImmedia
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(static_cast<DeviceImp *>(device)->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
|
||||
returnValue = commandList->appendWaitOnEvents(1, &event, false, true);
|
||||
EXPECT_EQ(returnValue, ZE_RESULT_SUCCESS);
|
||||
|
||||
@@ -259,8 +259,8 @@ TEST_F(EventPoolCreate, givenAnEventIsCreatedFromThisEventPoolThenEventContainsD
|
||||
eventPool->createEvent(&eventDesc, &event);
|
||||
|
||||
std::unique_ptr<Event> eventObject(static_cast<Event *>(L0::Event::fromHandle(event)));
|
||||
ASSERT_NE(nullptr, eventObject->csr);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csr);
|
||||
ASSERT_NE(nullptr, eventObject->csrs[0]);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, eventObject->csrs[0]);
|
||||
}
|
||||
|
||||
TEST_F(EventPoolCreate, GivenNoDeviceThenEventPoolIsCreated) {
|
||||
@@ -1298,8 +1298,8 @@ TEST_F(EventCreate, givenAnEventCreatedThenTheEventHasTheDeviceCommandStreamRece
|
||||
|
||||
std::unique_ptr<Event> event(static_cast<Event *>(getHelper<L0GfxCoreHelper>().createEvent(eventPool.get(), &eventDesc, device)));
|
||||
ASSERT_NE(nullptr, event);
|
||||
ASSERT_NE(nullptr, event->csr);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, event->csr);
|
||||
ASSERT_NE(nullptr, event->csrs[0]);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, event->csrs[0]);
|
||||
}
|
||||
|
||||
TEST_F(EventCreate, givenEventWhenSignaledAndResetFromTheHostThenCorrectDataAndOffsetAreSet) {
|
||||
@@ -1460,7 +1460,7 @@ TEST_F(EventSynchronizeTest, GivenGpuHangWhenHostSynchronizeIsCalledThenDeviceLo
|
||||
const auto csr = std::make_unique<MockCommandStreamReceiver>(*neoDevice->getExecutionEnvironment(), 0, neoDevice->getDeviceBitfield());
|
||||
csr->isGpuHangDetectedReturnValue = true;
|
||||
|
||||
event->csr = csr.get();
|
||||
event->csrs[0] = csr.get();
|
||||
event->gpuHangCheckPeriod = 0ms;
|
||||
|
||||
constexpr uint64_t timeout = std::numeric_limits<std::uint64_t>::max();
|
||||
@@ -1473,7 +1473,7 @@ TEST_F(EventSynchronizeTest, GivenNoGpuHangAndOneNanosecondTimeoutWhenHostSynchr
|
||||
const auto csr = std::make_unique<MockCommandStreamReceiver>(*neoDevice->getExecutionEnvironment(), 0, neoDevice->getDeviceBitfield());
|
||||
csr->isGpuHangDetectedReturnValue = false;
|
||||
|
||||
event->csr = csr.get();
|
||||
event->csrs[0] = csr.get();
|
||||
event->gpuHangCheckPeriod = 0ms;
|
||||
|
||||
constexpr uint64_t timeoutNanoseconds = 1;
|
||||
@@ -1484,7 +1484,7 @@ TEST_F(EventSynchronizeTest, GivenNoGpuHangAndOneNanosecondTimeoutWhenHostSynchr
|
||||
|
||||
TEST_F(EventSynchronizeTest, GivenLongPeriodOfGpuCheckAndOneNanosecondTimeoutWhenHostSynchronizeIsCalledThenResultNotReadyIsReturnedDueToTimeout) {
|
||||
const auto csr = std::make_unique<MockCommandStreamReceiver>(*neoDevice->getExecutionEnvironment(), 0, neoDevice->getDeviceBitfield());
|
||||
event->csr = csr.get();
|
||||
event->csrs[0] = csr.get();
|
||||
event->gpuHangCheckPeriod = 50000000ms;
|
||||
|
||||
constexpr uint64_t timeoutNanoseconds = 1;
|
||||
@@ -2804,8 +2804,8 @@ HWTEST_F(EventTests,
|
||||
auto event = whiteboxCast(getHelper<L0GfxCoreHelper>().createEvent(eventPool.get(), &eventDesc, device));
|
||||
|
||||
ASSERT_NE(event, nullptr);
|
||||
ASSERT_NE(nullptr, event->csr);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, event->csr);
|
||||
ASSERT_NE(nullptr, event->csrs[0]);
|
||||
ASSERT_EQ(device->getNEODevice()->getDefaultEngine().commandStreamReceiver, event->csrs[0]);
|
||||
event->setUsingContextEndOffset(false);
|
||||
|
||||
size_t eventCompletionOffset = event->getContextStartOffset();
|
||||
@@ -2825,7 +2825,7 @@ HWTEST_F(EventTests,
|
||||
}
|
||||
};
|
||||
|
||||
auto ultCsr = static_cast<UltCommandStreamReceiver<FamilyType> *>(event->csr);
|
||||
auto ultCsr = static_cast<UltCommandStreamReceiver<FamilyType> *>(event->csrs[0]);
|
||||
VariableBackup<std::function<void(GraphicsAllocation & gfxAllocation)>> backupCsrDownloadImpl(&ultCsr->downloadAllocationImpl);
|
||||
ultCsr->downloadAllocationImpl = [&downloadAllocationTrack](GraphicsAllocation &gfxAllocation) {
|
||||
downloadAllocationTrack[&gfxAllocation]++;
|
||||
@@ -2859,7 +2859,7 @@ HWTEST_F(EventTests, GivenEventIsReadyToDownloadAllAlocationsWhenDownloadAllocat
|
||||
|
||||
auto status = event->queryStatus();
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, status);
|
||||
EXPECT_FALSE(static_cast<UltCommandStreamReceiver<FamilyType> *>(event->csr)->downloadAllocationsCalled);
|
||||
EXPECT_FALSE(static_cast<UltCommandStreamReceiver<FamilyType> *>(event->csrs[0])->downloadAllocationsCalled);
|
||||
event->destroy();
|
||||
}
|
||||
|
||||
@@ -2977,7 +2977,7 @@ struct MockEventCompletion : public L0::EventImp<uint32_t> {
|
||||
totalEventSize = eventPool->getEventSize();
|
||||
eventPoolOffset = index * totalEventSize;
|
||||
hostAddress = reinterpret_cast<void *>(baseHostAddr + eventPoolOffset);
|
||||
csr = neoDevice->getDefaultEngine().commandStreamReceiver;
|
||||
csrs[0] = neoDevice->getDefaultEngine().commandStreamReceiver;
|
||||
|
||||
maxKernelCount = eventPool->getMaxKernelCount();
|
||||
maxPacketCount = eventPool->getEventMaxPackets();
|
||||
@@ -3008,6 +3008,25 @@ TEST_F(EventTests, WhenQueryingStatusAfterHostSignalThenDontAccessMemoryAndRetur
|
||||
EXPECT_EQ(event->assignKernelEventCompletionDataCounter, 0u);
|
||||
}
|
||||
|
||||
TEST_F(EventTests, whenAppendAdditionalCsrThenStoreUniqueCsr) {
|
||||
auto csr1 = reinterpret_cast<NEO::CommandStreamReceiver *>(0x1234);
|
||||
auto csr2 = reinterpret_cast<NEO::CommandStreamReceiver *>(0x5678);
|
||||
|
||||
auto event = whiteboxCast(getHelper<L0GfxCoreHelper>().createEvent(eventPool.get(), &eventDesc, device));
|
||||
EXPECT_EQ(event->csrs.size(), 1u);
|
||||
|
||||
event->appendAdditionalCsr(csr1);
|
||||
EXPECT_EQ(event->csrs.size(), 2u);
|
||||
|
||||
event->appendAdditionalCsr(csr2);
|
||||
EXPECT_EQ(event->csrs.size(), 3u);
|
||||
|
||||
event->appendAdditionalCsr(csr1);
|
||||
EXPECT_EQ(event->csrs.size(), 3u);
|
||||
|
||||
event->destroy();
|
||||
}
|
||||
|
||||
TEST_F(EventTests, WhenQueryingStatusAfterHostSignalThatFailedThenAccessMemoryAndReturnSuccess) {
|
||||
auto event = std::make_unique<MockEventCompletion>(eventPool.get(), 1u, device);
|
||||
event->shouldHostEventSetValueFail = true;
|
||||
@@ -3116,12 +3135,12 @@ TEST_F(EventSynchronizeTest, whenEventSetCsrThenCorrectCsrSet) {
|
||||
auto defaultCsr = neoDevice->getDefaultEngine().commandStreamReceiver;
|
||||
const auto mockCsr = std::make_unique<MockCommandStreamReceiver>(*neoDevice->getExecutionEnvironment(), 0, neoDevice->getDeviceBitfield());
|
||||
|
||||
EXPECT_EQ(event->csr, defaultCsr);
|
||||
EXPECT_EQ(event->csrs[0], defaultCsr);
|
||||
event->setCsr(mockCsr.get());
|
||||
EXPECT_EQ(event->csr, mockCsr.get());
|
||||
EXPECT_EQ(event->csrs[0], mockCsr.get());
|
||||
|
||||
event->reset();
|
||||
EXPECT_EQ(event->csr, defaultCsr);
|
||||
EXPECT_EQ(event->csrs[0], defaultCsr);
|
||||
}
|
||||
|
||||
template <int32_t multiTile, int32_t signalRemainingPackets>
|
||||
|
||||
Reference in New Issue
Block a user