Align sync buffer address to max atomic type size

Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
This commit is contained in:
Filip Hazubski
2021-11-19 14:52:40 +00:00
committed by Compute-Runtime-Automation
parent 6ece3534e8
commit cd3930251e
3 changed files with 18 additions and 7 deletions

View File

@@ -104,10 +104,9 @@ class SyncBufferHandlerTest : public SyncBufferEnqueueHandlerTest {
const cl_uint workDim = 1;
const size_t gwOffset[3] = {0, 0, 0};
const size_t lws[3] = {10, 1, 1};
size_t workgroupCount[3] = {10, 1, 1};
size_t globalWorkSize[3] = {100, 1, 1};
size_t workItemsCount = 10;
const size_t workItemsCount = 16;
const size_t lws[3] = {workItemsCount, 1, 1};
size_t workgroupCount[3] = {workItemsCount, 1, 1};
std::unique_ptr<MockKernelWithInternals> kernelInternals;
MockKernel *kernel;
MockCommandQueue *commandQueue;
@@ -128,6 +127,19 @@ HWTEST_TEMPLATED_F(SyncBufferHandlerTest, GivenAllocateSyncBufferPatchAndConcurr
static_cast<UltCommandStreamReceiver<FamilyType> *>(pCsr)->latestSentTaskCount);
}
HWTEST_TEMPLATED_F(SyncBufferHandlerTest, GivenAllocateSyncBufferPatchAndConcurrentKernelWhenEnqueuingKernelThenSyncBufferOffsetIsProperlyAligned) {
patchAllocateSyncBuffer();
workgroupCount[0] = 1;
enqueueNDCount();
auto syncBufferHandler = getSyncBufferHandler();
EXPECT_EQ(CommonConstants::maximalSizeOfAtomicType, syncBufferHandler->usedBufferSize);
enqueueNDCount();
EXPECT_EQ(2u * CommonConstants::maximalSizeOfAtomicType, syncBufferHandler->usedBufferSize);
}
HWTEST_TEMPLATED_F(SyncBufferHandlerTest, GivenConcurrentKernelWithoutAllocateSyncBufferPatchWhenEnqueuingConcurrentKernelThenSyncBufferIsNotCreated) {
auto retVal = enqueueNDCount();
EXPECT_EQ(CL_SUCCESS, retVal);
@@ -153,7 +165,6 @@ HWTEST_TEMPLATED_F(SyncBufferHandlerTest, GivenConcurrentKernelWithAllocateSyncB
HWTEST_TEMPLATED_F(SyncBufferHandlerTest, GivenMaxWorkgroupCountWhenEnqueuingConcurrentKernelThenSuccessIsReturned) {
auto maxWorkGroupCount = kernel->getMaxWorkGroupCount(workDim, lws, commandQueue);
workgroupCount[0] = maxWorkGroupCount;
globalWorkSize[0] = maxWorkGroupCount * lws[0];
auto retVal = enqueueNDCount();
EXPECT_EQ(CL_SUCCESS, retVal);
@@ -162,7 +173,6 @@ HWTEST_TEMPLATED_F(SyncBufferHandlerTest, GivenMaxWorkgroupCountWhenEnqueuingCon
HWTEST_TEMPLATED_F(SyncBufferHandlerTest, GivenTooHighWorkgroupCountWhenEnqueuingConcurrentKernelThenErrorIsReturned) {
size_t maxWorkGroupCount = kernel->getMaxWorkGroupCount(workDim, lws, commandQueue);
workgroupCount[0] = maxWorkGroupCount + 1;
globalWorkSize[0] = maxWorkGroupCount * lws[0];
auto retVal = enqueueNDCount();
EXPECT_EQ(CL_INVALID_VALUE, retVal);