Skip to content

Commit cf86da8

Browse files
authored
Merge pull request #2112 from martygrant/martin/context-cts-spec-gap
Improvements to align CTS and Spec for Context
2 parents 164bb75 + e8c099e commit cf86da8

15 files changed

+77
-23
lines changed

source/adapters/cuda/context.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,10 @@ UR_APIEXPORT ur_result_t UR_APICALL urContextGetInfo(
9898
UR_MEMORY_SCOPE_CAPABILITY_FLAG_DEVICE;
9999
return ReturnValue(Capabilities);
100100
}
101+
case UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES:
102+
case UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES: {
103+
return UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION;
104+
}
101105
case UR_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT:
102106
// 2D USM memcpy is supported.
103107
return ReturnValue(true);

source/adapters/hip/context.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ urContextGetInfo(ur_context_handle_t hContext, ur_context_info_t propName,
7575
case UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES: {
7676
// These queries should be dealt with in context_impl.cpp by calling the
7777
// queries of each device separately and building the intersection set.
78-
return UR_RESULT_ERROR_INVALID_ENUMERATION;
78+
return UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION;
7979
}
8080
case UR_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT:
8181
// 2D USM memcpy is supported.

source/adapters/level_zero/context.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,13 +126,16 @@ ur_result_t urContextGetInfo(
126126
UR_MEMORY_ORDER_CAPABILITY_FLAG_SEQ_CST;
127127
return ReturnValue(Capabilities);
128128
}
129+
case UR_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES:
130+
case UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES:
131+
case UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES: {
132+
return UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION;
133+
}
129134

130135
default:
131136
// TODO: implement other parameters
132-
die("urGetContextInfo: unsuppported ParamName.");
137+
return UR_RESULT_ERROR_INVALID_ENUMERATION;
133138
}
134-
135-
return UR_RESULT_SUCCESS;
136139
}
137140

138141
ur_result_t urContextGetNativeHandle(

source/adapters/level_zero/v2/context.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,14 @@ ur_result_t urContextGetInfo(ur_context_handle_t hContext,
173173
case UR_CONTEXT_INFO_USM_FILL2D_SUPPORT:
174174
// 2D USM fill is not supported.
175175
return ReturnValue(uint8_t{false});
176+
case UR_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES:
177+
case UR_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES:
178+
case UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES:
179+
case UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES: {
180+
return UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION;
181+
}
176182
default:
177-
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
183+
return UR_RESULT_ERROR_INVALID_ENUMERATION;
178184
}
179185
}
180186
} // namespace ur::level_zero

source/adapters/native_cpu/context.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ urContextGetInfo(ur_context_handle_t hContext, ur_context_info_t propName,
6464
case UR_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES:
6565
case UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES:
6666
case UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES: {
67-
return UR_RESULT_ERROR_ADAPTER_SPECIFIC;
67+
return UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION;
6868
}
6969
default:
7070
return UR_RESULT_ERROR_INVALID_ENUMERATION;

source/adapters/opencl/context.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ urContextGetInfo(ur_context_handle_t hContext, ur_context_info_t propName,
8989
case UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES: {
9090
/* These queries should be dealt with in context_impl.cpp by calling the
9191
* queries of each device separately and building the intersection set. */
92-
return UR_RESULT_ERROR_INVALID_ARGUMENT;
92+
return UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION;
9393
}
9494
case UR_CONTEXT_INFO_NUM_DEVICES:
9595
case UR_CONTEXT_INFO_DEVICES:
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
{{NONDETERMINISTIC}}
2-
urContextSetExtendedDeleterTest.Success/Intel_R__oneAPI_Unified_Runtime_over_Level_Zero___{{.*}}_
2+
{{OPT}}urContextSetExtendedDeleterTest.Success/Intel_R__oneAPI_Unified_Runtime_over_Level_Zero___{{.*}}_
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
urContextSetExtendedDeleterTest.Success/Intel_R__oneAPI_Unified_Runtime_over_Level_Zero___{{.*}}__
1+
{{OPT}}urContextSetExtendedDeleterTest.Success/Intel_R__oneAPI_Unified_Runtime_over_Level_Zero___{{.*}}__
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
urContextSetExtendedDeleterTest.Success/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
1+
{{OPT}}urContextSetExtendedDeleterTest.Success/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}

test/conformance/context/urContextCreate.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,17 @@ TEST_P(urContextCreateTest, InvalidNullPointerContext) {
3636
urContextCreate(1, &device, nullptr, nullptr));
3737
}
3838

