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) {
|
TEST_F(clSetKernelArgSVMPointerTests, GivenSvmAndValidArgValueWhenSettingSameKernelArgThenSetArgSvmAllocCalledOnlyWhenNeeded) {
|
||||||
const ClDeviceInfo &devInfo = pDevice->getDeviceInfo();
|
const ClDeviceInfo &devInfo = pDevice->getDeviceInfo();
|
||||||
auto mockSvmManager = reinterpret_cast<MockSVMAllocsManager *>(pMockKernel->getContext().getSVMAllocsManager());
|
|
||||||
|
|
||||||
if (devInfo.svmCapabilities != 0) {
|
if (devInfo.svmCapabilities != 0) {
|
||||||
|
auto mockSvmManager = reinterpret_cast<MockSVMAllocsManager *>(pMockKernel->getContext().getSVMAllocsManager());
|
||||||
EXPECT_EQ(0u, pMockKernel->setArgSvmAllocCalls);
|
EXPECT_EQ(0u, pMockKernel->setArgSvmAllocCalls);
|
||||||
void *const ptrSvm = clSVMAlloc(pContext, CL_MEM_READ_WRITE, 256, 4);
|
void *const ptrSvm = clSVMAlloc(pContext, CL_MEM_READ_WRITE, 256, 4);
|
||||||
EXPECT_NE(nullptr, ptrSvm);
|
EXPECT_NE(nullptr, ptrSvm);
|
||||||
@ -314,4 +313,41 @@ TEST_F(clSetKernelArgSVMPointerTests, GivenSvmAndValidArgValueWhenSettingSameKer
|
|||||||
clSVMFree(pContext, ptrSvm);
|
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
|
} // namespace ULT
|
||||||
|
Reference in New Issue
Block a user