Skip to content

Commit 82ac98f

Browse files
authoredApr 3, 2023
[SYCL][CUDA] Returns minimum mandated capabilities for atomic_fence device queries (#8901)
Currently, we were returning an error because it was unimplemented. I believe it makes more sense to return minimum mandated capabilities, as we do in other backends (e.g. HIP). Signed-off-by: Maronas, Marcos <marcos.maronas@intel.com>
1 parent 8d07b4d commit 82ac98f

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed
 

‎sycl/plugins/cuda/pi_cuda.cpp

+21-6
Original file line numberDiff line numberDiff line change
@@ -1303,12 +1303,27 @@ pi_result cuda_piDeviceGetInfo(pi_device device, pi_device_info param_name,
13031303
return getInfo(param_value_size, param_value, param_value_size_ret,
13041304
capabilities);
13051305
}
1306-
case PI_EXT_DEVICE_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES:
1307-
case PI_EXT_DEVICE_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES:
1308-
// There is no way to query this in the backend
1309-
setErrorMessage("CUDA backend does not support this query",
1310-
PI_ERROR_INVALID_ARG_VALUE);
1311-
return PI_ERROR_PLUGIN_SPECIFIC_ERROR;
1306+
case PI_EXT_DEVICE_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES: {
1307+
// SYCL2020 4.6.4.2 minimum mandated capabilities for
1308+
// atomic_fence_order_capabilities.
1309+
pi_memory_order_capabilities capabilities =
1310+
PI_MEMORY_ORDER_RELAXED | PI_MEMORY_ORDER_ACQUIRE |
1311+
PI_MEMORY_ORDER_RELEASE | PI_MEMORY_ORDER_ACQ_REL;
1312+
return getInfo(param_value_size, param_value, param_value_size_ret,
1313+
capabilities);
1314+
}
1315+
case PI_EXT_DEVICE_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES: {
1316+
// SYCL2020 4.6.4.2 minimum mandated capabilities for
1317+
// atomic_fence/memory_scope_capabilities.
1318+
// Because scopes are hierarchical, wider scopes support all narrower
1319+
// scopes. At a minimum, each device must support WORK_ITEM, SUB_GROUP and
1320+
// WORK_GROUP. (https://github.com/KhronosGroup/SYCL-Docs/pull/382)
1321+
pi_memory_scope_capabilities capabilities = PI_MEMORY_SCOPE_WORK_ITEM |
1322+
PI_MEMORY_SCOPE_SUB_GROUP |
1323+
PI_MEMORY_SCOPE_WORK_GROUP;
1324+
return getInfo(param_value_size, param_value, param_value_size_ret,
1325+
capabilities);
1326+
}
13121327
case PI_EXT_ONEAPI_DEVICE_INFO_BFLOAT16_MATH_FUNCTIONS: {
13131328
int major = 0;
13141329
sycl::detail::pi::assertion(

0 commit comments

Comments
 (0)
Please sign in to comment.