39+
TEST_P(urContextCreateTest, InvalidEnumeration) {
40+
auto device = GetParam();
41+
42+
ur_context_properties_t properties{UR_STRUCTURE_TYPE_CONTEXT_PROPERTIES,
43+
nullptr, UR_CONTEXT_FLAGS_MASK};
44+
uur::raii::Context context = nullptr;
45+
46+
ASSERT_EQ_RESULT(UR_RESULT_ERROR_INVALID_ENUMERATION,
47+
urContextCreate(1, &device, &properties, context.ptr()));
48+
}
49+
3950
using urContextCreateMultiDeviceTest = uur::urAllDevicesTest;
4051
TEST_F(urContextCreateMultiDeviceTest, Success) {
4152
if (devices.size() < 2) {

test/conformance/context/urContextGetInfo.cpp

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,24 @@ struct urContextGetInfoTestWithInfoParam
1717
{UR_CONTEXT_INFO_REFERENCE_COUNT, sizeof(uint32_t)},
1818
{UR_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT, sizeof(bool)},
1919
{UR_CONTEXT_INFO_USM_FILL2D_SUPPORT, sizeof(bool)},
20+
{UR_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES,
21+
sizeof(ur_memory_order_capability_flags_t)},
22+
{UR_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES,
23+
sizeof(ur_memory_order_capability_flags_t)},
24+
{UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES,
25+
sizeof(ur_memory_order_capability_flags_t)},
26+
{UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES,
27+
sizeof(ur_memory_order_capability_flags_t)}};
28+
29+
ctx_info_mem_flags_map = {
30+
{UR_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES,
31+
UR_MEMORY_ORDER_CAPABILITY_FLAGS_MASK},
32+
{UR_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES,
33+
UR_MEMORY_SCOPE_CAPABILITY_FLAGS_MASK},
34+
{UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES,
35+
UR_MEMORY_ORDER_CAPABILITY_FLAGS_MASK},
36+
{UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES,
37+
UR_MEMORY_SCOPE_CAPABILITY_FLAGS_MASK},
2038
};
2139
}
2240

@@ -26,24 +44,30 @@ struct urContextGetInfoTestWithInfoParam
2644
}
2745

2846
std::unordered_map<ur_context_info_t, size_t> ctx_info_size_map;
47+
std::unordered_map<ur_context_info_t, ur_memory_order_capability_flags_t>
48+
ctx_info_mem_flags_map;
2949
};
3050

3151
UUR_TEST_SUITE_P(urContextGetInfoTestWithInfoParam,
3252
::testing::Values(
3353

34-
UR_CONTEXT_INFO_NUM_DEVICES, //
35-
UR_CONTEXT_INFO_DEVICES, //
36-
UR_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT, //
37-
UR_CONTEXT_INFO_USM_FILL2D_SUPPORT, //
38-
UR_CONTEXT_INFO_REFERENCE_COUNT //
39-
54+
UR_CONTEXT_INFO_NUM_DEVICES, //
55+
UR_CONTEXT_INFO_DEVICES, //
56+
UR_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT, //
57+
UR_CONTEXT_INFO_USM_FILL2D_SUPPORT, //
58+
UR_CONTEXT_INFO_REFERENCE_COUNT, //
59+
UR_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES, //
60+
UR_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES, //
61+
UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES, //
62+
UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES //
4063
),
4164
uur::deviceTestWithParamPrinter<ur_context_info_t>);
4265

4366
TEST_P(urContextGetInfoTestWithInfoParam, Success) {
4467
ur_context_info_t info = getParam();
4568
size_t info_size = 0;
46-
ASSERT_SUCCESS(urContextGetInfo(context, info, 0, nullptr, &info_size));
69+
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(
70+
urContextGetInfo(context, info, 0, nullptr, &info_size));
4771
ASSERT_NE(info_size, 0);
4872

4973
if (const auto expected_size = ctx_info_size_map.find(info);

test/conformance/context/urContextSetExtendedDeleter.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ TEST_P(urContextSetExtendedDeleterTest, Success) {
2121
*static_cast<bool *>(userdata) = true;
2222
};
2323

24-
ASSERT_SUCCESS(urContextSetExtendedDeleter(context, deleter, &called));
24+
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(
25+
urContextSetExtendedDeleter(context, deleter, &called));
2526
}
2627
ASSERT_TRUE(called);
2728
}

test/conformance/enqueue/urEnqueueUSMFill2D.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,11 @@ struct urEnqueueUSMFill2DTestWithParam
3434
UUR_RETURN_ON_FATAL_FAILURE(urQueueTestWithParam::SetUp());
3535

3636
bool memfill2d_support = false;
37-
ASSERT_SUCCESS(urContextGetInfo(
37+
[[maybe_unused]] ur_result_t result = urContextGetInfo(
3838
context, UR_CONTEXT_INFO_USM_FILL2D_SUPPORT,
39-
sizeof(memfill2d_support), &memfill2d_support, nullptr));
39+
sizeof(memfill2d_support), &memfill2d_support, nullptr);
40+
ASSERT_TRUE(result == UR_RESULT_SUCCESS ||
41+
result == UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION);
4042
if (!memfill2d_support) {
4143
GTEST_SKIP() << "2D USM mem fill is not supported";
4244
}

test/conformance/enqueue/urEnqueueUSMMemcpy2D.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,11 @@ struct urEnqueueUSMMemcpy2DTestWithParam
2828
}
2929

3030
bool memcpy2d_support = false;
31-
ASSERT_SUCCESS(urContextGetInfo(
31+
[[maybe_unused]] ur_result_t result = urContextGetInfo(
3232
context, UR_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT,
33-
sizeof(memcpy2d_support), &memcpy2d_support, nullptr));
33+
sizeof(memcpy2d_support), &memcpy2d_support, nullptr);
34+
ASSERT_TRUE(result == UR_RESULT_SUCCESS ||
35+
result == UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION);
3436
if (!memcpy2d_support) {
3537
GTEST_SKIP() << "2D USM memcpy is not supported";
3638
}

test/conformance/testing/include/uur/fixtures.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424

2525
#define UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(ret) \
2626
auto status = ret; \
27-
if (status == UR_RESULT_ERROR_UNSUPPORTED_FEATURE) { \
27+
if (status == UR_RESULT_ERROR_UNSUPPORTED_FEATURE || \
28+
status == UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION) { \
2829
GTEST_SKIP(); \
2930
} else { \
3031
ASSERT_EQ(status, UR_RESULT_SUCCESS); \

0 commit comments

Comments
 (0)