From d7a5ffee85a1743bcb8453246959243feea8a3b2 Mon Sep 17 00:00:00 2001 From: Vladislav Perevezentsev Date: Thu, 13 Feb 2025 01:06:44 -0800 Subject: [PATCH 1/4] Refactor CMake to auto-detect oneMath or oneMKL --- CMakeLists.txt | 9 +++++++++ dpnp/backend/extensions/blas/CMakeLists.txt | 2 +- dpnp/backend/extensions/fft/CMakeLists.txt | 2 +- dpnp/backend/extensions/lapack/CMakeLists.txt | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 50f965fc7208..a0126d566238 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -123,10 +123,19 @@ if(_use_onemkl_interfaces) onemkl_interfaces_library GIT_REPOSITORY https://github.com/oneapi-src/oneMKL.git GIT_TAG 8f4312ef966420b9b8b4b82b9d5c22e2c91a1fe7 # v0.6 + #GIT_TAG develop ) endif() FetchContent_MakeAvailable(onemkl_interfaces_library) + if(TARGET onemath) + set(USED_MATH_LIBRARY "onemath" CACHE INTERNAL "Selected OneAPI math library") + elseif(TARGET onemkl) + set(USED_MATH_LIBRARY "onemkl" CACHE INTERNAL "Selected OneAPI math library") + else() + message(STATUS "Neither 'oneMath' nor 'oneMKL' found!") + endif() + message(STATUS "OneAPI math library used: ${USED_MATH_LIBRARY}") set(CMAKE_INSTALL_RPATH "${CMAKE_BINARY_DIR}/lib") endif() diff --git a/dpnp/backend/extensions/blas/CMakeLists.txt b/dpnp/backend/extensions/blas/CMakeLists.txt index 7a3d18457d98..e42123d9a9c3 100644 --- a/dpnp/backend/extensions/blas/CMakeLists.txt +++ b/dpnp/backend/extensions/blas/CMakeLists.txt @@ -84,7 +84,7 @@ if (DPNP_GENERATE_COVERAGE) endif() if(_use_onemkl_interfaces) - target_link_libraries(${python_module_name} PUBLIC onemkl) + target_link_libraries(${python_module_name} PUBLIC ${USED_MATH_LIBRARY}) target_compile_options(${python_module_name} PRIVATE -DUSE_ONEMKL_INTERFACES) if(_use_onemkl_interfaces_cuda) target_compile_options(${python_module_name} PRIVATE -DUSE_ONEMKL_CUBLAS) diff --git a/dpnp/backend/extensions/fft/CMakeLists.txt b/dpnp/backend/extensions/fft/CMakeLists.txt index 46a6f7ceaa04..a0c4a5ec6bd5 100644 --- a/dpnp/backend/extensions/fft/CMakeLists.txt +++ b/dpnp/backend/extensions/fft/CMakeLists.txt @@ -83,7 +83,7 @@ if (DPNP_GENERATE_COVERAGE) endif() if(_use_onemkl_interfaces) - target_link_libraries(${python_module_name} PUBLIC onemkl) + target_link_libraries(${python_module_name} PUBLIC ${USED_MATH_LIBRARY}) target_compile_options(${python_module_name} PRIVATE -DUSE_ONEMKL_INTERFACES) else() target_link_libraries(${python_module_name} PUBLIC MKL::MKL_SYCL::DFT) diff --git a/dpnp/backend/extensions/lapack/CMakeLists.txt b/dpnp/backend/extensions/lapack/CMakeLists.txt index 13c8b49c45f0..81d9613737d8 100644 --- a/dpnp/backend/extensions/lapack/CMakeLists.txt +++ b/dpnp/backend/extensions/lapack/CMakeLists.txt @@ -101,7 +101,7 @@ if (DPNP_GENERATE_COVERAGE) endif() if(_use_onemkl_interfaces) - target_link_libraries(${python_module_name} PUBLIC onemkl) + target_link_libraries(${python_module_name} PUBLIC ${USED_MATH_LIBRARY}) target_compile_options(${python_module_name} PRIVATE -DUSE_ONEMKL_INTERFACES) else() target_link_libraries(${python_module_name} PUBLIC MKL::MKL_SYCL::LAPACK) From 367759c8be38f95534e1965e94aa90d00b398f88 Mon Sep 17 00:00:00 2001 From: Vladislav Perevezentsev Date: Thu, 13 Feb 2025 01:09:25 -0800 Subject: [PATCH 2/4] Update oneMKL repository URL to oneMath --- CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a0126d566238..cc4d1f47115d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -121,9 +121,8 @@ if(_use_onemkl_interfaces) else() FetchContent_Declare( onemkl_interfaces_library - GIT_REPOSITORY https://github.com/oneapi-src/oneMKL.git + GIT_REPOSITORY https://github.com/uxlfoundation/oneMath.git GIT_TAG 8f4312ef966420b9b8b4b82b9d5c22e2c91a1fe7 # v0.6 - #GIT_TAG develop ) endif() From c540be3cca93c01c4583b221e1e490f5daf8f1e3 Mon Sep 17 00:00:00 2001 From: Vladislav Perevezentsev Date: Thu, 13 Feb 2025 03:37:29 -0800 Subject: [PATCH 3/4] Apply review remarks --- CMakeLists.txt | 8 ++++---- dpnp/backend/extensions/blas/CMakeLists.txt | 2 +- dpnp/backend/extensions/fft/CMakeLists.txt | 2 +- dpnp/backend/extensions/lapack/CMakeLists.txt | 2 +- dpnp/backend/extensions/lapack/getrf.cpp | 2 ++ 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cc4d1f47115d..d5cbdb33c245 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -128,13 +128,13 @@ if(_use_onemkl_interfaces) FetchContent_MakeAvailable(onemkl_interfaces_library) if(TARGET onemath) - set(USED_MATH_LIBRARY "onemath" CACHE INTERNAL "Selected OneAPI math library") + set(MKL_INTERFACES_LIB "onemath" CACHE INTERNAL "OneMath lib target") elseif(TARGET onemkl) - set(USED_MATH_LIBRARY "onemkl" CACHE INTERNAL "Selected OneAPI math library") + set(MKL_INTERFACES_LIB "onemkl" CACHE INTERNAL "OneMath lib target") else() - message(STATUS "Neither 'oneMath' nor 'oneMKL' found!") + message(FATAL_ERROR "Neither 'oneMath' nor 'oneMKL' found!") endif() - message(STATUS "OneAPI math library used: ${USED_MATH_LIBRARY}") + message(STATUS "OneMath lib target used: ${MKL_INTERFACES_LIB}") set(CMAKE_INSTALL_RPATH "${CMAKE_BINARY_DIR}/lib") endif() diff --git a/dpnp/backend/extensions/blas/CMakeLists.txt b/dpnp/backend/extensions/blas/CMakeLists.txt index e42123d9a9c3..d5639a24b268 100644 --- a/dpnp/backend/extensions/blas/CMakeLists.txt +++ b/dpnp/backend/extensions/blas/CMakeLists.txt @@ -84,7 +84,7 @@ if (DPNP_GENERATE_COVERAGE) endif() if(_use_onemkl_interfaces) - target_link_libraries(${python_module_name} PUBLIC ${USED_MATH_LIBRARY}) + target_link_libraries(${python_module_name} PRIVATE ${MKL_INTERFACES_LIB}) target_compile_options(${python_module_name} PRIVATE -DUSE_ONEMKL_INTERFACES) if(_use_onemkl_interfaces_cuda) target_compile_options(${python_module_name} PRIVATE -DUSE_ONEMKL_CUBLAS) diff --git a/dpnp/backend/extensions/fft/CMakeLists.txt b/dpnp/backend/extensions/fft/CMakeLists.txt index a0c4a5ec6bd5..327c85a96dac 100644 --- a/dpnp/backend/extensions/fft/CMakeLists.txt +++ b/dpnp/backend/extensions/fft/CMakeLists.txt @@ -83,7 +83,7 @@ if (DPNP_GENERATE_COVERAGE) endif() if(_use_onemkl_interfaces) - target_link_libraries(${python_module_name} PUBLIC ${USED_MATH_LIBRARY}) + target_link_libraries(${python_module_name} PRIVATE ${MKL_INTERFACES_LIB}) target_compile_options(${python_module_name} PRIVATE -DUSE_ONEMKL_INTERFACES) else() target_link_libraries(${python_module_name} PUBLIC MKL::MKL_SYCL::DFT) diff --git a/dpnp/backend/extensions/lapack/CMakeLists.txt b/dpnp/backend/extensions/lapack/CMakeLists.txt index 81d9613737d8..a196b6fac8d0 100644 --- a/dpnp/backend/extensions/lapack/CMakeLists.txt +++ b/dpnp/backend/extensions/lapack/CMakeLists.txt @@ -101,7 +101,7 @@ if (DPNP_GENERATE_COVERAGE) endif() if(_use_onemkl_interfaces) - target_link_libraries(${python_module_name} PUBLIC ${USED_MATH_LIBRARY}) + target_link_libraries(${python_module_name} PRIVATE ${MKL_INTERFACES_LIB}) target_compile_options(${python_module_name} PRIVATE -DUSE_ONEMKL_INTERFACES) else() target_link_libraries(${python_module_name} PUBLIC MKL::MKL_SYCL::LAPACK) diff --git a/dpnp/backend/extensions/lapack/getrf.cpp b/dpnp/backend/extensions/lapack/getrf.cpp index bbb5079a2232..7c6053da47fb 100644 --- a/dpnp/backend/extensions/lapack/getrf.cpp +++ b/dpnp/backend/extensions/lapack/getrf.cpp @@ -96,6 +96,8 @@ static sycl::event getrf_impl(sycl::queue &exec_q, } catch (mkl_lapack::exception const &e) { is_exception_caught = true; info = e.info(); + std::cout << "info: " << info << std::endl; + std::cout << e.detail() << std::endl; if (info < 0) { error_msg << "Parameter number " << -info From 974b5a0ff1aecfaaa76872f2ff96242c136a5956 Mon Sep 17 00:00:00 2001 From: Vladislav Perevezentsev Date: Thu, 13 Feb 2025 03:42:30 -0800 Subject: [PATCH 4/4] Apply remarks --- CMakeLists.txt | 4 ++-- dpnp/backend/extensions/lapack/getrf.cpp | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d5cbdb33c245..b4598e53ae68 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -130,11 +130,11 @@ if(_use_onemkl_interfaces) if(TARGET onemath) set(MKL_INTERFACES_LIB "onemath" CACHE INTERNAL "OneMath lib target") elseif(TARGET onemkl) - set(MKL_INTERFACES_LIB "onemkl" CACHE INTERNAL "OneMath lib target") + set(MKL_INTERFACES_LIB "onemkl" CACHE INTERNAL "OneMKL lib target") else() message(FATAL_ERROR "Neither 'oneMath' nor 'oneMKL' found!") endif() - message(STATUS "OneMath lib target used: ${MKL_INTERFACES_LIB}") + message(STATUS "MKL interfaces lib target used: ${MKL_INTERFACES_LIB}") set(CMAKE_INSTALL_RPATH "${CMAKE_BINARY_DIR}/lib") endif() diff --git a/dpnp/backend/extensions/lapack/getrf.cpp b/dpnp/backend/extensions/lapack/getrf.cpp index 7c6053da47fb..bbb5079a2232 100644 --- a/dpnp/backend/extensions/lapack/getrf.cpp +++ b/dpnp/backend/extensions/lapack/getrf.cpp @@ -96,8 +96,6 @@ static sycl::event getrf_impl(sycl::queue &exec_q, } catch (mkl_lapack::exception const &e) { is_exception_caught = true; info = e.info(); - std::cout << "info: " << info << std::endl; - std::cout << e.detail() << std::endl; if (info < 0) { error_msg << "Parameter number " << -info