Skip to content

Commit de59929

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 7ecf64d commit de59929

File tree

12 files changed

+61
-13
lines changed

12 files changed

+61
-13
lines changed

include/ur_api.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -849,6 +849,7 @@ urLoaderTearDown(
849849
/// - ::UR_RESULT_ERROR_DEVICE_LOST
850850
/// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC
851851
/// - ::UR_RESULT_ERROR_INVALID_SIZE
852+
/// + `NumEntries == 0 && phAdapters != NULL`
852853
UR_APIEXPORT ur_result_t UR_APICALL
853854
urAdapterGet(
854855
uint32_t NumEntries, ///< [in] the number of adapters to be added to phAdapters.
@@ -857,7 +858,7 @@ urAdapterGet(
857858
///< will be returned.
858859
ur_adapter_handle_t *phAdapters, ///< [out][optional][range(0, NumEntries)] array of handle of adapters.
859860
///< If NumEntries is less than the number of adapters available, then
860-
///< ::urAdapterGet shall only retrieve that number of platforms.
861+
///< ::urAdapterGet shall only retrieve that number of adapters.
861862
uint32_t *pNumAdapters ///< [out][optional] returns the total number of adapters available.
862863
);
863864

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/adapters/mock/ur_mockddi.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ __urdlllocal ur_result_t UR_APICALL urAdapterGet(
2424
ur_adapter_handle_t *
2525
phAdapters, ///< [out][optional][range(0, NumEntries)] array of handle of adapters.
2626
///< If NumEntries is less than the number of adapters available, then
27-
///< ::urAdapterGet shall only retrieve that number of platforms.
27+
///< ::urAdapterGet shall only retrieve that number of adapters.
2828
uint32_t *
2929
pNumAdapters ///< [out][optional] returns the total number of adapters available.
3030
) try {

source/loader/layers/tracing/ur_trcddi.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ __urdlllocal ur_result_t UR_APICALL urAdapterGet(
2626
ur_adapter_handle_t *
2727
phAdapters, ///< [out][optional][range(0, NumEntries)] array of handle of adapters.
2828
///< If NumEntries is less than the number of adapters available, then
29-
///< ::urAdapterGet shall only retrieve that number of platforms.
29+
///< ::urAdapterGet shall only retrieve that number of adapters.
3030
uint32_t *
3131
pNumAdapters ///< [out][optional] returns the total number of adapters available.
3232
) {

source/loader/layers/validation/ur_valddi.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ __urdlllocal ur_result_t UR_APICALL urAdapterGet(
2525
ur_adapter_handle_t *
2626
phAdapters, ///< [out][optional][range(0, NumEntries)] array of handle of adapters.
2727
///< If NumEntries is less than the number of adapters available, then
28-
///< ::urAdapterGet shall only retrieve that number of platforms.
28+
///< ::urAdapterGet shall only retrieve that number of adapters.
2929
uint32_t *
3030
pNumAdapters ///< [out][optional] returns the total number of adapters available.
3131
) {
@@ -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_ldrddi.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ __urdlllocal ur_result_t UR_APICALL urAdapterGet(
2424
ur_adapter_handle_t *
2525
phAdapters, ///< [out][optional][range(0, NumEntries)] array of handle of adapters.
2626
///< If NumEntries is less than the number of adapters available, then
27-
///< ::urAdapterGet shall only retrieve that number of platforms.
27+
///< ::urAdapterGet shall only retrieve that number of adapters.
2828
uint32_t *
2929
pNumAdapters ///< [out][optional] returns the total number of adapters available.
3030
) {

source/loader/ur_libapi.cpp

Lines changed: 2 additions & 1 deletion
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.
@@ -301,7 +302,7 @@ ur_result_t UR_APICALL urAdapterGet(
301302
ur_adapter_handle_t *
302303
phAdapters, ///< [out][optional][range(0, NumEntries)] array of handle of adapters.
303304
///< If NumEntries is less than the number of adapters available, then
304-
///< ::urAdapterGet shall only retrieve that number of platforms.
305+
///< ::urAdapterGet shall only retrieve that number of adapters.
305306
uint32_t *
306307
pNumAdapters ///< [out][optional] returns the total number of adapters available.
307308
) try {

source/ur_api.cpp

Lines changed: 2 additions & 1 deletion
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.
@@ -287,7 +288,7 @@ ur_result_t UR_APICALL urAdapterGet(
287288
ur_adapter_handle_t *
288289
phAdapters, ///< [out][optional][range(0, NumEntries)] array of handle of adapters.
289290
///< If NumEntries is less than the number of adapters available, then
290-
///< ::urAdapterGet shall only retrieve that number of platforms.
291+
///< ::urAdapterGet shall only retrieve that number of adapters.
291292
uint32_t *
292293
pNumAdapters ///< [out][optional] returns the total number of adapters available.
293294
) {

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: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,19 @@ struct urAdapterReleaseTest : uur::runtime::urAdapterTest {
1515
};
1616

1717
TEST_F(urAdapterReleaseTest, Success) {
18-
ASSERT_SUCCESS(urAdapterRetain(adapter));
18+
uint32_t referenceCountBefore = 0;
19+
20+
ASSERT_SUCCESS(urAdapterGetInfo(adapter, UR_ADAPTER_INFO_REFERENCE_COUNT,
21+
sizeof(referenceCountBefore),
22+
&referenceCountBefore, nullptr));
23+
24+
uint32_t referenceCountAfter = 0;
1925
EXPECT_SUCCESS(urAdapterRelease(adapter));
26+
ASSERT_SUCCESS(urAdapterGetInfo(adapter, UR_ADAPTER_INFO_REFERENCE_COUNT,
27+
sizeof(referenceCountAfter),
28+
&referenceCountAfter, nullptr));
29+
30+
ASSERT_LE(referenceCountAfter, referenceCountBefore);
2031
}
2132

2233
TEST_F(urAdapterReleaseTest, InvalidNullHandleAdapter) {

test/conformance/adapter/urAdapterRetain.cpp

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

1717
TEST_F(urAdapterRetainTest, Success) {
18-
ASSERT_SUCCESS(urAdapterRetain(adapter));
19-
EXPECT_SUCCESS(urAdapterRelease(adapter));
18+
uint32_t referenceCountBefore = 0;
19+
20+
ASSERT_SUCCESS(urAdapterGetInfo(adapter, UR_ADAPTER_INFO_REFERENCE_COUNT,
21+
sizeof(referenceCountBefore),
22+
&referenceCountBefore, nullptr));
23+
24+
uint32_t referenceCountAfter = 0;
25+
EXPECT_SUCCESS(urAdapterRetain(adapter));
26+
ASSERT_SUCCESS(urAdapterGetInfo(adapter, UR_ADAPTER_INFO_REFERENCE_COUNT,
27+
sizeof(referenceCountAfter),
28+
&referenceCountAfter, nullptr));
29+
30+
ASSERT_GT(referenceCountAfter, referenceCountBefore);
2031
}
2132

2233
TEST_F(urAdapterRetainTest, InvalidNullHandleAdapter) {

0 commit comments

Comments
 (0)