From be9c779deba0e898802dd341a1ba9c04c4e9abe8 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Thu, 30 Nov 2023 00:33:01 +0000 Subject: [PATCH 1/8] cudaPackages.setupCudaHook: propagate buildInputs and self This is useful for the cuda variants of packages like opencv and pytorch, whose xxxxConfig.cmake files do find_package(CUDAToolkit REQUIRED) regardless of whether they actually use it. With the propagated hook, we no longer have to manually add cuda dependencies into torch/opencvs reverse dependencies cudaPackages.cuda_nvcc: fix setupCudaHook propagation --- .../compilers/cudatoolkit/extension.nix | 20 +--- .../hooks/mark-for-cudatoolkit-root-hook.sh | 8 +- .../cudatoolkit/hooks/nvcc-setup-hook.sh | 5 - .../cudatoolkit/hooks/setup-cuda-hook.sh | 101 +++++++++++++++--- 4 files changed, 94 insertions(+), 40 deletions(-) delete mode 100644 pkgs/development/compilers/cudatoolkit/hooks/nvcc-setup-hook.sh diff --git a/pkgs/development/compilers/cudatoolkit/extension.nix b/pkgs/development/compilers/cudatoolkit/extension.nix index d75d288f5577..016675fa0701 100644 --- a/pkgs/development/compilers/cudatoolkit/extension.nix +++ b/pkgs/development/compilers/cudatoolkit/extension.nix @@ -47,35 +47,21 @@ final: prev: let ./hooks/mark-for-cudatoolkit-root-hook.sh) { }); - # Normally propagated by cuda_nvcc or cudatoolkit through their depsHostHostPropagated + # Currently propagated by cuda_nvcc or cudatoolkit, rather than used directly setupCudaHook = (final.callPackage ({ makeSetupHook, backendStdenv }: makeSetupHook { name = "setup-cuda-hook"; + substitutions.setupCudaHook = placeholder "out"; + # Point NVCC at a compatible compiler substitutions.ccRoot = "${backendStdenv.cc}"; # Required in addition to ccRoot as otherwise bin/gcc is looked up # when building CMakeCUDACompilerId.cu substitutions.ccFullPath = "${backendStdenv.cc}/bin/${backendStdenv.cc.targetPrefix}c++"; - - # Required by cmake's enable_language(CUDA) to build a test program - # When implementing cross-compilation support: this is - # final.pkgs.targetPackages.cudaPackages.cuda_cudart - # Given the multiple-outputs each CUDA redist has, we can specify the exact components we - # need from the package. CMake requires: - # - the cuda_runtime.h header, which is in the dev output - # - the dynamic library, which is in the lib output - # - the static library, which is in the static output - substitutions.cudartFlags = let cudart = final.cuda_cudart; in - builtins.concatStringsSep " " (final.lib.optionals (final ? cuda_cudart) ([ - "-I${final.lib.getDev cudart}/include" - "-L${final.lib.getLib cudart}/lib" - ] ++ final.lib.optionals (builtins.elem "static" cudart.outputs) [ - "-L${cudart.static}/lib" - ])); } ./hooks/setup-cuda-hook.sh) { }); diff --git a/pkgs/development/compilers/cudatoolkit/hooks/mark-for-cudatoolkit-root-hook.sh b/pkgs/development/compilers/cudatoolkit/hooks/mark-for-cudatoolkit-root-hook.sh index 5c18760a3a2b..ba04c2e0806a 100644 --- a/pkgs/development/compilers/cudatoolkit/hooks/mark-for-cudatoolkit-root-hook.sh +++ b/pkgs/development/compilers/cudatoolkit/hooks/mark-for-cudatoolkit-root-hook.sh @@ -1,8 +1,14 @@ # shellcheck shell=bash +# Should we mimick cc-wrapper's "hygiene"? +[[ -z ${strictDeps-} ]] || (( "$hostOffset" < 0 )) || return 0 + +echo "Sourcing mark-for-cudatoolkit-root-hook" >&2 + markForCUDAToolkit_ROOT() { mkdir -p "${prefix}/nix-support" - touch "${prefix}/nix-support/include-in-cudatoolkit-root" + [[ -f "${prefix}/nix-support/include-in-cudatoolkit-root" ]] && return + echo "$pname-$output" > "${prefix}/nix-support/include-in-cudatoolkit-root" } fixupOutputHooks+=(markForCUDAToolkit_ROOT) diff --git a/pkgs/development/compilers/cudatoolkit/hooks/nvcc-setup-hook.sh b/pkgs/development/compilers/cudatoolkit/hooks/nvcc-setup-hook.sh deleted file mode 100644 index e75a84a9550e..000000000000 --- a/pkgs/development/compilers/cudatoolkit/hooks/nvcc-setup-hook.sh +++ /dev/null @@ -1,5 +0,0 @@ -# shellcheck shell=bash - -# CMake's enable_language(CUDA) runs a compiler test and it doesn't account for -# CUDAToolkit_ROOT. We have to help it locate libcudart -export NVCC_APPEND_FLAGS+=" -L@cudartLib@/lib -L@cudartStatic@/lib -I@cudartInclude@/include" diff --git a/pkgs/development/compilers/cudatoolkit/hooks/setup-cuda-hook.sh b/pkgs/development/compilers/cudatoolkit/hooks/setup-cuda-hook.sh index 0fa8883081c5..7b7b3bdde80e 100644 --- a/pkgs/development/compilers/cudatoolkit/hooks/setup-cuda-hook.sh +++ b/pkgs/development/compilers/cudatoolkit/hooks/setup-cuda-hook.sh @@ -3,19 +3,57 @@ # Only run the hook from nativeBuildInputs (( "$hostOffset" == -1 && "$targetOffset" == 0)) || return 0 -echo Sourcing setup-cuda-hook >&2 +guard=Sourcing +reason= -extendCUDAToolkit_ROOT() { - if [[ -f "$1/nix-support/include-in-cudatoolkit-root" ]] ; then - addToSearchPathWithCustomDelimiter ";" CUDAToolkit_ROOT "$1" +[[ -n ${cudaSetupHookOnce-} ]] && guard=Skipping && reason=" because the hook has been propagated more than once" - if [[ -d "$1/include" ]] ; then - addToSearchPathWithCustomDelimiter ";" CUDAToolkit_INCLUDE_DIR "$1/include" - fi - fi +if (( "${NIX_DEBUG:-0}" >= 1 )) ; then + echo "$guard hostOffset=$hostOffset targetOffset=$targetOffset setupCudaHook$reason" >&2 +else + echo "$guard setup-cuda-hook$reason" >&2 +fi + +[[ "$guard" = Sourcing ]] || return 0 + +declare -g cudaSetupHookOnce=1 +declare -Ag cudaHostPathsSeen=() +declare -Ag cudaOutputToPath=() + +extendcudaHostPathsSeen() { + (( "${NIX_DEBUG:-0}" >= 1 )) && echo "extendcudaHostPathsSeen $1" >&2 + + local markerPath="$1/nix-support/include-in-cudatoolkit-root" + [[ ! -f "${markerPath}" ]] && return + [[ -v cudaHostPathsSeen[$1] ]] && return + + cudaHostPathsSeen["$1"]=1 + + # E.g. cuda_cudart-lib + local cudaOutputName + read -r cudaOutputName < "$markerPath" + + [[ -z "$cudaOutputName" ]] && return + + local oldPath="${cudaOutputToPath[$cudaOutputName]-}" + [[ -n "$oldPath" ]] && echo "extendcudaHostPathsSeen: warning: overwriting $cudaOutputName from $oldPath to $1" >&2 + cudaOutputToPath["$cudaOutputName"]="$1" } +addEnvHooks "$targetOffset" extendcudaHostPathsSeen -addEnvHooks "$targetOffset" extendCUDAToolkit_ROOT +setupCUDAToolkit_ROOT() { + (( "${NIX_DEBUG:-0}" >= 1 )) && echo "setupCUDAToolkit_ROOT: cudaHostPathsSeen=${!cudaHostPathsSeen[*]}" >&2 + + for path in "${!cudaHostPathsSeen[@]}" ; do + addToSearchPathWithCustomDelimiter ";" CUDAToolkit_ROOT "$path" + if [[ -d "$path/include" ]] ; then + addToSearchPathWithCustomDelimiter ";" CUDAToolkit_INCLUDE_DIR "$path/include" + fi + done + + export cmakeFlags+=" -DCUDAToolkit_INCLUDE_DIR=$CUDAToolkit_INCLUDE_DIR -DCUDAToolkit_ROOT=$CUDAToolkit_ROOT" +} +preConfigureHooks+=(setupCUDAToolkit_ROOT) setupCUDAToolkitCompilers() { echo Executing setupCUDAToolkitCompilers >&2 @@ -58,15 +96,44 @@ setupCUDAToolkitCompilers() { # CMake's enable_language(CUDA) runs a compiler test and it doesn't account for # CUDAToolkit_ROOT. We have to help it locate libcudart - local cudartFlags="@cudartFlags@" - if [[ -z "${nvccDontPrependCudartFlags-}" ]] && [[ -n "${cudartFlags:-}" ]] ; then - export NVCC_APPEND_FLAGS+=" $cudartFlags" + if [[ -z "${nvccDontPrependCudartFlags-}" ]] ; then + if [[ ! -v cudaOutputToPath["cuda_cudart-out"] ]] ; then + echo "setupCUDAToolkitCompilers: missing cudaPackages.cuda_cudart. This may become an an error in the future" >&2 + # exit 1 + fi + for pkg in "${!cudaOutputToPath[@]}" ; do + [[ ! "$pkg" = cuda_cudart* ]] && continue + + local path="${cudaOutputToPath[$pkg]}" + if [[ -d "$path/include" ]] ; then + export NVCC_PREPEND_FLAGS+=" -I$path/include" + fi + if [[ -d "$path/lib" ]] ; then + export NVCC_PREPEND_FLAGS+=" -L$path/lib" + fi + done fi } +preConfigureHooks+=(setupCUDAToolkitCompilers) -setupCMakeCUDAToolkit_ROOT() { - export cmakeFlags+=" -DCUDAToolkit_INCLUDE_DIR=$CUDAToolkit_INCLUDE_DIR -DCUDAToolkit_ROOT=$CUDAToolkit_ROOT" +propagateCudaLibraries() { + (( "${NIX_DEBUG:-0}" >= 1 )) && echo "propagateCudaLibraries: cudaPropagateToOutput=$cudaPropagateToOutput cudaHostPathsSeen=${!cudaHostPathsSeen[*]}" >&2 + + [[ -z "${cudaPropagateToOutput-}" ]] && return + + mkdir -p "${!cudaPropagateToOutput}/nix-support" + # One'd expect this should be propagated-bulid-build-deps, but that doesn't seem to work + echo "@setupCudaHook@" >> "${!cudaPropagateToOutput}/nix-support/propagated-native-build-inputs" + + local propagatedBuildInputs=( "${!cudaHostPathsSeen[@]}" ) + for output in $(getAllOutputNames) ; do + if [[ ! "$output" = "$cudaPropagateToOutput" ]] ; then + propagatedBuildInputs+=( "${!output}" ) + fi + break + done + + # One'd expect this should be propagated-host-host-deps, but that doesn't seem to work + printWords "${propagatedBuildInputs[@]}" >> "${!cudaPropagateToOutput}/nix-support/propagated-build-inputs" } - -postHooks+=(setupCUDAToolkitCompilers) -preConfigureHooks+=(setupCMakeCUDAToolkit_ROOT) +postFixupHooks+=(propagateCudaLibraries) From ada3991349beb5880e3994f25c65a0cf68941b83 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Thu, 30 Nov 2023 00:44:50 +0000 Subject: [PATCH 2/8] opencv4: expose cxxdev, propagating optional cuda deps --- pkgs/development/libraries/opencv/4.x.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/opencv/4.x.nix b/pkgs/development/libraries/opencv/4.x.nix index 4c1b13d1309e..8cfb169a0bac 100644 --- a/pkgs/development/libraries/opencv/4.x.nix +++ b/pkgs/development/libraries/opencv/4.x.nix @@ -247,8 +247,10 @@ effectiveStdenv.mkDerivation { outputs = [ "out" + "cxxdev" "package_tests" ]; + cudaPropagateToOutput = "cxxdev"; postUnpack = lib.optionalString buildContrib '' cp --no-preserve=mode -r "${contribSrc}/modules" "$NIX_BUILD_TOP/source/opencv_contrib" @@ -328,7 +330,7 @@ effectiveStdenv.mkDerivation { bzip2 AVFoundation Cocoa VideoDecodeAcceleration CoreMedia MediaToolbox Accelerate ] ++ lib.optionals enableDocs [ doxygen graphviz-nox ] - ++ lib.optionals enableCuda (with cudaPackages; [ + ++ lib.optionals enableCuda (with cudaPackages; [ cuda_cudart cuda_cccl # libnpp # npp.h @@ -338,7 +340,7 @@ effectiveStdenv.mkDerivation { cudnn # cudnn.h ] ++ lib.optionals enableCufft [ libcufft # cufft.h - ]); + ]); propagatedBuildInputs = lib.optional enablePython pythonPackages.numpy ++ lib.optionals enableCuda [ nvidia-optical-flow-sdk ]; @@ -458,6 +460,7 @@ effectiveStdenv.mkDerivation { postInstall = '' sed -i "s|{exec_prefix}/$out|{exec_prefix}|;s|{prefix}/$out|{prefix}|" \ "$out/lib/pkgconfig/opencv4.pc" + mkdir $cxxdev '' # install python distribution information, so other packages can `import opencv` + lib.optionalString enablePython '' From 45698380295187b35f3872542b71efc2223f8201 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Thu, 30 Nov 2023 00:59:10 +0000 Subject: [PATCH 3/8] opencv4: propagate optical flow sdk same as cuda --- .../libraries/nvidia-optical-flow-sdk/default.nix | 5 +++++ pkgs/development/libraries/opencv/4.x.nix | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/nvidia-optical-flow-sdk/default.nix b/pkgs/development/libraries/nvidia-optical-flow-sdk/default.nix index a82fa9068c66..2914d059cfaf 100644 --- a/pkgs/development/libraries/nvidia-optical-flow-sdk/default.nix +++ b/pkgs/development/libraries/nvidia-optical-flow-sdk/default.nix @@ -18,6 +18,11 @@ stdenv.mkDerivation { cp -R * $out/include ''; + postFixup = '' + mkdir -p $out/nix-support + echo $pname >> "$out/nix-support/include-in-cudatoolkit-root" + ''; + meta = with lib; { description = "Nvidia optical flow headers for computing the relative motion of pixels between images"; homepage = "https://developer.nvidia.com/opticalflow-sdk"; diff --git a/pkgs/development/libraries/opencv/4.x.nix b/pkgs/development/libraries/opencv/4.x.nix index 8cfb169a0bac..d7693a3077a8 100644 --- a/pkgs/development/libraries/opencv/4.x.nix +++ b/pkgs/development/libraries/opencv/4.x.nix @@ -334,6 +334,7 @@ effectiveStdenv.mkDerivation { cuda_cudart cuda_cccl # libnpp # npp.h + nvidia-optical-flow-sdk ] ++ lib.optionals enableCublas [ libcublas # cublas_v2.h ] ++ lib.optionals enableCudnn [ @@ -342,8 +343,7 @@ effectiveStdenv.mkDerivation { libcufft # cufft.h ]); - propagatedBuildInputs = lib.optional enablePython pythonPackages.numpy - ++ lib.optionals enableCuda [ nvidia-optical-flow-sdk ]; + propagatedBuildInputs = lib.optionals enablePython [ pythonPackages.numpy ]; nativeBuildInputs = [ cmake pkg-config unzip ] ++ lib.optionals enablePython [ From 55af9329429a30ce81f7ad01da95406e1d62f785 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Sun, 3 Dec 2023 02:47:44 +0000 Subject: [PATCH 4/8] opencv4: discard build-time cuda deps --- pkgs/development/libraries/opencv/4.x.nix | 24 +++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/pkgs/development/libraries/opencv/4.x.nix b/pkgs/development/libraries/opencv/4.x.nix index d7693a3077a8..023e56940b75 100644 --- a/pkgs/development/libraries/opencv/4.x.nix +++ b/pkgs/development/libraries/opencv/4.x.nix @@ -331,16 +331,28 @@ effectiveStdenv.mkDerivation { ] ++ lib.optionals enableDocs [ doxygen graphviz-nox ] ++ lib.optionals enableCuda (with cudaPackages; [ - cuda_cudart - cuda_cccl # - libnpp # npp.h + cuda_cudart.lib + cuda_cudart.dev + cuda_cccl.dev # + libnpp.dev # npp.h + libnpp.lib + libnpp.static nvidia-optical-flow-sdk ] ++ lib.optionals enableCublas [ - libcublas # cublas_v2.h + # May start using the default $out instead once + # https://github.com/NixOS/nixpkgs/issues/271792 + # has been addressed + libcublas.static + libcublas.lib + libcublas.dev # cublas_v2.h ] ++ lib.optionals enableCudnn [ - cudnn # cudnn.h + cudnn.dev # cudnn.h + cudnn.lib + cudnn.static ] ++ lib.optionals enableCufft [ - libcufft # cufft.h + libcufft.dev # cufft.h + libcufft.lib + libcufft.static ]); propagatedBuildInputs = lib.optionals enablePython [ pythonPackages.numpy ]; From 71c248ec1309381136bf74339d453a58b400b2a9 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Thu, 30 Nov 2023 01:00:05 +0000 Subject: [PATCH 5/8] torch: add the cxxdev output for cmake consumers --- .../python-modules/torch/default.nix | 16 ++++++++-- .../python-modules/torchaudio/default.nix | 12 +------ .../python-modules/torchvision/default.nix | 32 +++++-------------- 3 files changed, 22 insertions(+), 38 deletions(-) diff --git a/pkgs/development/python-modules/torch/default.nix b/pkgs/development/python-modules/torch/default.nix index b648e2d7bf36..5c81450bb112 100644 --- a/pkgs/development/python-modules/torch/default.nix +++ b/pkgs/development/python-modules/torch/default.nix @@ -134,7 +134,9 @@ in buildPythonPackage rec { "out" # output standard python package "dev" # output libtorch headers "lib" # output libtorch libraries + "cxxdev" # propagated deps for the cmake consumers of torch ]; + cudaPropagateToOutput = "cxxdev"; src = fetchFromGitHub { owner = "pytorch"; @@ -371,7 +373,10 @@ in buildPythonPackage rec { ++ lib.optionals rocmSupport [ rocmPackages.llvm.openmp ] ++ lib.optionals (cudaSupport || rocmSupport) [ effectiveMagma ] ++ lib.optionals stdenv.isLinux [ numactl ] - ++ lib.optionals stdenv.isDarwin [ Accelerate CoreServices libobjc ]; + ++ lib.optionals stdenv.isDarwin [ Accelerate CoreServices libobjc ] + ++ lib.optionals tritonSupport [ openai-triton ] + ++ lib.optionals MPISupport [ mpi ] + ++ lib.optionals rocmSupport [ rocmtoolkit_joined ]; propagatedBuildInputs = [ cffi @@ -392,8 +397,10 @@ in buildPythonPackage rec { # torch/csrc requires `pybind11` at runtime pybind11 + ] ++ lib.optionals tritonSupport [ openai-triton ]; + + propagatedCxxBuildInputs = [ ] - ++ lib.optionals tritonSupport [ openai-triton ] ++ lib.optionals MPISupport [ mpi ] ++ lib.optionals rocmSupport [ rocmtoolkit_joined ]; @@ -454,7 +461,10 @@ in buildPythonPackage rec { --replace "/build/source/torch/include" "$dev/include" ''; - postFixup = lib.optionalString stdenv.isDarwin '' + postFixup = '' + mkdir -p "$cxxdev/nix-support" + printWords "''${propagatedCxxBuildInputs[@]}" >> "$cxxdev/nix-support/propagated-build-inputs" + '' + lib.optionalString stdenv.isDarwin '' for f in $(ls $lib/lib/*.dylib); do install_name_tool -id $lib/lib/$(basename $f) $f || true done diff --git a/pkgs/development/python-modules/torchaudio/default.nix b/pkgs/development/python-modules/torchaudio/default.nix index 1014ab523821..5e6f295cbd2b 100644 --- a/pkgs/development/python-modules/torchaudio/default.nix +++ b/pkgs/development/python-modules/torchaudio/default.nix @@ -60,17 +60,7 @@ buildPythonPackage rec { ffmpeg-full pybind11 sox - ] ++ lib.optionals cudaSupport [ - cudaPackages.libcurand.dev - cudaPackages.libcurand.lib - cudaPackages.cuda_cudart # cuda_runtime.h and libraries - cudaPackages.cuda_cccl.dev # - cudaPackages.cuda_nvtx.dev - cudaPackages.cuda_nvtx.lib # -llibNVToolsExt - cudaPackages.libcublas.dev - cudaPackages.libcublas.lib - cudaPackages.libcufft.dev - cudaPackages.libcufft.lib + torch.cxxdev ]; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/torchvision/default.nix b/pkgs/development/python-modules/torchvision/default.nix index 223130918af5..c52d058fb94e 100644 --- a/pkgs/development/python-modules/torchvision/default.nix +++ b/pkgs/development/python-modules/torchvision/default.nix @@ -17,28 +17,6 @@ let inherit (torch) cudaCapabilities cudaPackages cudaSupport; inherit (cudaPackages) backendStdenv cudaVersion; - # NOTE: torchvision doesn't use cudnn; torch does! - # For this reason it is not included. - cuda-common-redist = with cudaPackages; [ - cuda_cccl # - libcublas # cublas_v2.h - libcusolver # cusolverDn.h - libcusparse # cusparse.h - ]; - - cuda-native-redist = symlinkJoin { - name = "cuda-native-redist-${cudaVersion}"; - paths = with cudaPackages; [ - cuda_cudart # cuda_runtime.h - cuda_nvcc - ] ++ cuda-common-redist; - }; - - cuda-redist = symlinkJoin { - name = "cuda-redist-${cudaVersion}"; - paths = cuda-common-redist; - }; - pname = "torchvision"; version = "0.16.1"; in @@ -52,9 +30,15 @@ buildPythonPackage { hash = "sha256-TsYBDtedTQ3+F3LM4JwzkGH2XOr0WSp1Au5YoR07rSA="; }; - nativeBuildInputs = [ libpng ninja which ] ++ lib.optionals cudaSupport [ cuda-native-redist ]; + nativeBuildInputs = [ + libpng + ninja + which + ] ++ lib.optionals cudaSupport [ + cudaPackages.cuda_nvcc + ]; - buildInputs = [ libjpeg_turbo libpng ] ++ lib.optionals cudaSupport [ cuda-redist ]; + buildInputs = [ libjpeg_turbo libpng torch.cxxdev ]; propagatedBuildInputs = [ numpy pillow torch scipy ]; From 3ececb9efafd80058525571d77d881767de6f5b8 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Thu, 30 Nov 2023 00:45:37 +0000 Subject: [PATCH 6/8] openvino: use opencv4.cxxdev in case cuda is enabled --- pkgs/development/libraries/openvino/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/openvino/default.nix b/pkgs/development/libraries/openvino/default.nix index 5761f9e7bb64..6ff2be8ddbd6 100644 --- a/pkgs/development/libraries/openvino/default.nix +++ b/pkgs/development/libraries/openvino/default.nix @@ -122,6 +122,7 @@ stdenv.mkDerivation rec { "-DENABLE_CPPLINT:BOOL=OFF" "-DBUILD_TESTING:BOOL=OFF" "-DENABLE_SAMPLES:BOOL=OFF" + (lib.cmakeBool "CMAKE_VERBOSE_MAKEFILE" true) ]; env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isAarch64 "-Wno-narrowing"; @@ -133,7 +134,7 @@ stdenv.mkDerivation rec { buildInputs = [ libusb1 libxml2 - opencv + opencv.cxxdev protobuf pugixml tbb From 44611c4a6d16b0eeb1488e9557b6a11e45193a46 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Thu, 30 Nov 2023 00:59:33 +0000 Subject: [PATCH 7/8] cctag: unbreak the cuda variant --- pkgs/development/libraries/cctag/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/cctag/default.nix b/pkgs/development/libraries/cctag/default.nix index 2c1a5f9ae786..238821b6af91 100644 --- a/pkgs/development/libraries/cctag/default.nix +++ b/pkgs/development/libraries/cctag/default.nix @@ -49,7 +49,7 @@ stdenv.mkDerivation rec { buildInputs = [ boost179 eigen - opencv + opencv.cxxdev ]; # Tests are broken on Darwin (linking issue) From 2df7ccfa1498f5038b15acd50bc9277ad768dcbf Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Tue, 5 Dec 2023 20:03:13 +0000 Subject: [PATCH 8/8] python311Packages.torch: enable_language(CUDA) wants to -lcudart_static? --- pkgs/development/python-modules/torch/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/python-modules/torch/default.nix b/pkgs/development/python-modules/torch/default.nix index 5c81450bb112..8ff396cf9cc3 100644 --- a/pkgs/development/python-modules/torch/default.nix +++ b/pkgs/development/python-modules/torch/default.nix @@ -341,6 +341,7 @@ in buildPythonPackage rec { cuda_cccl.dev # cuda_cudart.dev # cuda_runtime.h and libraries cuda_cudart.lib + cuda_cudart.static cuda_cupti.dev # For kineto cuda_cupti.lib # For kineto cuda_nvcc.dev # crt/host_config.h; even though we include this in nativeBuildinputs, it's needed here too