about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRobbie Buxton <robbiesbuxton@gmail.com>2024-01-09 19:21:42 +0000
committerRobbie Buxton <robbiesbuxton@gmail.com>2024-01-23 00:41:28 +0000
commitde87abd74ba2e318c49762863cf2ab63f9bccb63 (patch)
tree863374bdc78c523f0c1834cb0af9da219be75cc2
parent4253fc8bf181a62c7f2328e7fc71bcaa8bbbd613 (diff)
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 <robbiesbuxton@gmail.com>
-rw-r--r--pkgs/development/libraries/dlib/default.nix60
-rw-r--r--pkgs/development/python-modules/face-recognition/default.nix11
2 files changed, 54 insertions, 17 deletions
diff --git a/pkgs/development/libraries/dlib/default.nix b/pkgs/development/libraries/dlib/default.nix
index 32356fd9ccab7..50709cae8c0b7 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 8b06c83cf5aad..ef1d57e3eb67a 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";