From 31fc4a6a21cc0ae80eb48a72a5062b5349a0d08a Mon Sep 17 00:00:00 2001 From: Eric Xu Date: Fri, 15 Jul 2022 10:13:15 -0700 Subject: [PATCH 1/2] Only pass buffer location property if in simulation environment This addresses https://github.com/intel/fpga-runtime-for-opencl/issues/147#issuecomment-1185725157 --- src/acl_usm.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/acl_usm.cpp b/src/acl_usm.cpp index 211e86f5..14eafde7 100644 --- a/src/acl_usm.cpp +++ b/src/acl_usm.cpp @@ -150,8 +150,12 @@ CL_API_ENTRY void *CL_API_CALL clHostMemAllocINTEL( { auto mmd_properties_it = mmd_properties.begin(); if (mem_id) { - *mmd_properties_it++ = AOCL_MMD_MEM_PROPERTIES_BUFFER_LOCATION; - *mmd_properties_it++ = *mem_id; + int use_offline_only; + acl_get_offline_device_user_setting(&use_offline_only); + if (use_offline_only == ACL_CONTEXT_MPSIM) { + *mmd_properties_it++ = AOCL_MMD_MEM_PROPERTIES_BUFFER_LOCATION; + *mmd_properties_it++ = *mem_id; + } } *mmd_properties_it++ = 0; } @@ -436,8 +440,12 @@ clSharedMemAllocINTEL(cl_context context, cl_device_id device, { auto mmd_properties_it = mmd_properties.begin(); if (mem_id) { - *mmd_properties_it++ = AOCL_MMD_MEM_PROPERTIES_BUFFER_LOCATION; - *mmd_properties_it++ = *mem_id; + int use_offline_only; + acl_get_offline_device_user_setting(&use_offline_only); + if (use_offline_only == ACL_CONTEXT_MPSIM) { + *mmd_properties_it++ = AOCL_MMD_MEM_PROPERTIES_BUFFER_LOCATION; + *mmd_properties_it++ = *mem_id; + } } *mmd_properties_it++ = 0; } From 71fe1c4f2f8172f5db8b46cd3b0bed3b0d20862e Mon Sep 17 00:00:00 2001 From: Peter Colberg Date: Wed, 20 Jul 2022 11:39:15 -0400 Subject: [PATCH 2/2] Fix regression with empty property list for USM allocations A board's MMD may not support passing property lists containing only a null terminator to aocl_mmd_host_alloc() or aocl_mmd_shared_alloc(). This resolves a regression introducted in https://github.com/intel/fpga-runtime-for-opencl/pull/141 Signed-off-by: Peter Colberg --- src/acl_usm.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/acl_usm.cpp b/src/acl_usm.cpp index 14eafde7..695117b1 100644 --- a/src/acl_usm.cpp +++ b/src/acl_usm.cpp @@ -168,8 +168,9 @@ CL_API_ENTRY void *CL_API_CALL clHostMemAllocINTEL( } int error = 0; - void *mem = acl_get_hal()->host_alloc(devices, size, alignment, - mmd_properties.data(), &error); + void *mem = acl_get_hal()->host_alloc( + devices, size, alignment, + mmd_properties[0] ? mmd_properties.data() : nullptr, &error); if (error) { acl_free(usm_alloc); switch (error) { @@ -458,8 +459,9 @@ clSharedMemAllocINTEL(cl_context context, cl_device_id device, } int error; - void *mem = acl_get_hal()->shared_alloc(device, size, alignment, - mmd_properties.data(), &error); + void *mem = acl_get_hal()->shared_alloc( + device, size, alignment, + mmd_properties[0] ? mmd_properties.data() : nullptr, &error); if (mem == NULL) { acl_free(usm_alloc); switch (error) {