Add a clMemBlockingFreeINTEL function

Resolves: NEO-4482

Change-Id: I201c5ab93b3f54a3980dd1fb50be82a4a66daa67
Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
Lukasz Jobczyk
2020-03-20 11:23:48 +01:00
committed by sys_ocldev
parent 67d5c28bb1
commit b546e89f99
4 changed files with 32 additions and 5 deletions

View File

@ -3576,10 +3576,9 @@ void *clSharedMemAllocINTEL(
return neoContext->getSVMAllocsManager()->createSharedUnifiedMemoryAllocation(neoContext->getDevice(0)->getRootDeviceIndex(), size, unifiedMemoryProperties, neoContext->getSpecialQueue());
}
cl_int clMemFreeINTEL(
cl_context context,
const void *ptr) {
cl_int clMemFreeCommon(cl_context context,
const void *ptr,
bool blocking) {
Context *neoContext = nullptr;
auto retVal = validateObjects(WithCastToInternal(context, &neoContext));
@ -3587,7 +3586,7 @@ cl_int clMemFreeINTEL(
return retVal;
}
if (ptr && !neoContext->getSVMAllocsManager()->freeSVMAlloc(const_cast<void *>(ptr))) {
if (ptr && !neoContext->getSVMAllocsManager()->freeSVMAlloc(const_cast<void *>(ptr), blocking)) {
return CL_INVALID_VALUE;
}
@ -3598,6 +3597,18 @@ cl_int clMemFreeINTEL(
return CL_SUCCESS;
}
cl_int clMemFreeINTEL(
cl_context context,
const void *ptr) {
return clMemFreeCommon(context, ptr, false);
}
cl_int clMemBlockingFreeINTEL(
cl_context context,
void *ptr) {
return clMemFreeCommon(context, ptr, true);
}
cl_int clGetMemAllocInfoINTEL(
cl_context context,
const void *ptr,
@ -4003,6 +4014,7 @@ void *CL_API_CALL clGetExtensionFunctionAddress(const char *funcName) {
RETURN_FUNC_PTR_IF_EXIST(clDeviceMemAllocINTEL);
RETURN_FUNC_PTR_IF_EXIST(clSharedMemAllocINTEL);
RETURN_FUNC_PTR_IF_EXIST(clMemFreeINTEL);
RETURN_FUNC_PTR_IF_EXIST(clMemBlockingFreeINTEL);
RETURN_FUNC_PTR_IF_EXIST(clGetMemAllocInfoINTEL);
RETURN_FUNC_PTR_IF_EXIST(clSetKernelArgMemPointerINTEL);
RETURN_FUNC_PTR_IF_EXIST(clEnqueueMemsetINTEL);

View File

@ -952,6 +952,10 @@ cl_int clMemFreeINTEL(
cl_context context,
const void *ptr);
cl_int clMemBlockingFreeINTEL(
cl_context context,
void *ptr);
cl_int clGetMemAllocInfoINTEL(
cl_context context,
const void *ptr,

View File

@ -118,6 +118,11 @@ TEST_F(clGetExtensionFunctionAddressTests, GivenClMemFreeINTELWhenGettingExtensi
EXPECT_EQ(retVal, reinterpret_cast<void *>(clMemFreeINTEL));
}
TEST_F(clGetExtensionFunctionAddressTests, GivenClMemBlockingFreeINTELWhenGettingExtensionFunctionThenCorrectAddressIsReturned) {
auto retVal = clGetExtensionFunctionAddress("clMemBlockingFreeINTEL");
EXPECT_EQ(retVal, reinterpret_cast<void *>(clMemBlockingFreeINTEL));
}
TEST_F(clGetExtensionFunctionAddressTests, GivenClGetMemAllocInfoINTELWhenGettingExtensionFunctionThenCorrectAddressIsReturned) {
auto retVal = clGetExtensionFunctionAddress("clGetMemAllocInfoINTEL");
EXPECT_EQ(retVal, reinterpret_cast<void *>(clGetMemAllocInfoINTEL));

View File

@ -134,6 +134,12 @@ TEST(clUnifiedSharedMemoryTests, whenClMemFreeINTELisCalledWithNullPointerThenNo
EXPECT_EQ(CL_SUCCESS, retVal);
}
TEST(clUnifiedSharedMemoryTests, whenClMemBlockingFreeINTELisCalledWithNullPointerThenNoActionOccurs) {
MockContext mockContext;
auto retVal = clMemBlockingFreeINTEL(&mockContext, nullptr);
EXPECT_EQ(CL_SUCCESS, retVal);
}
TEST(clUnifiedSharedMemoryTests, whenClMemFreeINTELisCalledWithValidUmPointerThenMemoryIsFreed) {
MockContext mockContext;
cl_int retVal = CL_SUCCESS;