From 673216d6eb85ffa87f8ffb722c9ee642fa32b315 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6gler?= Date: Sun, 7 Apr 2024 15:36:57 +0200 Subject: [PATCH 1/4] local-ai: use defaults from config and stdenv --- pkgs/by-name/lo/local-ai/package.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/lo/local-ai/package.nix b/pkgs/by-name/lo/local-ai/package.nix index 5e282d638089..373c6df6a10e 100644 --- a/pkgs/by-name/lo/local-ai/package.nix +++ b/pkgs/by-name/lo/local-ai/package.nix @@ -1,4 +1,5 @@ -{ stdenv +{ config +, stdenv , lib , fetchpatch , fetchFromGitHub @@ -21,7 +22,7 @@ # CPU extensions , enable_avx ? true , enable_avx2 ? true -, enable_avx512 ? false +, enable_avx512 ? stdenv.hostPlatform.avx512Support , enable_f16c ? true , enable_fma ? true @@ -31,7 +32,7 @@ , with_openblas ? false , openblas -, with_cublas ? false +, with_cublas ? config.cudaSupport , cudaPackages , with_clblas ? false From 951f4a1abeafc797de06c54f16725451ad141373 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6gler?= Date: Sun, 7 Apr 2024 15:37:26 +0200 Subject: [PATCH 2/4] local-ai: remove unused inputs and comments --- pkgs/by-name/lo/local-ai/package.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/by-name/lo/local-ai/package.nix b/pkgs/by-name/lo/local-ai/package.nix index 373c6df6a10e..8c5715e8841b 100644 --- a/pkgs/by-name/lo/local-ai/package.nix +++ b/pkgs/by-name/lo/local-ai/package.nix @@ -55,7 +55,6 @@ , fetchzip , fetchurl , writeText -, writeTextFile , symlinkJoin , linkFarmFromDrvs , jq @@ -167,7 +166,6 @@ let patches = [ ]; nativeBuildInputs = [ cmake ]; cmakeFlags = (self.cmakeFlags or [ ]) ++ [ - # -DCMAKE_C_FLAGS="-D_FILE_OFFSET_BITS=64" (lib.cmakeBool "BUILD_SHARED_LIBS" true) (lib.cmakeBool "USE_ASYNC" false) (lib.cmakeBool "USE_MBROLA" false) From c35424418144b7a4eafd5ed7a28cbcb76445102a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6gler?= Date: Sun, 7 Apr 2024 15:37:45 +0200 Subject: [PATCH 3/4] local-ai: reduce closure by using cuda_nvcc --- pkgs/by-name/lo/local-ai/package.nix | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/lo/local-ai/package.nix b/pkgs/by-name/lo/local-ai/package.nix index 8c5715e8841b..d3b317a867ae 100644 --- a/pkgs/by-name/lo/local-ai/package.nix +++ b/pkgs/by-name/lo/local-ai/package.nix @@ -67,9 +67,17 @@ let else if with_clblas then "clblas" else ""; + inherit (cudaPackages) libcublas cuda_nvcc cuda_cccl cuda_cudart; + typedBuiltInputs = lib.optionals with_cublas - [ cudaPackages.cudatoolkit cudaPackages.cuda_cudart ] + [ + cuda_nvcc # should be part of nativeBuildInputs + cuda_cudart + cuda_cccl + (lib.getDev libcublas) + (lib.getLib libcublas) + ] ++ lib.optionals with_clblas [ clblast ocl-icd opencl-headers ] ++ lib.optionals with_openblas @@ -430,7 +438,7 @@ let "VERSION=v${version}" "BUILD_TYPE=${BUILD_TYPE}" ] - ++ lib.optional with_cublas "CUDA_LIBPATH=${cudaPackages.cuda_cudart}/lib" + ++ lib.optional with_cublas "CUDA_LIBPATH=${cuda_cudart}/lib" ++ lib.optional with_tts "PIPER_CGO_CXXFLAGS=-DSPDLOG_FMT_EXTERNAL=1"; buildPhase = '' @@ -467,7 +475,7 @@ let postFixup = '' wrapProgram $out/bin/${pname} \ '' + lib.optionalString with_cublas '' - --prefix LD_LIBRARY_PATH : "${cudaPackages.libcublas}/lib:${cudaPackages.cuda_cudart}/lib:/run/opengl-driver/lib" \ + --prefix LD_LIBRARY_PATH : "${lib.getLib libcublas}/lib:${cuda_cudart}/lib:/run/opengl-driver/lib" \ '' + lib.optionalString with_clblas '' --prefix LD_LIBRARY_PATH : "${clblast}/lib:${ocl-icd}/lib" \ '' + lib.optionalString with_openblas '' From 28358e396b6c147eb30b4a54b5aec1f68c2d40fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6gler?= Date: Sun, 7 Apr 2024 21:52:54 +0200 Subject: [PATCH 4/4] local-ai: use makeLibraryPath for LD_LIBRARY_PATH --- pkgs/by-name/lo/local-ai/package.nix | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/pkgs/by-name/lo/local-ai/package.nix b/pkgs/by-name/lo/local-ai/package.nix index d3b317a867ae..aadca32a3198 100644 --- a/pkgs/by-name/lo/local-ai/package.nix +++ b/pkgs/by-name/lo/local-ai/package.nix @@ -1,6 +1,7 @@ { config , stdenv , lib +, addDriverRunpath , fetchpatch , fetchFromGitHub , protobuf @@ -472,19 +473,19 @@ let # patching rpath with patchelf doens't work. The execuable # raises an segmentation fault - postFixup = '' - wrapProgram $out/bin/${pname} \ - '' + lib.optionalString with_cublas '' - --prefix LD_LIBRARY_PATH : "${lib.getLib libcublas}/lib:${cuda_cudart}/lib:/run/opengl-driver/lib" \ - '' + lib.optionalString with_clblas '' - --prefix LD_LIBRARY_PATH : "${clblast}/lib:${ocl-icd}/lib" \ - '' + lib.optionalString with_openblas '' - --prefix LD_LIBRARY_PATH : "${openblas}/lib" \ - '' + lib.optionalString with_tts '' - --prefix LD_LIBRARY_PATH : "${piper-phonemize}/lib" \ - '' + '' - --prefix PATH : "${ffmpeg}/bin" - ''; + postFixup = + let + LD_LIBRARY_PATH = [ ] + ++ lib.optionals with_cublas [ (lib.getLib libcublas) cuda_cudart addDriverRunpath.driverLink ] + ++ lib.optionals with_clblas [ clblast ocl-icd ] + ++ lib.optionals with_openblas [ openblas ] + ++ lib.optionals with_tts [ piper-phonemize ]; + in + '' + wrapProgram $out/bin/${pname} \ + --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath LD_LIBRARY_PATH}" \ + --prefix PATH : "${ffmpeg}/bin" + ''; passthru.local-packages = { inherit