Skip to content

Commit 52696f9

Browse files
committed
Improvements to align CTS and Spec for Adapter.
- Add missing error condition to urAdapterGet which is mentioned in its description. - Return UR_RESULT_ERROR_INVALID_SIZE when NumEntries == 0 and phAdapters != NULL. - Check adapter reference count is updated accordingly after calls to urAdapterRetain/Release. - Update urAdapterGetInfo tests - ReferenceCountNotZero to check adapter reference count is not 0. - ValidAdapterBackend to check UR_ADAPTER_INFO_BACKEND returns a value enumerated in ur_adapter_backend_t.
1 parent 92638b2 commit 52696f9

File tree

9 files changed

+57
-3
lines changed

9 files changed

+57
-3
lines changed

include/ur_api.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -841,6 +841,7 @@ urLoaderTearDown(
841841
/// - ::UR_RESULT_ERROR_DEVICE_LOST
842842
/// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC
843843
/// - ::UR_RESULT_ERROR_INVALID_SIZE
844+
/// + `NumEntries == 0 && phAdapters != NULL`
844845
UR_APIEXPORT ur_result_t UR_APICALL
845846
urAdapterGet(
846847
uint32_t NumEntries, ///< [in] the number of adapters to be added to phAdapters.

scripts/core/adapter.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,14 @@ params:
3535
name: phAdapters
3636
desc: |
3737
[out][optional][range(0, NumEntries)] array of handle of adapters.
38-
If NumEntries is less than the number of adapters available, then $xAdapterGet shall only retrieve that number of platforms.
38+
If NumEntries is less than the number of adapters available, then $xAdapterGet shall only retrieve that number of adapters.
3939
- type: "uint32_t*"
4040
name: "pNumAdapters"
4141
desc: |
4242
[out][optional] returns the total number of adapters available.
4343
returns:
44-
- $X_RESULT_ERROR_INVALID_SIZE
44+
- $X_RESULT_ERROR_INVALID_SIZE:
45+
- "`NumEntries == 0 && phAdapters != NULL`"
4546
--- #--------------------------------------------------------------------------
4647
type: function
4748
desc: "Releases the adapter handle reference indicating end of its usage"

source/loader/layers/validation/ur_valddi.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ __urdlllocal ur_result_t UR_APICALL urAdapterGet(
3636
}
3737

3838
if (getContext()->enableParameterValidation) {
39+
if (NumEntries == 0 && phAdapters != NULL) {
40+
return UR_RESULT_ERROR_INVALID_SIZE;
41+
}
3942
}
4043

4144
ur_result_t result = pfnAdapterGet(NumEntries, phAdapters, pNumAdapters);

source/loader/ur_libapi.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@ ur_result_t UR_APICALL urLoaderTearDown(void) try {
292292
/// - ::UR_RESULT_ERROR_DEVICE_LOST
293293
/// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC
294294
/// - ::UR_RESULT_ERROR_INVALID_SIZE
295+
/// + `NumEntries == 0 && phAdapters != NULL`
295296
ur_result_t UR_APICALL urAdapterGet(
296297
uint32_t
297298
NumEntries, ///< [in] the number of adapters to be added to phAdapters.

source/ur_api.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,7 @@ ur_result_t UR_APICALL urLoaderTearDown(void) {
278278
/// - ::UR_RESULT_ERROR_DEVICE_LOST
279279
/// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC
280280
/// - ::UR_RESULT_ERROR_INVALID_SIZE
281+
/// + `NumEntries == 0 && phAdapters != NULL`
281282
ur_result_t UR_APICALL urAdapterGet(
282283
uint32_t
283284
NumEntries, ///< [in] the number of adapters to be added to phAdapters.

test/conformance/adapter/urAdapterGet.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@ TEST_F(urAdapterGetTest, InvalidNumEntries) {
1818
uint32_t adapter_count;
1919
ASSERT_SUCCESS(urAdapterGet(0, nullptr, &adapter_count));
2020
std::vector<ur_adapter_handle_t> adapters(adapter_count);
21-
ASSERT_SUCCESS(urAdapterGet(0, adapters.data(), nullptr));
21+
ASSERT_EQ(urAdapterGet(0, adapters.data(), nullptr),
22+
UR_RESULT_ERROR_INVALID_SIZE);
2223
}

test/conformance/adapter/urAdapterGetInfo.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,21 @@ TEST_F(urAdapterGetInfoTest, InvalidNullPointerPropSizeRet) {
8787
urAdapterGetInfo(adapter, UR_ADAPTER_INFO_BACKEND, 0, nullptr, nullptr),
8888
UR_RESULT_ERROR_INVALID_NULL_POINTER);
8989
}
90+
91+
TEST_F(urAdapterGetInfoTest, ReferenceCountNotZero) {
92+
uint32_t referenceCount = 0;
93+
94+
ASSERT_SUCCESS(urAdapterGetInfo(adapter, UR_ADAPTER_INFO_REFERENCE_COUNT,
95+
sizeof(referenceCount), &referenceCount,
96+
nullptr));
97+
ASSERT_GT(referenceCount, 0);
98+
}
99+
100+
TEST_F(urAdapterGetInfoTest, ValidAdapterBackend) {
101+
ur_adapter_backend_t backend;
102+
ASSERT_SUCCESS(urAdapterGetInfo(adapter, UR_ADAPTER_INFO_BACKEND,
103+
sizeof(backend), &backend, nullptr));
104+
105+
ASSERT_TRUE(backend >= UR_ADAPTER_BACKEND_LEVEL_ZERO &&
106+
backend <= UR_ADAPTER_BACKEND_NATIVE_CPU);
107+
}

test/conformance/adapter/urAdapterRelease.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,22 @@ struct urAdapterReleaseTest : uur::runtime::urAdapterTest {
1515
};
1616

1717
TEST_F(urAdapterReleaseTest, Success) {
18+
uint32_t referenceCount = 0;
19+
20+
ASSERT_SUCCESS(urAdapterGetInfo(adapter, UR_ADAPTER_INFO_REFERENCE_COUNT,
21+
sizeof(referenceCount), &referenceCount,
22+
nullptr));
23+
ASSERT_EQ(referenceCount, 1);
24+
1825
ASSERT_SUCCESS(urAdapterRetain(adapter));
26+
urAdapterGetInfo(adapter, UR_ADAPTER_INFO_REFERENCE_COUNT,
27+
sizeof(referenceCount), &referenceCount, nullptr);
28+
ASSERT_EQ(referenceCount, 2);
29+
1930
EXPECT_SUCCESS(urAdapterRelease(adapter));
31+
urAdapterGetInfo(adapter, UR_ADAPTER_INFO_REFERENCE_COUNT,
32+
sizeof(referenceCount), &referenceCount, nullptr);
33+
ASSERT_EQ(referenceCount, 1);
2034
}
2135

2236
TEST_F(urAdapterReleaseTest, InvalidNullHandleAdapter) {

test/conformance/adapter/urAdapterRetain.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,22 @@ struct urAdapterRetainTest : uur::runtime::urAdapterTest {
1515
};
1616

1717
TEST_F(urAdapterRetainTest, Success) {
18+
uint32_t referenceCount = 0;
19+
20+
ASSERT_SUCCESS(urAdapterGetInfo(adapter, UR_ADAPTER_INFO_REFERENCE_COUNT,
21+
sizeof(referenceCount), &referenceCount,
22+
nullptr));
23+
ASSERT_EQ(referenceCount, 1);
24+
1825
ASSERT_SUCCESS(urAdapterRetain(adapter));
26+
urAdapterGetInfo(adapter, UR_ADAPTER_INFO_REFERENCE_COUNT,
27+
sizeof(referenceCount), &referenceCount, nullptr);
28+
ASSERT_EQ(referenceCount, 2);
29+
1930
EXPECT_SUCCESS(urAdapterRelease(adapter));
31+
urAdapterGetInfo(adapter, UR_ADAPTER_INFO_REFERENCE_COUNT,
32+
sizeof(referenceCount), &referenceCount, nullptr);
33+
ASSERT_EQ(referenceCount, 1);
2034
}
2135

2236
TEST_F(urAdapterRetainTest, InvalidNullHandleAdapter) {

0 commit comments

Comments
 (0)