From 55a872f6514f26a1314aa1ecccb58e5b87fa8649 Mon Sep 17 00:00:00 2001 From: "Spruit, Neil R" Date: Fri, 6 Oct 2023 16:58:35 -0700 Subject: [PATCH 1/4] [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: https://github.com/oneapi-src/unified-runtime/pull/934 Signed-off-by: Spruit, Neil R --- sycl/plugins/unified_runtime/CMakeLists.txt | 4 +-- sycl/plugins/unified_runtime/pi2ur.hpp | 32 ++++++++++++++++----- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/sycl/plugins/unified_runtime/CMakeLists.txt b/sycl/plugins/unified_runtime/CMakeLists.txt index af3e1397b3a6f..811a3c5659696 100644 --- a/sycl/plugins/unified_runtime/CMakeLists.txt +++ b/sycl/plugins/unified_runtime/CMakeLists.txt @@ -55,14 +55,14 @@ endif() if(SYCL_PI_UR_USE_FETCH_CONTENT) include(FetchContent) - set(UNIFIED_RUNTIME_REPO "https://github.com/oneapi-src/unified-runtime.git") + set(UNIFIED_RUNTIME_REPO "https://github.com/nrspruit/unified-runtime.git") # commit 659d3f469faa99a886fa680a3d6d20449b109578 # Merge: 192e9404 f94550b4 # Author: Kenneth Benzie (Benie) # Date: Tue Nov 14 16:45:24 2023 +0000 # Merge pull request #1059 from martygrant/martin/moveNativeCPUAdapterToUR # [NATIVECPU] Move Native CPU adapter to UR. - set(UNIFIED_RUNTIME_TAG 659d3f469faa99a886fa680a3d6d20449b109578) + set(UNIFIED_RUNTIME_TAG 0790bf8fd34f5d41b5ef4ffc120a6a2acc84b454) 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..e146c1cce223d 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) { + HANDLE_ERRORS(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) { + HANDLE_ERRORS(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) { + HANDLE_ERRORS(urProgramBuild(UrContext, UrProgram, Options)); + } + return ur2piResult(urResult); } inline pi_result piextProgramSetSpecializationConstant(pi_program Program, From 9fdd3812252f9eb5830e3cf41766097213e1059d Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Tue, 21 Nov 2023 11:37:03 +0000 Subject: [PATCH 2/4] [UR] Bump tag to ce152a64deae5fd69b5a7cebb0a8ec119b59a19a --- sycl/plugins/unified_runtime/CMakeLists.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sycl/plugins/unified_runtime/CMakeLists.txt b/sycl/plugins/unified_runtime/CMakeLists.txt index 811a3c5659696..f62f34d6d42bb 100644 --- a/sycl/plugins/unified_runtime/CMakeLists.txt +++ b/sycl/plugins/unified_runtime/CMakeLists.txt @@ -55,14 +55,14 @@ endif() if(SYCL_PI_UR_USE_FETCH_CONTENT) include(FetchContent) - set(UNIFIED_RUNTIME_REPO "https://github.com/nrspruit/unified-runtime.git") - # commit 659d3f469faa99a886fa680a3d6d20449b109578 - # Merge: 192e9404 f94550b4 + set(UNIFIED_RUNTIME_REPO "https://github.com/oneapi-src/unified-runtime.git") + # commit ce152a64deae5fd69b5a7cebb0a8ec119b59a19a + # Merge: 04799e73 0790bf8f # Author: Kenneth Benzie (Benie) - # Date: Tue Nov 14 16:45:24 2023 +0000 - # Merge pull request #1059 from martygrant/martin/moveNativeCPUAdapterToUR - # [NATIVECPU] Move Native CPU adapter to UR. - set(UNIFIED_RUNTIME_TAG 0790bf8fd34f5d41b5ef4ffc120a6a2acc84b454) + # Date: Tue Nov 21 11:34:26 2023 +0000 + # Merge pull request #934 from nrspruit/fixprogrambuild_updated + # [UR][L0] Add support for passing device list to urProgramBuild/Link/Compile + set(UNIFIED_RUNTIME_TAG ce152a64deae5fd69b5a7cebb0a8ec119b59a19a) if(SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO) set(UNIFIED_RUNTIME_REPO "${SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO}") From 27868519d0ed6dfd18ee2d2cbb62b3f62e1db79d Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Tue, 21 Nov 2023 16:42:11 +0000 Subject: [PATCH 3/4] [UR] Bump tag to 71957e849435169b43e51a42025afeeb63d7508b --- sycl/plugins/unified_runtime/CMakeLists.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sycl/plugins/unified_runtime/CMakeLists.txt b/sycl/plugins/unified_runtime/CMakeLists.txt index f62f34d6d42bb..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 ce152a64deae5fd69b5a7cebb0a8ec119b59a19a - # Merge: 04799e73 0790bf8f + # commit 71957e849435169b43e51a42025afeeb63d7508b + # Merge: ce152a64 e001b98d # Author: Kenneth Benzie (Benie) - # Date: Tue Nov 21 11:34:26 2023 +0000 - # Merge pull request #934 from nrspruit/fixprogrambuild_updated - # [UR][L0] Add support for passing device list to urProgramBuild/Link/Compile - set(UNIFIED_RUNTIME_TAG ce152a64deae5fd69b5a7cebb0a8ec119b59a19a) + # 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}") From 41d8206024811728c851c0773eecbe94ae4e0167 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Tue, 21 Nov 2023 18:21:59 +0000 Subject: [PATCH 4/4] Ensure PI_SUCCESS is returned on success --- sycl/plugins/unified_runtime/pi2ur.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sycl/plugins/unified_runtime/pi2ur.hpp b/sycl/plugins/unified_runtime/pi2ur.hpp index e146c1cce223d..2ae10d0ab419e 100644 --- a/sycl/plugins/unified_runtime/pi2ur.hpp +++ b/sycl/plugins/unified_runtime/pi2ur.hpp @@ -1992,8 +1992,8 @@ piProgramLink(pi_context Context, pi_uint32 NumDevices, urProgramLinkExp(UrContext, NumDevices, UrDevices, NumInputPrograms, UrInputPrograms, Options, UrProgram); if (urResult == UR_RESULT_ERROR_UNSUPPORTED_FEATURE) { - HANDLE_ERRORS(urProgramLink(UrContext, NumInputPrograms, UrInputPrograms, - Options, UrProgram)); + urResult = urProgramLink(UrContext, NumInputPrograms, UrInputPrograms, + Options, UrProgram); } return ur2piResult(urResult); } @@ -2030,7 +2030,7 @@ inline pi_result piProgramCompile( auto urResult = urProgramCompileExp(UrProgram, NumDevices, UrDevices, Options); if (urResult == UR_RESULT_ERROR_UNSUPPORTED_FEATURE) { - HANDLE_ERRORS(urProgramCompile(UrContext, UrProgram, Options)); + urResult = urProgramCompile(UrContext, UrProgram, Options); } return ur2piResult(urResult); } @@ -2068,7 +2068,7 @@ piProgramBuild(pi_program Program, pi_uint32 NumDevices, auto urResult = urProgramBuildExp(UrProgram, NumDevices, UrDevices, Options); if (urResult == UR_RESULT_ERROR_UNSUPPORTED_FEATURE) { - HANDLE_ERRORS(urProgramBuild(UrContext, UrProgram, Options)); + urResult = urProgramBuild(UrContext, UrProgram, Options); } return ur2piResult(urResult); }