From f65d2aeb87eef5c9ce02226bac7013f64e75a372 Mon Sep 17 00:00:00 2001 From: Lukasz Jobczyk Date: Wed, 7 Sep 2022 16:49:50 +0000 Subject: [PATCH] Split copy along single dimension Signed-off-by: Lukasz Jobczyk --- opencl/source/command_queue/enqueue_common.h | 31 +++++-------------- .../command_queue_hw_2_tests.cpp | 7 +++-- 2 files changed, 12 insertions(+), 26 deletions(-) diff --git a/opencl/source/command_queue/enqueue_common.h b/opencl/source/command_queue/enqueue_common.h index d27909b613..154429f1b8 100644 --- a/opencl/source/command_queue/enqueue_common.h +++ b/opencl/source/command_queue/enqueue_common.h @@ -1155,35 +1155,20 @@ cl_int CommandQueueHw::enqueueBlitSplit(MultiDispatchInfo &dispatchIn TimestampPacketContainer previousEnqueueNode; previousEnqueueNode.swapNodes(*this->timestampPacketContainer); - auto srcOffset = dispatchInfo.peekBuiltinOpParams().srcOffset; - auto dstOffset = dispatchInfo.peekBuiltinOpParams().dstOffset; - auto size = dispatchInfo.peekBuiltinOpParams().size; + auto srcOffset = dispatchInfo.peekBuiltinOpParams().srcOffset.x; + auto dstOffset = dispatchInfo.peekBuiltinOpParams().dstOffset.x; + auto size = dispatchInfo.peekBuiltinOpParams().size.x; auto remainingSize = size; for (size_t i = 0; i < copyEngines.size(); i++) { - auto localSizeX = remainingSize.x / (copyEngines.size() - i); - auto localSizeY = remainingSize.y / (copyEngines.size() - i); - auto localSizeZ = remainingSize.z / (copyEngines.size() - i); - + auto localSize = remainingSize / (copyEngines.size() - i); auto localParams = dispatchInfo.peekBuiltinOpParams(); - - localParams.size.x = localSizeX; - localParams.size.y = localSizeY; - localParams.size.z = localSizeZ; - - localParams.srcOffset.x = (srcOffset.x + size.x - remainingSize.x); - localParams.srcOffset.y = (srcOffset.y + size.y - remainingSize.y); - localParams.srcOffset.z = (srcOffset.z + size.z - remainingSize.z); - - localParams.dstOffset.x = (dstOffset.x + size.x - remainingSize.x); - localParams.dstOffset.y = (dstOffset.y + size.y - remainingSize.y); - localParams.dstOffset.z = (dstOffset.z + size.z - remainingSize.z); + localParams.size.x = localSize; + localParams.srcOffset.x = (srcOffset + size - remainingSize); + localParams.dstOffset.x = (dstOffset + size - remainingSize); dispatchInfo.setBuiltinOpParams(localParams); - - remainingSize.x -= localSizeX; - remainingSize.y -= localSizeY; - remainingSize.z -= localSizeZ; + remainingSize -= localSize; this->timestampPacketContainer->assignAndIncrementNodesRefCounts(previousEnqueueNode); diff --git a/opencl/test/unit_test/command_queue/command_queue_hw_2_tests.cpp b/opencl/test/unit_test/command_queue/command_queue_hw_2_tests.cpp index 43e805760b..edb15829f1 100644 --- a/opencl/test/unit_test/command_queue/command_queue_hw_2_tests.cpp +++ b/opencl/test/unit_test/command_queue/command_queue_hw_2_tests.cpp @@ -353,7 +353,7 @@ HWTEST_F(IoqCommandQueueHwBlitTest, givenSplitBcsCopyWhenEnqueueReadThenEnqueueB DebugManager.flags.UpdateTaskCountFromWait.set(3); auto memoryManager = static_cast(pDevice->getMemoryManager()); memoryManager->returnFakeAllocation = true; - auto cmdQHw = static_cast *>(this->pCmdQ); + auto cmdQHw = std::make_unique>(context, pClDevice, nullptr); auto csr1 = std::make_unique>(*pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield()); std::unique_ptr osContext1(OsContext::create(pDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->osInterface.get(), 0, @@ -391,8 +391,9 @@ HWTEST_F(IoqCommandQueueHwBlitTest, givenSplitBcsCopyWhenEnqueueReadThenEnqueueB EXPECT_EQ(cmdQHw->getGpgpuCommandStreamReceiver().peekTaskCount(), 0u); EXPECT_EQ(cmdQHw->getBcsCommandStreamReceiver(aub_stream::EngineType::ENGINE_BCS)->peekTaskCount(), 0u); - pCmdQ->release(); - pCmdQ = nullptr; + EXPECT_EQ(cmdQHw->kernelParams.size.x, 8 * MemoryConstants::megaByte); + + const_cast &>(cmdQHw->timestampPacketContainer->peekNodes()).clear(); } HWTEST_F(IoqCommandQueueHwBlitTest, givenSplitBcsCopyWhenEnqueueBlockingReadThenEnqueueBlitSplit) {