From de87abd74ba2e318c49762863cf2ab63f9bccb63 Mon Sep 17 00:00:00 2001 From: Robbie Buxton Date: Tue, 9 Jan 2024 19:21:42 +0000 Subject: [PATCH] changed dlib to actually use cuda properly and switched back to default blas and added lapack to make it easier to override, removed fftw because dlib hasn't supported it since 2015 Signed-off-by: Robbie Buxton --- pkgs/development/libraries/dlib/default.nix | 60 ++++++++++++++----- .../face-recognition/default.nix | 11 +++- 2 files changed, 54 insertions(+), 17 deletions(-) diff --git a/pkgs/development/libraries/dlib/default.nix b/pkgs/development/libraries/dlib/default.nix index 32356fd9ccab..50709cae8c0b 100644 --- a/pkgs/development/libraries/dlib/default.nix +++ b/pkgs/development/libraries/dlib/default.nix @@ -3,28 +3,27 @@ , fetchFromGitHub , cmake , pkg-config -, fftw , libpng , libjpeg , libwebp -, openblas +, blas +, lapack +, config , guiSupport ? false , libX11 - - # see http://dlib.net/compile.html , sse4Support ? stdenv.hostPlatform.sse4_1Support , avxSupport ? stdenv.hostPlatform.avxSupport -, cudaSupport ? true -}: - -stdenv.mkDerivation rec { +, cudaSupport ? config.cudaSupport +, cudaPackages +}@inputs: +(if cudaSupport then cudaPackages.backendStdenv else inputs.stdenv).mkDerivation rec { pname = "dlib"; version = "19.24.2"; src = fetchFromGitHub { owner = "davisking"; repo = "dlib"; - rev ="v${version}"; + rev = "v${version}"; sha256 = "sha256-Z1fScuaIHjj2L1uqLIvsZ7ARKNjM+iaA8SAtWUTPFZk="; }; @@ -33,20 +32,53 @@ stdenv.mkDerivation rec { ''; cmakeFlags = [ - (lib.cmakeBool "USE_DLIB_USE_CUDA" cudaSupport) (lib.cmakeBool "USE_SSE4_INSTRUCTIONS" sse4Support) (lib.cmakeBool "USE_AVX_INSTRUCTIONS" avxSupport) + (lib.cmakeBool "DLIB_USE_CUDA" cudaSupport) + ] ++ lib.optionals cudaSupport [ + (lib.cmakeFeature "DLIB_USE_CUDA_COMPUTE_CAPABILITIES" (builtins.concatStringsSep "," (with cudaPackages.flags; map dropDot cudaCapabilities))) ]; - nativeBuildInputs = [ cmake pkg-config ]; + nativeBuildInputs = [ + cmake + pkg-config + ] ++ lib.optionals cudaSupport (with cudaPackages; [ + cuda_nvcc + ]); buildInputs = [ - fftw libpng libjpeg libwebp - openblas - ] ++ lib.optional guiSupport libX11; + blas + lapack + ] + ++ lib.optionals guiSupport [ libX11 ] + ++ lib.optionals config.cudaSupport (with cudaPackages; [ + cuda_cudart.dev + cuda_cudart.lib + cuda_cudart.static + cuda_nvcc.dev + libcublas.dev + libcublas.lib + libcublas.static + libcurand.dev + libcurand.lib + libcurand.static + libcusolver.dev + libcusolver.lib + libcusolver.static + cudnn.dev + cudnn.lib + cudnn.static + cuda_cccl.dev + ]); + + passthru = { + inherit + cudaSupport cudaPackages + sse4Support avxSupport; + }; meta = with lib; { description = "A general purpose cross-platform C++ machine learning library"; diff --git a/pkgs/development/python-modules/face-recognition/default.nix b/pkgs/development/python-modules/face-recognition/default.nix index 8b06c83cf5aa..ef1d57e3eb67 100644 --- a/pkgs/development/python-modules/face-recognition/default.nix +++ b/pkgs/development/python-modules/face-recognition/default.nix @@ -2,15 +2,17 @@ , fetchPypi , lib -# propagates + # propagates , click , dlib , face-recognition-models , numpy , pillow -# tests + # tests , pytestCheckHook +, config +, cudaSupport ? config.cudaSupport }: buildPythonPackage rec { @@ -18,7 +20,7 @@ buildPythonPackage rec { version = "1.3.0"; format = "setuptools"; - src = fetchPypi { + src = fetchPypi { pname = "face_recognition"; inherit version; hash = "sha256-Xl790WhqpWavDTzBMTsTHksZdleo/9A2aebT+tknBew="; @@ -36,6 +38,9 @@ buildPythonPackage rec { pytestCheckHook ]; + # Disables tests when running with cuda due to https://github.com/NixOS/nixpkgs/issues/225912 + doCheck = !config.cudaSupport; + meta = with lib; { license = licenses.mit; homepage = "https://github.com/ageitgey/face_recognition";