Skip to content

Commit 402c965

Browse files
committed
[SYCL] Add "ext_oneapi_offload" backend enum value
This adds `offload` as a backend to the sycl runtime. This means it is accepted as a value for `ONEAPI_DEVICE_SELECTOR` and friends, and prevents an offload device reporting itself as such causing an exception to be thrown. Note that the UR offload adapter is still not built as part of the build. The only way to use this is with a standalone build of unified-runtime with libur_adapter_offload enabled and in the `LD_LIBRARY_PATH`.
1 parent bc10261 commit 402c965

File tree

8 files changed

+21
-4
lines changed

8 files changed

+21
-4
lines changed

sycl/include/sycl/backend_types.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ enum class backend : char {
2525
// ext_intel_esimd_emulator = 5,
2626
ext_oneapi_hip = 6,
2727
ext_oneapi_native_cpu = 7,
28+
ext_oneapi_offload = 8,
2829
};
2930

3031
template <backend Backend> class backend_traits;
@@ -56,6 +57,9 @@ inline std::ostream &operator<<(std::ostream &Out, backend be) {
5657
case backend::ext_oneapi_native_cpu:
5758
Out << "ext_oneapi_native_cpu";
5859
break;
60+
case backend::ext_oneapi_offload:
61+
Out << "ext_oneapi_offload";
62+
break;
5963
case backend::all:
6064
Out << "all";
6165
}
@@ -77,6 +81,8 @@ inline std::string_view get_backend_name_no_vendor(backend Backend) {
7781
return "hip";
7882
case backend::ext_oneapi_native_cpu:
7983
return "native_cpu";
84+
case backend::ext_oneapi_offload:
85+
return "offload";
8086
case backend::all:
8187
return "all";
8288
}

sycl/source/backend.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ backend convertUrBackend(ur_backend_t UrBackend) {
6262
return backend::ext_oneapi_hip;
6363
case UR_BACKEND_NATIVE_CPU:
6464
return backend::ext_oneapi_native_cpu;
65+
case UR_BACKEND_OFFLOAD:
66+
return backend::ext_oneapi_offload;
6567
default:
6668
throw exception(make_error_code(errc::runtime),
6769
"convertBackend: Unsupported backend");

sycl/source/detail/config.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,17 @@ void dumpConfig() {
166166
// ONEAPI_DEVICE_SELECTOR
167167
// TODO: host device type will be removed once sycl_ext_oneapi_filter_selector
168168
// is removed.
169-
const std::array<std::pair<std::string, backend>, 7> &getSyclBeMap() {
170-
static const std::array<std::pair<std::string, backend>, 7> SyclBeMap = {
169+
const std::array<std::pair<std::string, backend>, 8> &getSyclBeMap() {
170+
static const std::array<std::pair<std::string, backend>, 8> SyclBeMap = {
171171
{{"host", backend::host},
172172
{"opencl", backend::opencl},
173173
{"level_zero", backend::ext_oneapi_level_zero},
174174
{"cuda", backend::ext_oneapi_cuda},
175175
{"hip", backend::ext_oneapi_hip},
176176
{"native_cpu", backend::ext_oneapi_native_cpu},
177+
// Note: Offload is intentionally excluded from our documentation - it's
178+
// only used for internal testing
179+
{"offload", backend::ext_oneapi_offload},
177180
{"*", backend::all}}};
178181
return SyclBeMap;
179182
}

sycl/source/detail/config.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ getSyclDeviceTypeMap() {
251251

252252
// Array is used by SYCL_DEVICE_FILTER and SYCL_DEVICE_ALLOWLIST and
253253
// ONEAPI_DEVICE_SELECTOR
254-
const std::array<std::pair<std::string, backend>, 7> &getSyclBeMap();
254+
const std::array<std::pair<std::string, backend>, 8> &getSyclBeMap();
255255

256256
// ---------------------------------------
257257
// ONEAPI_DEVICE_SELECTOR support

sycl/source/detail/ur.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,8 @@ static void initializeAdapters(std::vector<AdapterPtr> &Adapters,
217217
return backend::ext_oneapi_hip;
218218
case UR_BACKEND_NATIVE_CPU:
219219
return backend::ext_oneapi_native_cpu;
220+
case UR_BACKEND_OFFLOAD:
221+
return backend::ext_oneapi_offload;
220222
default:
221223
// Throw an exception, this should be unreachable.
222224
CHECK_UR_SUCCESS(UR_RESULT_ERROR_INVALID_ENUMERATION)

sycl/test-e2e/Basic/get_backend.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ bool check(backend be) {
2222
case backend::ext_oneapi_cuda:
2323
case backend::ext_oneapi_hip:
2424
case backend::ext_oneapi_native_cpu:
25+
case backend::ext_oneapi_offload:
2526
return true;
2627
default:
2728
return false;

sycl/test-e2e/Regression/device_num.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ const std::map<backend, std::string> BackendStringMap = {
2828
{backend::ext_oneapi_level_zero, "ext_oneapi_level_zero"},
2929
{backend::ext_oneapi_cuda, "ext_oneapi_cuda"},
3030
{backend::ext_oneapi_hip, "ext_oneapi_hip"},
31-
{backend::ext_oneapi_native_cpu, "ext_oneapi_native_cpu"}};
31+
{backend::ext_oneapi_native_cpu, "ext_oneapi_native_cpu"},
32+
{backend::ext_oneapi_offload, "ext_oneapi_offload"}};
3233

3334
std::string getDeviceTypeName(const device &d) {
3435
auto DeviceType = d.get_info<info::device::device_type>();

sycl/unittests/helpers/UrMock.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,8 @@ template <sycl::backend Backend = backend::opencl> class UrMock {
634634
return UR_BACKEND_HIP;
635635
case sycl::backend::ext_oneapi_native_cpu:
636636
return UR_BACKEND_NATIVE_CPU;
637+
case sycl::backend::ext_oneapi_offload:
638+
return UR_BACKEND_OFFLOAD;
637639
default:
638640
return UR_BACKEND_UNKNOWN;
639641
}

0 commit comments

Comments
 (0)