diff --git a/sycl/plugins/unified_runtime/CMakeLists.txt b/sycl/plugins/unified_runtime/CMakeLists.txt index db4bfe4a5f60c..1465d98fb7c58 100644 --- a/sycl/plugins/unified_runtime/CMakeLists.txt +++ b/sycl/plugins/unified_runtime/CMakeLists.txt @@ -56,13 +56,13 @@ if(SYCL_PI_UR_USE_FETCH_CONTENT) include(FetchContent) set(UNIFIED_RUNTIME_REPO "https://github.com/oneapi-src/unified-runtime.git") - # commit 04799e735a7ddd0839568b25bf03fa8f77160b7d - # Merge: 534071e5 4cf02cb9 + # commit 71957e849435169b43e51a42025afeeb63d7508b + # Merge: ce152a64 e001b98d # Author: Kenneth Benzie (Benie) - # Date: Mon Nov 20 10:24:50 2023 +0000 - # Merge pull request #1048 from callumfare/opencl_fix_urMemBufferCreate_leak - # [OpenCL] Fix memory leak and coverity issue with struct-to-array casts - set(UNIFIED_RUNTIME_TAG 04799e735a7ddd0839568b25bf03fa8f77160b7d) + # Date: Tue Nov 21 16:41:08 2023 +0000 + # Merge pull request #1100 from kbenzie/benie/fixup-multi-device-compile + # [CUDA][HIP][OpenCL][NATIVECPU] Fix multi-device compile + set(UNIFIED_RUNTIME_TAG 71957e849435169b43e51a42025afeeb63d7508b) if(SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO) set(UNIFIED_RUNTIME_REPO "${SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO}") diff --git a/sycl/plugins/unified_runtime/pi2ur.hpp b/sycl/plugins/unified_runtime/pi2ur.hpp index d67f7837a2ad4..2ae10d0ab419e 100644 --- a/sycl/plugins/unified_runtime/pi2ur.hpp +++ b/sycl/plugins/unified_runtime/pi2ur.hpp @@ -1985,10 +1985,17 @@ piProgramLink(pi_context Context, pi_uint32 NumDevices, ur_program_handle_t *UrProgram = reinterpret_cast(RetProgram); - HANDLE_ERRORS(urProgramLink(UrContext, NumInputPrograms, UrInputPrograms, - Options, UrProgram)); + auto UrDevices = reinterpret_cast( + const_cast(DeviceList)); - return PI_SUCCESS; + auto urResult = + urProgramLinkExp(UrContext, NumDevices, UrDevices, NumInputPrograms, + UrInputPrograms, Options, UrProgram); + if (urResult == UR_RESULT_ERROR_UNSUPPORTED_FEATURE) { + urResult = urProgramLink(UrContext, NumInputPrograms, UrInputPrograms, + Options, UrProgram); + } + return ur2piResult(urResult); } inline pi_result piProgramCompile( @@ -2017,9 +2024,15 @@ inline pi_result piProgramCompile( HANDLE_ERRORS(urProgramGetInfo(UrProgram, PropName, sizeof(&UrContext), &UrContext, nullptr)); - HANDLE_ERRORS(urProgramCompile(UrContext, UrProgram, Options)); + auto UrDevices = reinterpret_cast( + const_cast(DeviceList)); - return PI_SUCCESS; + auto urResult = + urProgramCompileExp(UrProgram, NumDevices, UrDevices, Options); + if (urResult == UR_RESULT_ERROR_UNSUPPORTED_FEATURE) { + urResult = urProgramCompile(UrContext, UrProgram, Options); + } + return ur2piResult(urResult); } inline pi_result @@ -2050,9 +2063,14 @@ piProgramBuild(pi_program Program, pi_uint32 NumDevices, HANDLE_ERRORS(urProgramGetInfo(UrProgram, PropName, sizeof(&UrContext), &UrContext, nullptr)); - HANDLE_ERRORS(urProgramBuild(UrContext, UrProgram, Options)); + auto UrDevices = reinterpret_cast( + const_cast(DeviceList)); - return PI_SUCCESS; + auto urResult = urProgramBuildExp(UrProgram, NumDevices, UrDevices, Options); + if (urResult == UR_RESULT_ERROR_UNSUPPORTED_FEATURE) { + urResult = urProgramBuild(UrContext, UrProgram, Options); + } + return ur2piResult(urResult); } inline pi_result piextProgramSetSpecializationConstant(pi_program Program,