Skip to content

[SYCL] Adds support for atomic fence capabilities device queries #8586

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
435d760
Adds preliminar support for atomic_fence_order_capabilities.
maarquitos14 Mar 1, 2023
d126996
Adds support for atomic fence capabilities device queries.
maarquitos14 Mar 8, 2023
fbb2998
Adds tests for atomic fence capabilities device queries.
maarquitos14 Mar 8, 2023
8e07de6
Updateds atomic fence capabilities unittest.
maarquitos14 Mar 9, 2023
8327cb0
Updates ABI test.
maarquitos14 Mar 9, 2023
46e315a
Reverts involuntary change.
maarquitos14 Mar 9, 2023
4bad01d
Updates atomic fence capabilities unittest.
maarquitos14 Mar 9, 2023
3a24574
Updates PI version.
maarquitos14 Mar 9, 2023
eeb02e9
Fixes compilation error in CUDA.
maarquitos14 Mar 9, 2023
8829169
Update atomic fence capabilities unittest header.
maarquitos14 Mar 9, 2023
fc36ecc
Merge remote-tracking branch 'intel/origin/sycl' into maronas/atomic_…
maarquitos14 Mar 10, 2023
0ce9beb
Fixes clang-format issue.
maarquitos14 Mar 10, 2023
60132b7
Fixes clang-format issues.
maarquitos14 Mar 10, 2023
36192ee
SYCL should always return memory_scope::work_item.
maarquitos14 Mar 10, 2023
c1cf809
Addressing code review concerncs.
maarquitos14 Mar 13, 2023
bf12a92
Reverts unrelated changes.
maarquitos14 Mar 16, 2023
9548073
Addresses code review comments.
maarquitos14 Mar 16, 2023
4c59edb
Reverts unrelated clang-format changes.
maarquitos14 Mar 17, 2023
3ab7991
Reverts unrelated clang-format changes.
maarquitos14 Mar 17, 2023
f19eb4c
Reverts unrelated clang-format changes.
maarquitos14 Mar 17, 2023
9e7947c
Sets return values correctly in piDeviceGetInfo for atomic fence capa…
maarquitos14 Mar 17, 2023
806e054
Addresses code review comments.
maarquitos14 Mar 22, 2023
c55f52a
Addresses code review comments.
maarquitos14 Mar 22, 2023
b01fef5
Merge remote-tracking branch 'intel/origin/sycl' into maronas/atomic_…
maarquitos14 Mar 22, 2023
30bc569
Merge remote-tracking branch 'intel/origin/sycl' into maronas/atomic_…
maarquitos14 Mar 23, 2023
1571410
Addresses code review comments.
maarquitos14 Mar 23, 2023
cda1cd3
Merge remote-tracking branch 'intel/origin/sycl' into maronas/atomic_…
maarquitos14 Mar 23, 2023
45dd762
Addresses code review comments.
maarquitos14 Mar 23, 2023
d4a5d37
Fixes compilation error in AtomicMemoryOrderCapabilities unittest.
maarquitos14 Mar 23, 2023
918b923
Fixes compilation error in AtomicFenceCapabilities unittest.
maarquitos14 Mar 23, 2023
6490a36
Updates Windows ABI.
maarquitos14 Mar 23, 2023
924b9b7
Removes file pushed accidentally.
maarquitos14 Mar 23, 2023
879c096
Adds ur2pi value conversion.
maarquitos14 Mar 23, 2023
aea9486
Merges branches with common code.
maarquitos14 Mar 23, 2023
2522df7
Merge remote-tracking branch 'intel/origin/sycl' into maronas/atomic_…
maarquitos14 Mar 24, 2023
8d37dfb
Fixes merge issue.
maarquitos14 Mar 24, 2023
2e1d848
Addresses code review comments.
maarquitos14 Mar 24, 2023
38b415f
Adds context query for atomic_fence_capabilities.
maarquitos14 Mar 27, 2023
20f5e18
Updates Windows ABI.
maarquitos14 Mar 27, 2023
bef2e36
Returns minimum mandated capabilities for atomic capabilities in HIP.
maarquitos14 Mar 27, 2023
626b231
Merge remote-tracking branch 'intel/origin/sycl' into maronas/atomic_…
maarquitos14 Mar 27, 2023
cc6166e
Raise errors when querying context for atomic capabilities.
maarquitos14 Mar 27, 2023
ffc9b92
Fixes compilation error in HIP.
maarquitos14 Mar 28, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions sycl/include/sycl/detail/pi.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,11 @@
// 12.24 Added new PI_EXT_KERNEL_EXEC_INFO_CACHE_CONFIG property to the
// _pi_kernel_exec_info. Defined _pi_kernel_cache_config enum with values of
// the new PI_EXT_KERNEL_EXEC_INFO_CACHE_CONFIG property.
// 12.25 Added PI_EXT_DEVICE_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES and
// PI_EXT_DEVICE_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES for piDeviceGetInfo.

