about summary refs log tree commit diff
diff options
context:
space:
mode:
authorConnor Baker <connor.baker@tweag.io>2023-12-07 21:02:12 +0000
committerConnor Baker <connor.baker@tweag.io>2023-12-07 21:02:12 +0000
commit855a7ba029eaf78c959c88b36fdf5760742b2b1e (patch)
treef585790b532eda31b01cb9a91f9f47a551850297
parentec1bb8495034086a7ddda26aefc0302feb08f510 (diff)
caffe: fix eval when CUDNN is not available
-rw-r--r--pkgs/applications/science/math/caffe/default.nix27
1 files changed, 14 insertions, 13 deletions
diff --git a/pkgs/applications/science/math/caffe/default.nix b/pkgs/applications/science/math/caffe/default.nix
index 42c160393595b..6595f0b846ddb 100644
--- a/pkgs/applications/science/math/caffe/default.nix
+++ b/pkgs/applications/science/math/caffe/default.nix
@@ -26,24 +26,17 @@ let
   # The default for cudatoolkit 10.1 is CUDNN 8.0.5, the last version to support CUDA 10.1.
   # However, this caffe does not build with CUDNN 8.x, so we use CUDNN 7.6.5 instead.
   # Earlier versions of cudatoolkit use pre-8.x CUDNN, so we use the default.
-  cudnn = if lib.versionOlder cudatoolkit.version "10.1"
-    then cudaPackages.cudnn
-    else cudaPackages.cudnn_7_6;
-in
-
-assert leveldbSupport -> (leveldb != null && snappy != null);
-assert cudnnSupport -> cudaSupport;
-assert ncclSupport -> cudaSupport;
-assert pythonSupport -> (python != null && numpy != null);
+  hasCudnn =
+    if lib.versionOlder cudatoolkit.version "10.1"
+    then cudaPackages ? cudnn
+    else cudaPackages ? cudnn_7_6;
 
-let
   toggle = bool: if bool then "ON" else "OFF";
 
   test_model_weights = fetchurl {
     url = "http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel";
     sha256 = "472d4a06035497b180636d8a82667129960371375bd10fcb6df5c6c7631f25e0";
   };
-
 in
 
 stdenv.mkDerivation rec {
@@ -74,7 +67,8 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ boost gflags glog protobuf hdf5-cpp opencv4 blas ]
                 ++ lib.optional cudaSupport cudatoolkit
-                ++ lib.optional cudnnSupport cudnn
+                ++ lib.optional (lib.versionOlder cudatoolkit.version "10.1" && hasCudnn) cudaPackages.cudnn
+                ++ lib.optional (lib.versionAtLeast cudatoolkit.version "10.1" && hasCudnn) cudaPackages.cudnn_7_6
                 ++ lib.optional lmdbSupport lmdb
                 ++ lib.optional ncclSupport nccl
                 ++ lib.optionals leveldbSupport [ leveldb snappy ]
@@ -154,7 +148,14 @@ stdenv.mkDerivation rec {
     '';
     homepage = "http://caffe.berkeleyvision.org/";
     maintainers = with maintainers; [ ];
-    broken = (pythonSupport && (python.isPy310)) || cudaSupport;
+    broken =
+      (pythonSupport && (python.isPy310))
+      || cudaSupport
+      || !(leveldbSupport -> (leveldb != null && snappy != null))
+      || !(cudnnSupport -> (hasCudnn && cudaSupport))
+      || !(ncclSupport -> cudaSupport)
+      || !(pythonSupport -> (python != null && numpy != null))
+    ;
     license = licenses.bsd2;
     platforms = platforms.linux ++ platforms.darwin;
   };