mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-27 08:21:30 +00:00 
			
		
		
		
	flake : update to support metal on m1/m2 (#1724)
This commit is contained in:
		 jacobi petrucciani
					jacobi petrucciani
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							4dc62c545d
						
					
				
				
					commit
					5b57a5b726
				
			
							
								
								
									
										30
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										30
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							| @@ -1,12 +1,15 @@ | ||||
| { | ||||
|   "nodes": { | ||||
|     "flake-utils": { | ||||
|       "inputs": { | ||||
|         "systems": "systems" | ||||
|       }, | ||||
|       "locked": { | ||||
|         "lastModified": 1676283394, | ||||
|         "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", | ||||
|         "lastModified": 1685518550, | ||||
|         "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", | ||||
|         "owner": "numtide", | ||||
|         "repo": "flake-utils", | ||||
|         "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", | ||||
|         "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
| @@ -17,11 +20,11 @@ | ||||
|     }, | ||||
|     "nixpkgs": { | ||||
|       "locked": { | ||||
|         "lastModified": 1678470307, | ||||
|         "narHash": "sha256-OEeMUr3ueLIXyW/OaFUX5jUdimyQwMg/7e+/Q0gC/QE=", | ||||
|         "lastModified": 1685931219, | ||||
|         "narHash": "sha256-8EWeOZ6LKQfgAjB/USffUSELPRjw88A+xTcXnOUvO5M=", | ||||
|         "owner": "NixOS", | ||||
|         "repo": "nixpkgs", | ||||
|         "rev": "0c4800d579af4ed98ecc47d464a5e7b0870c4b1f", | ||||
|         "rev": "7409480d5c8584a1a83c422530419efe4afb0d19", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
| @@ -36,6 +39,21 @@ | ||||
|         "flake-utils": "flake-utils", | ||||
|         "nixpkgs": "nixpkgs" | ||||
|       } | ||||
|     }, | ||||
|     "systems": { | ||||
|       "locked": { | ||||
|         "lastModified": 1681028828, | ||||
|         "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", | ||||
|         "owner": "nix-systems", | ||||
|         "repo": "default", | ||||
|         "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "nix-systems", | ||||
|         "repo": "default", | ||||
|         "type": "github" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "root": "root", | ||||
|   | ||||
							
								
								
									
										26
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								flake.nix
									
									
									
									
									
								
							| @@ -6,6 +6,13 @@ | ||||
|   outputs = { self, nixpkgs, flake-utils }: | ||||
|     flake-utils.lib.eachDefaultSystem (system: | ||||
|       let | ||||
|         inherit (pkgs.stdenv) isAarch64 isDarwin; | ||||
|         inherit (pkgs.lib) optionals; | ||||
|         isM1 = isAarch64 && isDarwin; | ||||
|         osSpecific = | ||||
|           if isM1 then with pkgs.darwin.apple_sdk_11_0.frameworks; [ Accelerate MetalKit MetalPerformanceShaders MetalPerformanceShadersGraph ] | ||||
|           else if isDarwin then with pkgs.darwin.apple_sdk.frameworks; [ Accelerate CoreGraphics CoreVideo ] | ||||
|           else [ ]; | ||||
|         pkgs = import nixpkgs { | ||||
|           inherit system; | ||||
|         }; | ||||
| @@ -18,17 +25,22 @@ | ||||
|         packages.default = pkgs.stdenv.mkDerivation { | ||||
|           name = "llama.cpp"; | ||||
|           src = ./.; | ||||
|           postPatch = | ||||
|             if isM1 then '' | ||||
|               substituteInPlace ./ggml-metal.m \ | ||||
|                 --replace '[[NSBundle mainBundle] pathForResource:@"ggml-metal" ofType:@"metal"];' "@\"$out/ggml-metal.metal\";" | ||||
|             '' else ""; | ||||
|           nativeBuildInputs = with pkgs; [ cmake ]; | ||||
|           buildInputs = with pkgs; lib.optionals stdenv.isDarwin [ | ||||
|             darwin.apple_sdk.frameworks.Accelerate | ||||
|           ]; | ||||
|           cmakeFlags = with pkgs; lib.optionals (system == "aarch64-darwin") [ | ||||
|           buildInputs = osSpecific; | ||||
|           cmakeFlags = [ "-DLLAMA_BUILD_SERVER=ON" ] ++ (optionals isM1 [ | ||||
|             "-DCMAKE_C_FLAGS=-D__ARM_FEATURE_DOTPROD=1" | ||||
|           ]; | ||||
|             "-DLLAMA_METAL=ON" | ||||
|           ]); | ||||
|           installPhase = '' | ||||
|             mkdir -p $out/bin | ||||
|             mv bin/* $out/bin/ | ||||
|             mv $out/bin/main $out/bin/llama | ||||
|             mv $out/bin/server $out/bin/llama-server | ||||
|  | ||||
|             echo "#!${llama-python}/bin/python" > $out/bin/convert.py | ||||
|             cat ${./convert.py} >> $out/bin/convert.py | ||||
| @@ -40,9 +52,7 @@ | ||||
|           packages = with pkgs; [ | ||||
|             cmake | ||||
|             llama-python | ||||
|           ] ++ lib.optionals stdenv.isDarwin [ | ||||
|             darwin.apple_sdk.frameworks.Accelerate | ||||
|           ]; | ||||
|           ] ++ osSpecific; | ||||
|         }; | ||||
|       } | ||||
|     ); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user