Skip to content

Commit 55a872f

Browse files
committed
[UR][L0] Add support for passing device list to urProgramBuild/Link/Compile
piProgramBuild receives a list of devices, while urProgramBuild does not. This produces a series of issues when a UR program needs to be created for a specific device. So define a new API, called urProgramBuildExp to pass this list. Requires related patch in Unified Runtime Adapters here: oneapi-src/unified-runtime#934 Signed-off-by: Spruit, Neil R <[email protected]>
1 parent 08907a3 commit 55a872f

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

sycl/plugins/unified_runtime/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,14 @@ endif()
5555
if(SYCL_PI_UR_USE_FETCH_CONTENT)
5656
include(FetchContent)
5757

58-
set(UNIFIED_RUNTIME_REPO "https://github.com/oneapi-src/unified-runtime.git")
58+
set(UNIFIED_RUNTIME_REPO "https://github.com/nrspruit/unified-runtime.git")
5959
# commit 659d3f469faa99a886fa680a3d6d20449b109578
6060
# Merge: 192e9404 f94550b4
6161
# Author: Kenneth Benzie (Benie) <[email protected]>
6262
# Date: Tue Nov 14 16:45:24 2023 +0000
6363
# Merge pull request #1059 from martygrant/martin/moveNativeCPUAdapterToUR
6464
# [NATIVECPU] Move Native CPU adapter to UR.
65-
set(UNIFIED_RUNTIME_TAG 659d3f469faa99a886fa680a3d6d20449b109578)
65+
set(UNIFIED_RUNTIME_TAG 0790bf8fd34f5d41b5ef4ffc120a6a2acc84b454)
6666

6767
if(SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO)
6868
set(UNIFIED_RUNTIME_REPO "${SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO}")

sycl/plugins/unified_runtime/pi2ur.hpp

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1985,10 +1985,17 @@ piProgramLink(pi_context Context, pi_uint32 NumDevices,
19851985
ur_program_handle_t *UrProgram =
19861986
reinterpret_cast<ur_program_handle_t *>(RetProgram);
19871987

1988-
HANDLE_ERRORS(urProgramLink(UrContext, NumInputPrograms, UrInputPrograms,
1989-
Options, UrProgram));
1988+
auto UrDevices = reinterpret_cast<ur_device_handle_t *>(
1989+
const_cast<pi_device *>(DeviceList));
19901990

1991-
return PI_SUCCESS;
1991+
auto urResult =
1992+
urProgramLinkExp(UrContext, NumDevices, UrDevices, NumInputPrograms,
1993+
UrInputPrograms, Options, UrProgram);
1994+
if (urResult == UR_RESULT_ERROR_UNSUPPORTED_FEATURE) {
1995+
HANDLE_ERRORS(urProgramLink(UrContext, NumInputPrograms, UrInputPrograms,
1996+
Options, UrProgram));
1997+
}
1998+
return ur2piResult(urResult);
19921999
}
19932000

19942001
inline pi_result piProgramCompile(
@@ -2017,9 +2024,15 @@ inline pi_result piProgramCompile(
20172024
HANDLE_ERRORS(urProgramGetInfo(UrProgram, PropName, sizeof(&UrContext),
20182025
&UrContext, nullptr));
20192026

2020-
HANDLE_ERRORS(urProgramCompile(UrContext, UrProgram, Options));
2027+
auto UrDevices = reinterpret_cast<ur_device_handle_t *>(
2028+
const_cast<pi_device *>(DeviceList));
20212029

2022-
return PI_SUCCESS;
2030+
auto urResult =
2031+
urProgramCompileExp(UrProgram, NumDevices, UrDevices, Options);
2032+
if (urResult == UR_RESULT_ERROR_UNSUPPORTED_FEATURE) {
2033+
HANDLE_ERRORS(urProgramCompile(UrContext, UrProgram, Options));
2034+
}
2035+
return ur2piResult(urResult);
20232036
}
20242037

20252038
inline pi_result
@@ -2050,9 +2063,14 @@ piProgramBuild(pi_program Program, pi_uint32 NumDevices,
20502063
HANDLE_ERRORS(urProgramGetInfo(UrProgram, PropName, sizeof(&UrContext),
20512064
&UrContext, nullptr));
20522065

2053-
HANDLE_ERRORS(urProgramBuild(UrContext, UrProgram, Options));
2066+
auto UrDevices = reinterpret_cast<ur_device_handle_t *>(
2067+
const_cast<pi_device *>(DeviceList));
20542068

2055-
return PI_SUCCESS;
2069+
auto urResult = urProgramBuildExp(UrProgram, NumDevices, UrDevices, Options);
2070+
if (urResult == UR_RESULT_ERROR_UNSUPPORTED_FEATURE) {
2071+
HANDLE_ERRORS(urProgramBuild(UrContext, UrProgram, Options));
2072+
}
2073+
return ur2piResult(urResult);
20562074
}
20572075

20582076
inline pi_result piextProgramSetSpecializationConstant(pi_program Program,

0 commit comments

Comments
 (0)