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>
This commit is contained in:
Robbie Buxton 2024-01-09 19:21:42 +00:00
parent 4253fc8bf1
commit de87abd74b
2 changed files with 54 additions and 17 deletions

View File

@ -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";

View File

@ -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";