openai-whisper-cpp: add cudaSupport
This commit is contained in:
parent
37a707298c
commit
8056651a28
@ -9,16 +9,26 @@
|
||||
, CoreML
|
||||
, CoreVideo
|
||||
, MetalKit
|
||||
|
||||
, config
|
||||
, cudaSupport ? config.cudaSupport
|
||||
, cudaPackages ? {}
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
let
|
||||
# It's necessary to consistently use backendStdenv when building with CUDA support,
|
||||
# otherwise we get libstdc++ errors downstream.
|
||||
# cuda imposes an upper bound on the gcc version, e.g. the latest gcc compatible with cudaPackages_11 is gcc11
|
||||
effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else stdenv;
|
||||
in
|
||||
effectiveStdenv.mkDerivation (finalAttrs: {
|
||||
pname = "whisper-cpp";
|
||||
version = "1.5.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ggerganov";
|
||||
repo = "whisper.cpp";
|
||||
rev = "refs/tags/v${version}" ;
|
||||
rev = "refs/tags/v${finalAttrs.version}" ;
|
||||
hash = "sha256-9H2Mlua5zx2WNXbz2C5foxIteuBgeCNALdq5bWyhQCk=";
|
||||
};
|
||||
|
||||
@ -28,13 +38,49 @@ stdenv.mkDerivation rec {
|
||||
# the models to the current directory of where it is being run from.
|
||||
patches = [ ./download-models.patch ];
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
] ++ lib.optionals cudaSupport ( with cudaPackages ;[
|
||||
cuda_nvcc
|
||||
|
||||
buildInputs = [ SDL2 ] ++ lib.optionals stdenv.isDarwin [ Accelerate CoreGraphics CoreML CoreVideo MetalKit ];
|
||||
# TODO: Replace with autoAddDriverRunpath
|
||||
# once https://github.com/NixOS/nixpkgs/pull/275241 has been merged
|
||||
autoAddOpenGLRunpathHook
|
||||
]);
|
||||
|
||||
buildInputs = [
|
||||
SDL2
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
Accelerate
|
||||
CoreGraphics
|
||||
CoreML
|
||||
CoreVideo
|
||||
MetalKit
|
||||
] ++ lib.optionals cudaSupport ( with cudaPackages; [
|
||||
|
||||
# A temporary hack for reducing the closure size, remove once cudaPackages
|
||||
# have stopped using lndir: https://github.com/NixOS/nixpkgs/issues/271792
|
||||
cuda_cudart.dev
|
||||
cuda_cudart.lib
|
||||
cuda_cudart.static
|
||||
libcublas.dev
|
||||
libcublas.lib
|
||||
libcublas.static
|
||||
]);
|
||||
|
||||
postPatch = let
|
||||
cudaOldStr = "-lcuda ";
|
||||
cudaNewStr = "-lcuda -L${cudaPackages.cuda_cudart.lib}/lib/stubs ";
|
||||
in lib.optionalString cudaSupport ''
|
||||
substituteInPlace Makefile \
|
||||
--replace '${cudaOldStr}' '${cudaNewStr}'
|
||||
'';
|
||||
|
||||
env = lib.optionalAttrs stdenv.isDarwin {
|
||||
WHISPER_COREML = "1";
|
||||
WHISPER_COREML_ALLOW_FALLBACK = "1";
|
||||
} // lib.optionalAttrs cudaSupport {
|
||||
WHISPER_CUBLAS = "1";
|
||||
};
|
||||
|
||||
makeFlags = [ "main" "stream" "command" ];
|
||||
@ -75,4 +121,4 @@ stdenv.mkDerivation rec {
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ dit7ya hughobrien ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user