mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-31 08:51:55 +00:00 
			
		
		
		
	add Vulkan support to Nix flake
This commit is contained in:
		 Martin Schwaighofer
					Martin Schwaighofer
				
			
				
					committed by
					
						 Philip Taron
						Philip Taron
					
				
			
			
				
	
			
			
			 Philip Taron
						Philip Taron
					
				
			
						parent
						
							e920ed393d
						
					
				
				
					commit
					60ecf099ed
				
			| @@ -13,18 +13,22 @@ | ||||
|   cudaPackages, | ||||
|   darwin, | ||||
|   rocmPackages, | ||||
|   vulkan-headers, | ||||
|   vulkan-loader, | ||||
|   clblast, | ||||
|   useBlas ? builtins.all (x: !x) [ | ||||
|     useCuda | ||||
|     useMetalKit | ||||
|     useOpenCL | ||||
|     useRocm | ||||
|     useVulkan | ||||
|   ], | ||||
|   useCuda ? config.cudaSupport, | ||||
|   useMetalKit ? stdenv.isAarch64 && stdenv.isDarwin && !useOpenCL, | ||||
|   useMpi ? false, # Increases the runtime closure size by ~700M | ||||
|   useOpenCL ? false, | ||||
|   useRocm ? config.rocmSupport, | ||||
|   useVulkan ? false, | ||||
|   llamaVersion ? "0.0.0", # Arbitrary version, substituted by the flake | ||||
| }@inputs: | ||||
|  | ||||
| @@ -48,7 +52,8 @@ let | ||||
|     ++ lib.optionals useMetalKit [ "MetalKit" ] | ||||
|     ++ lib.optionals useMpi [ "MPI" ] | ||||
|     ++ lib.optionals useOpenCL [ "OpenCL" ] | ||||
|     ++ lib.optionals useRocm [ "ROCm" ]; | ||||
|     ++ lib.optionals useRocm [ "ROCm" ] | ||||
|     ++ lib.optionals useVulkan [ "Vulkan" ]; | ||||
|  | ||||
|   pnameSuffix = | ||||
|     strings.optionalString (suffices != [ ]) | ||||
| @@ -108,6 +113,11 @@ let | ||||
|     hipblas | ||||
|     rocblas | ||||
|   ]; | ||||
|  | ||||
|   vulkanBuildInputs = [ | ||||
|     vulkan-headers | ||||
|     vulkan-loader | ||||
|   ]; | ||||
| in | ||||
|  | ||||
| effectiveStdenv.mkDerivation ( | ||||
| @@ -164,7 +174,8 @@ effectiveStdenv.mkDerivation ( | ||||
|       ++ optionals useCuda cudaBuildInputs | ||||
|       ++ optionals useMpi [ mpi ] | ||||
|       ++ optionals useOpenCL [ clblast ] | ||||
|       ++ optionals useRocm rocmBuildInputs; | ||||
|       ++ optionals useRocm rocmBuildInputs | ||||
|       ++ optionals useVulkan vulkanBuildInputs; | ||||
|  | ||||
|     cmakeFlags = | ||||
|       [ | ||||
| @@ -178,6 +189,7 @@ effectiveStdenv.mkDerivation ( | ||||
|         (cmakeBool "LLAMA_HIPBLAS" useRocm) | ||||
|         (cmakeBool "LLAMA_METAL" useMetalKit) | ||||
|         (cmakeBool "LLAMA_MPI" useMpi) | ||||
|         (cmakeBool "LLAMA_VULKAN" useVulkan) | ||||
|       ] | ||||
|       ++ optionals useCuda [ | ||||
|         ( | ||||
| @@ -218,6 +230,7 @@ effectiveStdenv.mkDerivation ( | ||||
|         useMpi | ||||
|         useOpenCL | ||||
|         useRocm | ||||
|         useVulkan | ||||
|         ; | ||||
|  | ||||
|       shell = mkShell { | ||||
| @@ -242,11 +255,11 @@ effectiveStdenv.mkDerivation ( | ||||
|       # Configurations we don't want even the CI to evaluate. Results in the | ||||
|       # "unsupported platform" messages. This is mostly a no-op, because | ||||
|       # cudaPackages would've refused to evaluate anyway. | ||||
|       badPlatforms = optionals (useCuda || useOpenCL) lib.platforms.darwin; | ||||
|       badPlatforms = optionals (useCuda || useOpenCL || useVulkan) lib.platforms.darwin; | ||||
|  | ||||
|       # Configurations that are known to result in build failures. Can be | ||||
|       # overridden by importing Nixpkgs with `allowBroken = true`. | ||||
|       broken = (useMetalKit && !effectiveStdenv.isDarwin); | ||||
|       broken = (useMetalKit && !effectiveStdenv.isDarwin) || (useVulkan && effectiveStdenv.isDarwin); | ||||
|  | ||||
|       description = "Inference of LLaMA model in pure C/C++${descriptionSuffix}"; | ||||
|       homepage = "https://github.com/ggerganov/llama.cpp/"; | ||||
|   | ||||
| @@ -157,6 +157,7 @@ | ||||
|  | ||||
|                 mpi-cpu = config.packages.default.override { useMpi = true; }; | ||||
|                 mpi-cuda = config.packages.default.override { useMpi = true; }; | ||||
|                 vulkan = config.packages.default.override { useVulkan = true; }; | ||||
|               } | ||||
|               // lib.optionalAttrs (system == "x86_64-linux") { | ||||
|                 rocm = config.legacyPackages.llamaPackagesRocm.llama-cpp; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user