#define _PI_H_VERSION_MAJOR 12
#define _PI_H_VERSION_MINOR 24
#define _PI_H_VERSION_MINOR 25

#define _PI_STRING_HELPER(a) #a
#define _PI_CONCAT(a, b) _PI_STRING_HELPER(a.b)
Expand Down Expand Up @@ -314,8 +316,8 @@ typedef enum {
// return the number of queue indices that are available for this device.
PI_EXT_INTEL_DEVICE_INFO_MAX_COMPUTE_QUEUE_INDICES = 0x10032,
PI_DEVICE_INFO_ATOMIC_64 = 0x10110,
PI_DEVICE_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES = 0x10111,
PI_DEVICE_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES = 0x11000,
PI_EXT_DEVICE_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES = 0x10111,
PI_EXT_DEVICE_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES = 0x11000,
PI_DEVICE_INFO_GPU_HW_THREADS_PER_EU = 0x10112,
PI_DEVICE_INFO_BACKEND_VERSION = 0x10113,
// Return whether bfloat16 math functions are supported by device
Expand All @@ -326,6 +328,8 @@ typedef enum {
PI_EXT_ONEAPI_DEVICE_INFO_MAX_WORK_GROUPS_3D = 0x20003,
PI_EXT_ONEAPI_DEVICE_INFO_CUDA_ASYNC_BARRIER = 0x20004,
PI_EXT_CODEPLAY_DEVICE_INFO_SUPPORTS_FUSION = 0x20005,
PI_EXT_DEVICE_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES = 0x20006,
PI_EXT_DEVICE_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES = 0x20007,
} _pi_device_info;

typedef enum {
Expand All @@ -347,8 +351,10 @@ typedef enum {
PI_CONTEXT_INFO_PROPERTIES = 0x1082,
PI_CONTEXT_INFO_REFERENCE_COUNT = 0x1080,
// Atomics capabilities extensions
PI_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES = 0x10010,
PI_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES = 0x10011,
PI_EXT_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES = 0x10010,
PI_EXT_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES = 0x10011,
PI_EXT_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES = 0x10012,
PI_EXT_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES = 0x10013,
// Native 2D USM memory operation support
PI_EXT_ONEAPI_CONTEXT_INFO_USM_FILL2D_SUPPORT = 0x30000,
PI_EXT_ONEAPI_CONTEXT_INFO_USM_MEMSET2D_SUPPORT = 0x30001,
Expand Down
6 changes: 4 additions & 2 deletions sycl/include/sycl/info/context_traits.def
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
__SYCL_PARAM_TRAITS_SPEC(context, reference_count, uint32_t, PI_CONTEXT_INFO_REFERENCE_COUNT)
__SYCL_PARAM_TRAITS_SPEC(context, platform, sycl::platform, PI_CONTEXT_INFO_PLATFORM)
__SYCL_PARAM_TRAITS_SPEC(context, devices, std::vector<sycl::device>, PI_CONTEXT_INFO_DEVICES)
__SYCL_PARAM_TRAITS_SPEC(context, atomic_memory_order_capabilities, std::vector<sycl::memory_order>, PI_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES)
__SYCL_PARAM_TRAITS_SPEC(context, atomic_memory_scope_capabilities, std::vector<sycl::memory_scope>, PI_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES)
__SYCL_PARAM_TRAITS_SPEC(context, atomic_memory_order_capabilities, std::vector<sycl::memory_order>, PI_EXT_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES)
__SYCL_PARAM_TRAITS_SPEC(context, atomic_memory_scope_capabilities, std::vector<sycl::memory_scope>, PI_EXT_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES)
__SYCL_PARAM_TRAITS_SPEC(context, atomic_fence_order_capabilities, std::vector<sycl::memory_order>, PI_EXT_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES)
__SYCL_PARAM_TRAITS_SPEC(context, atomic_fence_scope_capabilities, std::vector<sycl::memory_scope>, PI_EXT_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES)
10 changes: 8 additions & 2 deletions sycl/include/sycl/info/device_traits.def
Original file line number Diff line number Diff line change
Expand Up @@ -111,10 +111,16 @@ __SYCL_PARAM_TRAITS_SPEC(device, host_unified_memory, bool,
PI_DEVICE_INFO_HOST_UNIFIED_MEMORY)
__SYCL_PARAM_TRAITS_SPEC(device, atomic_memory_order_capabilities,
std::vector<sycl::memory_order>,
PI_DEVICE_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES)
PI_EXT_DEVICE_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES)
__SYCL_PARAM_TRAITS_SPEC(device, atomic_fence_order_capabilities,
std::vector<sycl::memory_order>,
PI_EXT_DEVICE_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES)
__SYCL_PARAM_TRAITS_SPEC(device, atomic_memory_scope_capabilities,
std::vector<sycl::memory_scope>,
PI_DEVICE_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES)
PI_EXT_DEVICE_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES)
__SYCL_PARAM_TRAITS_SPEC(device, atomic_fence_scope_capabilities,
std::vector<sycl::memory_scope>,
PI_EXT_DEVICE_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES)
__SYCL_PARAM_TRAITS_SPEC(device, profiling_timer_resolution, size_t,
PI_DEVICE_INFO_PROFILING_TIMER_RESOLUTION)
__SYCL_PARAM_TRAITS_SPEC(device, is_endian_little, bool,
Expand Down
3 changes: 3 additions & 0 deletions sycl/include/sycl/info/info_desc.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ namespace device {
// atomic_fence_order_capabilities, atomic_fence_scope_capabilities, aspects,
// il_version.

struct atomic_fence_order_capabilities;
struct atomic_fence_scope_capabilities;

#define __SYCL_PARAM_TRAITS_DEPRECATED(Desc, Message) \
struct __SYCL2020_DEPRECATED(Message) Desc;
#include <sycl/info/device_traits_deprecated.def>
Expand Down
40 changes: 17 additions & 23 deletions sycl/plugins/cuda/pi_cuda.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1003,27 +1003,15 @@ pi_result cuda_piContextGetInfo(pi_context context, pi_context_info param_name,
case PI_CONTEXT_INFO_REFERENCE_COUNT:
return getInfo(param_value_size, param_value, param_value_size_ret,
context->get_reference_count());
case PI_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES: {
pi_memory_order_capabilities capabilities =
PI_MEMORY_ORDER_RELAXED | PI_MEMORY_ORDER_ACQUIRE |
PI_MEMORY_ORDER_RELEASE | PI_MEMORY_ORDER_ACQ_REL;
return getInfo(param_value_size, param_value, param_value_size_ret,
capabilities);
}
case PI_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES: {
int major = 0;
sycl::detail::pi::assertion(
cuDeviceGetAttribute(&major,
CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR,
context->get_device()->get()) == CUDA_SUCCESS);
pi_memory_order_capabilities capabilities =
(major >= 7) ? PI_MEMORY_SCOPE_WORK_ITEM | PI_MEMORY_SCOPE_SUB_GROUP |
PI_MEMORY_SCOPE_WORK_GROUP | PI_MEMORY_SCOPE_DEVICE |
PI_MEMORY_SCOPE_SYSTEM
: PI_MEMORY_SCOPE_WORK_ITEM | PI_MEMORY_SCOPE_SUB_GROUP |
PI_MEMORY_SCOPE_WORK_GROUP | PI_MEMORY_SCOPE_DEVICE;
return getInfo(param_value_size, param_value, param_value_size_ret,
capabilities);
case PI_EXT_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES:
case PI_EXT_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES:
case PI_EXT_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES:
case PI_EXT_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES: {
// These queries should be dealt with in context_impl.cpp by calling the
// queries of each device separately and building the intersection set.
setErrorMessage("These queries should have never come here.",
PI_ERROR_INVALID_ARG_VALUE);
return PI_ERROR_PLUGIN_SPECIFIC_ERROR;
}
case PI_EXT_ONEAPI_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT:
return getInfo<pi_bool>(param_value_size, param_value, param_value_size_ret,
Expand Down Expand Up @@ -1293,14 +1281,14 @@ pi_result cuda_piDeviceGetInfo(pi_device device, pi_device_info param_name,
return getInfo(param_value_size, param_value, param_value_size_ret,
atomic64);
}
case PI_DEVICE_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES: {
case PI_EXT_DEVICE_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES: {
pi_memory_order_capabilities capabilities =
PI_MEMORY_ORDER_RELAXED | PI_MEMORY_ORDER_ACQUIRE |
PI_MEMORY_ORDER_RELEASE | PI_MEMORY_ORDER_ACQ_REL;
return getInfo(param_value_size, param_value, param_value_size_ret,
capabilities);
}
case PI_DEVICE_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES: {
case PI_EXT_DEVICE_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES: {
int major = 0;
sycl::detail::pi::assertion(
cuDeviceGetAttribute(&major,
Expand All @@ -1315,6 +1303,12 @@ pi_result cuda_piDeviceGetInfo(pi_device device, pi_device_info param_name,
return getInfo(param_value_size, param_value, param_value_size_ret,
capabilities);
}
case PI_EXT_DEVICE_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES:
case PI_EXT_DEVICE_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES:
// There is no way to query this in the backend
setErrorMessage("CUDA backend does not support this query",
PI_ERROR_INVALID_ARG_VALUE);
return PI_ERROR_PLUGIN_SPECIFIC_ERROR;
case PI_EXT_ONEAPI_DEVICE_INFO_BFLOAT16_MATH_FUNCTIONS: {
int major = 0;
sycl::detail::pi::assertion(
Expand Down
6 changes: 4 additions & 2 deletions sycl/plugins/esimd_emulator/pi_esimd_emulator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -804,8 +804,10 @@ pi_result piDeviceGetInfo(pi_device Device, pi_device_info ParamName,
CASE_PI_UNSUPPORTED(PI_DEVICE_INFO_MAX_MEM_BANDWIDTH)
CASE_PI_UNSUPPORTED(PI_DEVICE_INFO_IMAGE_SRGB)
CASE_PI_UNSUPPORTED(PI_DEVICE_INFO_ATOMIC_64)
CASE_PI_UNSUPPORTED(PI_DEVICE_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES)
CASE_PI_UNSUPPORTED(PI_DEVICE_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES)
CASE_PI_UNSUPPORTED(PI_EXT_DEVICE_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES)
CASE_PI_UNSUPPORTED(PI_EXT_DEVICE_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES)
CASE_PI_UNSUPPORTED(PI_EXT_DEVICE_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES)
CASE_PI_UNSUPPORTED(PI_EXT_DEVICE_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES)
CASE_PI_UNSUPPORTED(PI_EXT_ONEAPI_DEVICE_INFO_MAX_GLOBAL_WORK_GROUPS)
CASE_PI_UNSUPPORTED(PI_EXT_ONEAPI_DEVICE_INFO_MAX_WORK_GROUPS_1D)
CASE_PI_UNSUPPORTED(PI_EXT_ONEAPI_DEVICE_INFO_MAX_WORK_GROUPS_2D)
Expand Down
40 changes: 36 additions & 4 deletions sycl/plugins/hip/pi_hip.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1007,7 +1007,16 @@ pi_result hip_piContextGetInfo(pi_context context, pi_context_info param_name,
// 2D USM operations currently not supported.
return getInfo<pi_bool>(param_value_size, param_value, param_value_size_ret,
false);
case PI_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES:
case PI_EXT_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES:
case PI_EXT_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES:
case PI_EXT_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES:
case PI_EXT_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES: {
// These queries should be dealt with in context_impl.cpp by calling the
// queries of each device separately and building the intersection set.
setErrorMessage("These queries should have never come here.",
PI_ERROR_INVALID_ARG_VALUE);
return PI_ERROR_PLUGIN_SPECIFIC_ERROR;
}
default:
__SYCL_PI_HANDLE_UNKNOWN_PARAM_NAME(param_name);
}
Expand Down Expand Up @@ -1856,13 +1865,35 @@ pi_result hip_piDeviceGetInfo(pi_device device, pi_device_info param_name,
pi_int32{1});
}

case PI_DEVICE_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES: {
case PI_EXT_DEVICE_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES: {
pi_memory_order_capabilities capabilities = PI_MEMORY_ORDER_RELAXED |
PI_MEMORY_ORDER_ACQUIRE |
PI_MEMORY_ORDER_RELEASE;
return getInfo(param_value_size, param_value, param_value_size_ret,
capabilities);
}
case PI_EXT_DEVICE_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES:
case PI_EXT_DEVICE_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES: {
// SYCL2020 4.6.4.2 minimum mandated capabilities for
// atomic_fence/memory_scope_capabilities.
// Because scopes are hierarchical, wider scopes support all narrower
// scopes. At a minimum, each device must support WORK_ITEM, SUB_GROUP and
// WORK_GROUP. (https://github.com/KhronosGroup/SYCL-Docs/pull/382)
pi_memory_scope_capabilities capabilities = PI_MEMORY_SCOPE_WORK_ITEM |
PI_MEMORY_SCOPE_SUB_GROUP |
PI_MEMORY_SCOPE_WORK_GROUP;
return getInfo(param_value_size, param_value, param_value_size_ret,
capabilities);
}
case PI_EXT_DEVICE_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES: {
// SYCL2020 4.6.4.2 minimum mandated capabilities for
// atomic_fence_order_capabilities.
pi_memory_order_capabilities capabilities =
PI_MEMORY_ORDER_RELAXED | PI_MEMORY_ORDER_ACQUIRE |
PI_MEMORY_ORDER_RELEASE | PI_MEMORY_ORDER_ACQ_REL;
return getInfo(param_value_size, param_value, param_value_size_ret,
capabilities);
}

case PI_DEVICE_INFO_DEVICE_ID: {
int value = 0;
Expand All @@ -1889,7 +1920,6 @@ pi_result hip_piDeviceGetInfo(pi_device device, pi_device_info param_name,
}

// TODO: Investigate if this information is available on HIP.
case PI_DEVICE_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES:
case PI_DEVICE_INFO_PCI_ADDRESS:
case PI_DEVICE_INFO_GPU_EU_COUNT:
case PI_DEVICE_INFO_GPU_EU_SIMD_WIDTH:
Expand All @@ -1899,7 +1929,9 @@ pi_result hip_piDeviceGetInfo(pi_device device, pi_device_info param_name,
case PI_DEVICE_INFO_GPU_HW_THREADS_PER_EU:
case PI_DEVICE_INFO_MAX_MEM_BANDWIDTH:
case PI_EXT_ONEAPI_DEVICE_INFO_BFLOAT16_MATH_FUNCTIONS:
return PI_ERROR_INVALID_VALUE;
setErrorMessage("HIP backend does not support this query",
PI_ERROR_INVALID_ARG_VALUE);
return PI_ERROR_PLUGIN_SPECIFIC_ERROR;

default:
__SYCL_PI_HANDLE_UNKNOWN_PARAM_NAME(param_name);
Expand Down
18 changes: 10 additions & 8 deletions sycl/plugins/level_zero/pi_level_zero.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2309,14 +2309,16 @@ pi_result piContextGetInfo(pi_context Context, pi_context_info ParamName,
case PI_EXT_ONEAPI_CONTEXT_INFO_USM_MEMSET2D_SUPPORT:
// 2D USM fill and memset is not supported.
return ReturnValue(pi_bool{false});
case PI_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES: {
pi_memory_order_capabilities capabilities =
PI_MEMORY_ORDER_RELAXED | PI_MEMORY_ORDER_ACQUIRE |
PI_MEMORY_ORDER_RELEASE | PI_MEMORY_ORDER_ACQ_REL |
PI_MEMORY_ORDER_SEQ_CST;
return ReturnValue(capabilities);
}
case PI_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES:
case PI_EXT_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES:
case PI_EXT_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES:
case PI_EXT_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES:
case PI_EXT_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES: {
// These queries should be dealt with in context_impl.cpp by calling the
// queries of each device separately and building the intersection set.
setErrorMessage("These queries should have never come here.",
UR_RESULT_ERROR_INVALID_VALUE);
return PI_ERROR_PLUGIN_SPECIFIC_ERROR;
}
default:
// TODO: implement other parameters
die("piGetContextInfo: unsuppported ParamName.");
Expand Down
Loading