From cbdd2491ac7ca1f54ddb6f52664ec55a2d73a9ba Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Tue, 26 Nov 2024 15:23:43 +0100 Subject: [PATCH 1/5] Updated values to look for when setting SYCL_INCLUDE_DIR_HINT env varible --- conda-recipe/bld.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda-recipe/bld.bat b/conda-recipe/bld.bat index 922b6949d2fe..3dcdf754e272 100644 --- a/conda-recipe/bld.bat +++ b/conda-recipe/bld.bat @@ -16,7 +16,7 @@ if DEFINED OVERRIDE_INTEL_IPO ( set "SKBUILD_ARGS=%SKBUILD_ARGS% -DCMAKE_INTERPROCEDURAL_OPTIMIZATION:BOOL=FALSE" ) -FOR %%V IN (14.0.0 14 15.0.0 15 16.0.0 16 17.0.0 17) DO @( +FOR %%V IN (17.0.0 17 18.0.0 18 19.0.0 19) DO @( REM set DIR_HINT if directory exists IF EXIST "%BUILD_PREFIX%\Library\lib\clang\%%V\" ( SET "SYCL_INCLUDE_DIR_HINT=%BUILD_PREFIX%\Library\lib\clang\%%V" From 075edc3e2c8d30982c59d2fe1d1a1fbb6fb7dbfc Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Tue, 26 Nov 2024 15:28:37 +0100 Subject: [PATCH 2/5] Replace setting LD_LIBRARY_PATH with setting LIBRARY_PATH based on the preceding comment --- conda-recipe/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda-recipe/build.sh b/conda-recipe/build.sh index fa4b5a1c6e66..f660c40eb21a 100755 --- a/conda-recipe/build.sh +++ b/conda-recipe/build.sh @@ -1,7 +1,7 @@ #!/bin/bash # This is necessary to help DPC++ find Intel libraries such as SVML, IRNG, etc in build prefix -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${BUILD_PREFIX}/lib" +export LIBRARY_PATH="$LIBRARY_PATH:${BUILD_PREFIX}/lib" # Intel LLVM must cooperate with compiler and sysroot from conda echo "--gcc-toolchain=${BUILD_PREFIX} --sysroot=${BUILD_PREFIX}/${HOST}/sysroot -target ${HOST}" > icpx_for_conda.cfg From e66753f175f4b21cfefc17109e451c6e9c3202a9 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Tue, 26 Nov 2024 15:32:01 +0100 Subject: [PATCH 3/5] Add DPNP_WITH_REDIST:BOOL=OFF option to cmake script --- CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3205a6121aed..46d3e65b7e71 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,8 +6,9 @@ project(dpnp DESCRIPTION "NumPy-like API accelerated by SYCL." ) -option(DPNP_GENERATE_COVERAGE "Enable build DPNP with coverage instrumentation" FALSE) -option(DPNP_BACKEND_TESTS "Enable building of DPNP backend test suite" FALSE) +option(DPNP_GENERATE_COVERAGE "Enable build DPNP with coverage instrumentation" OFF) +option(DPNP_BACKEND_TESTS "Enable building of DPNP backend test suite" OFF) +option(DPNP_WITH_REDIST "Build DPNP assuming DPC++ redistributable is installed into Python prefix" OFF) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True) From 9cfa7f3714f895260de851405b45b33700322ce7 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Tue, 26 Nov 2024 15:35:20 +0100 Subject: [PATCH 4/5] Set DPNP_WITH_REDIST:BOOL=ON in conda build script --- conda-recipe/build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/conda-recipe/build.sh b/conda-recipe/build.sh index f660c40eb21a..d4523cae7be7 100755 --- a/conda-recipe/build.sh +++ b/conda-recipe/build.sh @@ -18,6 +18,7 @@ export DPL_ROOT_HINT=$PREFIX export MKL_ROOT_HINT=$PREFIX SKBUILD_ARGS=(-- "-DCMAKE_C_COMPILER:PATH=icx" "-DCMAKE_CXX_COMPILER:PATH=icpx" "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON") SKBUILD_ARGS=("${SKBUILD_ARGS[@]}" "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON") +SKBUILD_ARGS=("${SKBUILD_ARGS[@]}" "-DDPNP_WITH_REDIST:BOOL=ON") # Build wheel package WHEELS_BUILD_ARGS=("-p" "manylinux_2_28_x86_64") From 4113020b27cd54d245efbd7eb229b4158f5f8e33 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Tue, 26 Nov 2024 19:53:50 +0100 Subject: [PATCH 5/5] Support DPNP_WITH_REDIST for backend, cython and pybind11 extensions --- dpnp/CMakeLists.txt | 11 +++++++---- dpnp/backend/CMakeLists.txt | 4 ++++ dpnp/backend/extensions/blas/CMakeLists.txt | 4 ++++ dpnp/backend/extensions/fft/CMakeLists.txt | 4 ++++ dpnp/backend/extensions/lapack/CMakeLists.txt | 4 ++++ dpnp/backend/extensions/statistics/CMakeLists.txt | 4 ++++ dpnp/backend/extensions/ufunc/CMakeLists.txt | 4 ++++ dpnp/backend/extensions/vm/CMakeLists.txt | 4 ++++ 8 files changed, 35 insertions(+), 4 deletions(-) diff --git a/dpnp/CMakeLists.txt b/dpnp/CMakeLists.txt index d4ac718954a6..d49b0a90a919 100644 --- a/dpnp/CMakeLists.txt +++ b/dpnp/CMakeLists.txt @@ -1,6 +1,5 @@ function(build_dpnp_cython_ext _trgt _src _dest) set(options SYCL) - cmake_parse_arguments(BUILD_DPNP_EXT "${options}" "" "" ${ARGN}) add_cython_target(${_trgt} ${_src} CXX OUTPUT_VAR _generated_src) message(STATUS "Using ${_trgt}") @@ -41,15 +40,19 @@ function(build_dpnp_cython_ext _trgt _src _dest) VERBATIM COMMENT "Copying Cython-generated source for target ${_trgt} to dpnp source layout" ) endif() + + set(_rpath_value "$ORIGIN/..") + if (DPNP_WITH_REDIST) + set(_rpath_value "${_rpath_value}:$ORIGIN/../../../../") + endif() + set_target_properties(${_trgt} PROPERTIES INSTALL_RPATH ${_rpath_value}) + install(TARGETS ${_trgt} LIBRARY DESTINATION ${_dest}) endfunction() function(build_dpnp_cython_ext_with_backend _trgt _src _dest) build_dpnp_cython_ext(${_trgt} ${_src} ${_dest}) target_link_libraries(${_trgt} PRIVATE dpnp_backend_library) - if (UNIX) - set_target_properties(${_trgt} PROPERTIES INSTALL_RPATH "$ORIGIN/..") - endif() endfunction() add_subdirectory(backend) diff --git a/dpnp/backend/CMakeLists.txt b/dpnp/backend/CMakeLists.txt index 1924ad64027f..2a4a0fef370f 100644 --- a/dpnp/backend/CMakeLists.txt +++ b/dpnp/backend/CMakeLists.txt @@ -100,6 +100,10 @@ add_library(dpnp_backend_library INTERFACE IMPORTED GLOBAL) target_include_directories(dpnp_backend_library BEFORE INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/src) target_link_libraries(dpnp_backend_library INTERFACE ${_trgt}) +if (DPNP_WITH_REDIST) + set_target_properties(${python_module_name} PROPERTIES INSTALL_RPATH "$ORIGIN/../../../") +endif() + if (DPNP_BACKEND_TESTS) add_subdirectory(tests) endif() diff --git a/dpnp/backend/extensions/blas/CMakeLists.txt b/dpnp/backend/extensions/blas/CMakeLists.txt index 1695785e7947..0aafd1ba8b49 100644 --- a/dpnp/backend/extensions/blas/CMakeLists.txt +++ b/dpnp/backend/extensions/blas/CMakeLists.txt @@ -93,6 +93,10 @@ else() target_link_libraries(${python_module_name} PUBLIC MKL::MKL_SYCL::BLAS) endif() +if (DPNP_WITH_REDIST) + set_target_properties(${python_module_name} PROPERTIES INSTALL_RPATH "$ORIGIN/../../../../../../") +endif() + install(TARGETS ${python_module_name} DESTINATION "dpnp/backend/extensions/blas" ) diff --git a/dpnp/backend/extensions/fft/CMakeLists.txt b/dpnp/backend/extensions/fft/CMakeLists.txt index 939848a12d69..f9fd08a30cc1 100644 --- a/dpnp/backend/extensions/fft/CMakeLists.txt +++ b/dpnp/backend/extensions/fft/CMakeLists.txt @@ -89,6 +89,10 @@ else() target_link_libraries(${python_module_name} PUBLIC MKL::MKL_SYCL::DFT) endif() +if (DPNP_WITH_REDIST) + set_target_properties(${python_module_name} PROPERTIES INSTALL_RPATH "$ORIGIN/../../../../../../") +endif() + install(TARGETS ${python_module_name} DESTINATION "dpnp/backend/extensions/fft" ) diff --git a/dpnp/backend/extensions/lapack/CMakeLists.txt b/dpnp/backend/extensions/lapack/CMakeLists.txt index 8d5dd5342b53..de37e25443eb 100644 --- a/dpnp/backend/extensions/lapack/CMakeLists.txt +++ b/dpnp/backend/extensions/lapack/CMakeLists.txt @@ -107,6 +107,10 @@ else() target_link_libraries(${python_module_name} PUBLIC MKL::MKL_SYCL::LAPACK) endif() +if (DPNP_WITH_REDIST) + set_target_properties(${python_module_name} PROPERTIES INSTALL_RPATH "$ORIGIN/../../../../../../") +endif() + install(TARGETS ${python_module_name} DESTINATION "dpnp/backend/extensions/lapack" ) diff --git a/dpnp/backend/extensions/statistics/CMakeLists.txt b/dpnp/backend/extensions/statistics/CMakeLists.txt index 2b784555630d..26dda2800086 100644 --- a/dpnp/backend/extensions/statistics/CMakeLists.txt +++ b/dpnp/backend/extensions/statistics/CMakeLists.txt @@ -84,6 +84,10 @@ if (DPNP_GENERATE_COVERAGE) target_link_options(${python_module_name} PRIVATE -fprofile-instr-generate -fcoverage-mapping) endif() +if (DPNP_WITH_REDIST) + set_target_properties(${python_module_name} PROPERTIES INSTALL_RPATH "$ORIGIN/../../../../../../") +endif() + install(TARGETS ${python_module_name} DESTINATION "dpnp/backend/extensions/statistics" ) diff --git a/dpnp/backend/extensions/ufunc/CMakeLists.txt b/dpnp/backend/extensions/ufunc/CMakeLists.txt index cb85bd6213ed..c7158548b65f 100644 --- a/dpnp/backend/extensions/ufunc/CMakeLists.txt +++ b/dpnp/backend/extensions/ufunc/CMakeLists.txt @@ -103,6 +103,10 @@ if (DPNP_GENERATE_COVERAGE) target_link_options(${python_module_name} PRIVATE -fprofile-instr-generate -fcoverage-mapping) endif() +if (DPNP_WITH_REDIST) + set_target_properties(${python_module_name} PROPERTIES INSTALL_RPATH "$ORIGIN/../../../../../../") +endif() + install(TARGETS ${python_module_name} DESTINATION "dpnp/backend/extensions/ufunc" ) diff --git a/dpnp/backend/extensions/vm/CMakeLists.txt b/dpnp/backend/extensions/vm/CMakeLists.txt index 0bbf6476aa52..79b2238b74d6 100644 --- a/dpnp/backend/extensions/vm/CMakeLists.txt +++ b/dpnp/backend/extensions/vm/CMakeLists.txt @@ -120,6 +120,10 @@ else() target_link_libraries(${python_module_name} PUBLIC MKL::MKL_SYCL::VM) endif() +if (DPNP_WITH_REDIST) + set_target_properties(${python_module_name} PROPERTIES INSTALL_RPATH "$ORIGIN/../../../../../../") +endif() + install(TARGETS ${python_module_name} DESTINATION "dpnp/backend/extensions/vm" )