From 0cf4dddbc0bdc3e79a05818f5afececb7e283aa8 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Thu, 9 Mar 2023 11:13:29 -0500 Subject: [PATCH] magma: fix #220343 and separate CUDA build/run-time dependencies --- .../libraries/science/math/magma/generic.nix | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/pkgs/development/libraries/science/math/magma/generic.nix b/pkgs/development/libraries/science/math/magma/generic.nix index 6ab68e297c2c5..52afc2fefefd3 100644 --- a/pkgs/development/libraries/science/math/magma/generic.nix +++ b/pkgs/development/libraries/science/math/magma/generic.nix @@ -80,26 +80,33 @@ let cudaArchitecturesString = strings.concatStringsSep ";" cudaArchitectures; minArch = let - minArch' = builtins.head (builtins.sort builtins.lessThan cudaArchitectures); + minArch' = builtins.head (builtins.sort strings.versionOlder cudaArchitectures); in - # If this fails some day, something must've changed and we should re-validate our assumptions - assert builtins.stringLength minArch' == 2; # "75" -> "750" Cf. https://bitbucket.org/icl/magma/src/f4ec79e2c13a2347eff8a77a3be6f83bc2daec20/CMakeLists.txt#lines-273 "${minArch'}0"; + cuda-common-redist = with cudaPackages; [ + libcublas # cublas_v2.h + libcusparse # cusparse.h + ]; - cuda_joined = symlinkJoin { - name = "cuda-redist-${cudaVersion}"; + # Build-time dependencies + cuda-native-redist = symlinkJoin { + name = "cuda-native-redist-${cudaVersion}"; paths = with cudaPackages; [ - cuda_nvcc cuda_cudart # cuda_runtime.h - libcublas - libcusparse + cuda_nvcc ] ++ lists.optionals (strings.versionOlder cudaVersion "11.8") [ cuda_nvprof # ] ++ lists.optionals (strings.versionAtLeast cudaVersion "11.8") [ cuda_profiler_api # - ]; + ] ++ cuda-common-redist; + }; + + # Run-time dependencies + cuda-redist = symlinkJoin { + name = "cuda-redist-${cudaVersion}"; + paths = cuda-common-redist; }; in @@ -119,6 +126,8 @@ stdenv.mkDerivation { cmake ninja gfortran + ] ++ lists.optionals cudaSupport [ + cuda-native-redist ]; buildInputs = [ @@ -126,7 +135,7 @@ stdenv.mkDerivation { lapack blas ] ++ lists.optionals cudaSupport [ - cuda_joined + cuda-redist ] ++ lists.optionals rocmSupport [ hip hipblas @@ -148,13 +157,6 @@ stdenv.mkDerivation { "-DMAGMA_ENABLE_HIP=ON" ]; - # NOTE: The stdenv's CXX is used when compiling the CMake test to determine the version of - # CUDA available. This isn't necessarily the same as cudatoolkit.cc, so we must set - # CUDAHOSTCXX. - preConfigure = strings.optionalString cudaSupport '' - export CUDAHOSTCXX=${cudatoolkit.cc}/bin/c++ - ''; - buildFlags = [ "magma" "magma_sparse"