mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Improve caching in clSetKernelArgSVMPointer 3/n
Add missing ult for 2/n Related-To: NEO-6737 Signed-off-by: Dominik Dabek <dominik.dabek@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
e6460e5534
commit
eef82189e5
@ -211,9 +211,8 @@ TEST_F(clSetKernelArgSVMPointerTests, GivenSvmAndPointerWithInvalidOffsetWhenSet
|
||||
|
||||
TEST_F(clSetKernelArgSVMPointerTests, GivenSvmAndValidArgValueWhenSettingSameKernelArgThenSetArgSvmAllocCalledOnlyWhenNeeded) {
|
||||
const ClDeviceInfo &devInfo = pDevice->getDeviceInfo();
|
||||
auto mockSvmManager = reinterpret_cast<MockSVMAllocsManager *>(pMockKernel->getContext().getSVMAllocsManager());
|
||||
|
||||
if (devInfo.svmCapabilities != 0) {
|
||||
auto mockSvmManager = reinterpret_cast<MockSVMAllocsManager *>(pMockKernel->getContext().getSVMAllocsManager());
|
||||
EXPECT_EQ(0u, pMockKernel->setArgSvmAllocCalls);
|
||||
void *const ptrSvm = clSVMAlloc(pContext, CL_MEM_READ_WRITE, 256, 4);
|
||||
EXPECT_NE(nullptr, ptrSvm);
|
||||
@ -314,4 +313,41 @@ TEST_F(clSetKernelArgSVMPointerTests, GivenSvmAndValidArgValueWhenSettingSameKer
|
||||
clSVMFree(pContext, ptrSvm);
|
||||
}
|
||||
}
|
||||
TEST_F(clSetKernelArgSVMPointerTests, GivenSvmAndValidArgValueWhenAllocIdCacheHitThenAllocIdMemoryManagerCounterIsUpdated) {
|
||||
const ClDeviceInfo &devInfo = pDevice->getDeviceInfo();
|
||||
if (devInfo.svmCapabilities != 0) {
|
||||
auto mockSvmManager = reinterpret_cast<MockSVMAllocsManager *>(pMockKernel->getContext().getSVMAllocsManager());
|
||||
EXPECT_EQ(0u, pMockKernel->setArgSvmAllocCalls);
|
||||
void *ptrSvm = clSVMAlloc(pContext, CL_MEM_READ_WRITE, 256, 4);
|
||||
EXPECT_NE(nullptr, ptrSvm);
|
||||
auto callCounter = 0u;
|
||||
// first set arg - called
|
||||
auto retVal = clSetKernelArgSVMPointer(
|
||||
pMockMultiDeviceKernel, // cl_kernel kernel
|
||||
0, // cl_uint arg_index
|
||||
ptrSvm // const void *arg_value
|
||||
);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
EXPECT_EQ(++callCounter, pMockKernel->setArgSvmAllocCalls);
|
||||
|
||||
EXPECT_EQ(0u, mockSvmManager->allocationsCounter);
|
||||
EXPECT_EQ(mockSvmManager->allocationsCounter, pMockKernel->getKernelArguments()[0].allocIdMemoryManagerCounter);
|
||||
|
||||
++mockSvmManager->allocationsCounter;
|
||||
|
||||
// second set arg - cache hit on same allocId, updates allocIdMemoryManagerCounter
|
||||
retVal = clSetKernelArgSVMPointer(
|
||||
pMockMultiDeviceKernel, // cl_kernel kernel
|
||||
0, // cl_uint arg_index
|
||||
ptrSvm // const void *arg_value
|
||||
);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
EXPECT_EQ(callCounter, pMockKernel->setArgSvmAllocCalls);
|
||||
|
||||
EXPECT_EQ(1u, mockSvmManager->allocationsCounter);
|
||||
EXPECT_EQ(mockSvmManager->allocationsCounter, pMockKernel->getKernelArguments()[0].allocIdMemoryManagerCounter);
|
||||
|
||||
clSVMFree(pContext, ptrSvm);
|
||||
}
|
||||
}
|
||||
} // namespace ULT
|
||||
|
Reference in New Issue
Block a user