Adapt direct submission controller to implicit scaling

Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
Lukasz Jobczyk
2022-03-18 14:59:16 +00:00
committed by Compute-Runtime-Automation
parent 6ee5c0f677
commit e870643c41
2 changed files with 32 additions and 3 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2021 Intel Corporation
* Copyright (C) 2019-2022 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -78,7 +78,7 @@ void DirectSubmissionController::checkNewSubmissions() {
auto &state = directSubmission.second;
auto taskCount = csr->peekTaskCount();
if (taskCount <= *csr->getTagAddress()) {
if (csr->testTaskCountReady(csr->getTagAddress(), taskCount)) {
if (taskCount == state.taskCount) {
if (state.isStopped) {
continue;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2021 Intel Corporation
* Copyright (C) 2019-2022 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -74,6 +74,35 @@ TEST(DirectSubmissionControllerTests, givenDirectSubmissionControllerWhenRegiste
controller.unregisterDirectSubmission(&csr);
}
TEST(DirectSubmissionControllerTests, givenDirectSubmissionWithMultiplePartitionsWhenCheckNewSubmissionThenCheckAllPartitions) {
MockExecutionEnvironment executionEnvironment;
executionEnvironment.prepareRootDeviceEnvironments(1);
executionEnvironment.initializeMemoryManager();
DeviceBitfield deviceBitfield(0b11);
MockCommandStreamReceiver csr(executionEnvironment, 0, deviceBitfield);
csr.postSyncWriteOffset = 32u;
csr.activePartitions = 2;
csr.initializeTagAllocation();
*csr.tagAddress = 5u;
auto nextPartitionTagAddress = ptrOffset(csr.tagAddress, csr.getPostSyncWriteOffset());
*nextPartitionTagAddress = 2u;
csr.taskCount.store(5u);
DirectSubmissionControllerMock controller;
controller.keepControlling.store(false);
controller.directSubmissionControllingThread->join();
controller.directSubmissionControllingThread.reset();
controller.registerDirectSubmission(&csr);
controller.checkNewSubmissions();
EXPECT_FALSE(controller.directSubmissions[&csr].isStopped);
EXPECT_EQ(controller.directSubmissions[&csr].taskCount, 0u);
controller.unregisterDirectSubmission(&csr);
}
TEST(DirectSubmissionControllerTests, givenDirectSubmissionControllerWhenTimeoutThenDirectSubmissionsAreChecked) {
MockExecutionEnvironment executionEnvironment;
executionEnvironment.prepareRootDeviceEnvironments(1);