Skip to content

Commit ea197ea

Browse files
committed
Add UR_ADAPTER_INFO_VERSION query
In order to support in-code management of known failures we need a query to differentiate between the two versions of the Level Zero adapter. This patch adds the `UR_ADAPTER_INFO_VERSION` query which returns a `uint32_t` which is set to return `1` for all adapters except the Level Zero adapter when being compiled in V2 mode.
1 parent 7a4902d commit ea197ea

File tree

10 files changed

+40
-2
lines changed

10 files changed

+40
-2
lines changed

include/ur_api.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -963,7 +963,8 @@ urAdapterGetLastError(
963963
typedef enum ur_adapter_info_t {
964964
UR_ADAPTER_INFO_BACKEND = 0, ///< [::ur_adapter_backend_t] Identifies the native backend supported by
965965
///< the adapter.
966-
UR_ADAPTER_INFO_REFERENCE_COUNT = 1, ///< [uint32_t] Reference count of the adapter.
966+
UR_ADAPTER_INFO_VERSION = 1, ///< [uint32_t] Specifies the adapter version, defaults to 1.
967+
UR_ADAPTER_INFO_REFERENCE_COUNT = 2, ///< [uint32_t] Reference count of the adapter.
967968
///< The reference count returned should be considered immediately stale.
968969
///< It is unsuitable for general use in applications. This feature is
969970
///< provided for identifying memory leaks.

include/ur_print.hpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1919,6 +1919,9 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_adapter_info_t value)
19191919
case UR_ADAPTER_INFO_BACKEND:
19201920
os << "UR_ADAPTER_INFO_BACKEND";
19211921
break;
1922+
case UR_ADAPTER_INFO_VERSION:
1923+
os << "UR_ADAPTER_INFO_VERSION";
1924+
break;
19221925
case UR_ADAPTER_INFO_REFERENCE_COUNT:
19231926
os << "UR_ADAPTER_INFO_REFERENCE_COUNT";
19241927
break;
@@ -1950,6 +1953,18 @@ inline ur_result_t printTagged(std::ostream &os, const void *ptr, ur_adapter_inf
19501953

19511954
os << ")";
19521955
} break;
1956+
case UR_ADAPTER_INFO_VERSION: {
1957+
const uint32_t *tptr = (const uint32_t *)ptr;
1958+
if (sizeof(uint32_t) > size) {
1959+
os << "invalid size (is: " << size << ", expected: >=" << sizeof(uint32_t) << ")";
1960+
return UR_RESULT_ERROR_INVALID_SIZE;
1961+
}
1962+
os << (const void *)(tptr) << " (";
1963+
1964+
os << *tptr;
1965+
1966+
os << ")";
1967+
} break;
19531968
case UR_ADAPTER_INFO_REFERENCE_COUNT: {
19541969
const uint32_t *tptr = (const uint32_t *)ptr;
19551970
if (sizeof(uint32_t) > size) {

scripts/core/adapter.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ typed_etors: True
131131
etors:
132132
- name: BACKEND
133133
desc: "[$x_adapter_backend_t] Identifies the native backend supported by the adapter."
134+
- name: VERSION
135+
desc: "[uint32_t] Specifies the adapter version, defaults to 1."
134136
- name: REFERENCE_COUNT
135137
desc: |
136138
[uint32_t] Reference count of the adapter.

source/adapters/cuda/adapter.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urAdapterGetInfo(ur_adapter_handle_t,
106106
switch (propName) {
107107
case UR_ADAPTER_INFO_BACKEND:
108108
return ReturnValue(UR_ADAPTER_BACKEND_CUDA);
109+
case UR_ADAPTER_INFO_VERSION:
110+
return ReturnValue(uint32_t{1});
109111
case UR_ADAPTER_INFO_REFERENCE_COUNT:
110112
return ReturnValue(adapter.RefCount.load());
111113
default:

source/adapters/hip/adapter.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urAdapterGetInfo(ur_adapter_handle_t,
9494
switch (propName) {
9595
case UR_ADAPTER_INFO_BACKEND:
9696
return ReturnValue(UR_ADAPTER_BACKEND_HIP);
97+
case UR_ADAPTER_INFO_VERSION:
98+
return ReturnValue(uint32_t{1});
9799
case UR_ADAPTER_INFO_REFERENCE_COUNT:
98100
return ReturnValue(adapter.RefCount.load());
99101
default:

source/adapters/level_zero/adapter.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -653,6 +653,14 @@ ur_result_t urAdapterGetInfo(ur_adapter_handle_t, ur_adapter_info_t PropName,
653653
switch (PropName) {
654654
case UR_ADAPTER_INFO_BACKEND:
655655
return ReturnValue(UR_ADAPTER_BACKEND_LEVEL_ZERO);
656+
case UR_ADAPTER_INFO_VERSION: {
657+
#ifdef UR_ADAPTER_LEVEL_ZERO_V2
658+
uint32_t adapterVersion = 2;
659+
#else
660+
uint32_t adapterVersion = 1;
661+
#endif
662+
return ReturnValue(adapterVersion);
663+
}
656664
case UR_ADAPTER_INFO_REFERENCE_COUNT:
657665
return ReturnValue(GlobalAdapter->RefCount.load());
658666
default:

source/adapters/native_cpu/adapter.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urAdapterGetInfo(ur_adapter_handle_t,
5555
switch (propName) {
5656
case UR_ADAPTER_INFO_BACKEND:
5757
return ReturnValue(UR_ADAPTER_BACKEND_NATIVE_CPU);
58+
case UR_ADAPTER_INFO_VERSION:
59+
return ReturnValue(uint32_t{1});
5860
case UR_ADAPTER_INFO_REFERENCE_COUNT:
5961
return ReturnValue(Adapter.RefCount.load());
6062
default:

source/adapters/opencl/adapter.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urAdapterGetInfo(ur_adapter_handle_t,
126126
switch (propName) {
127127
case UR_ADAPTER_INFO_BACKEND:
128128
return ReturnValue(UR_ADAPTER_BACKEND_OPENCL);
129+
case UR_ADAPTER_INFO_VERSION:
130+
return ReturnValue(uint32_t{1});
129131
case UR_ADAPTER_INFO_REFERENCE_COUNT:
130132
return ReturnValue(adapter->RefCount.load());
131133
default:

test/conformance/adapter/urAdapterGetInfo.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@ struct urAdapterGetInfoTest : uur::runtime::urAdapterTest,
2020

2121
std::unordered_map<ur_adapter_info_t, size_t> adapter_info_size_map = {
2222
{UR_ADAPTER_INFO_BACKEND, sizeof(ur_adapter_backend_t)},
23+
{UR_ADAPTER_INFO_VERSION, sizeof(uint32_t)},
2324
{UR_ADAPTER_INFO_REFERENCE_COUNT, sizeof(uint32_t)},
2425
};
2526

2627
INSTANTIATE_TEST_SUITE_P(
2728
urAdapterGetInfo, urAdapterGetInfoTest,
28-
::testing::Values(UR_ADAPTER_INFO_BACKEND, UR_ADAPTER_INFO_REFERENCE_COUNT),
29+
::testing::Values(UR_ADAPTER_INFO_BACKEND, UR_ADAPTER_INFO_VERSION,
30+
UR_ADAPTER_INFO_REFERENCE_COUNT),
2931
[](const ::testing::TestParamInfo<ur_adapter_info_t> &info) {
3032
std::stringstream ss;
3133
ss << info.param;

tools/urinfo/urinfo.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ inline void printAdapterInfos(ur_adapter_handle_t hAdapter,
2828
std::string_view prefix = " ") {
2929
std::cout << prefix;
3030
printAdapterInfo<ur_adapter_backend_t>(hAdapter, UR_ADAPTER_INFO_BACKEND);
31+
std::cout << prefix;
32+
printAdapterInfo<uint32_t>(hAdapter, UR_ADAPTER_INFO_VERSION);
3133
}
3234

3335
inline void printPlatformInfos(ur_platform_handle_t hPlatform,

0 commit comments

Comments
 (0)