|
6 | 6 | outputs = { self, nixpkgs, flake-utils }:
|
7 | 7 | flake-utils.lib.eachDefaultSystem (system:
|
8 | 8 | let
|
| 9 | + name = "llama.cpp"; |
| 10 | + src = ./.; |
| 11 | + meta.mainProgram = "llama"; |
9 | 12 | inherit (pkgs.stdenv) isAarch32 isAarch64 isDarwin;
|
10 | 13 | buildInputs = with pkgs; [ openmpi ];
|
11 | 14 | osSpecific = with pkgs; buildInputs ++
|
12 |
| - ( |
13 |
| - if isAarch64 && isDarwin then |
14 |
| - with pkgs.darwin.apple_sdk_11_0.frameworks; [ |
15 |
| - Accelerate |
16 |
| - MetalKit |
17 |
| - ] |
18 |
| - else if isAarch32 && isDarwin then |
19 |
| - with pkgs.darwin.apple_sdk.frameworks; [ |
20 |
| - Accelerate |
21 |
| - CoreGraphics |
22 |
| - CoreVideo |
23 |
| - ] |
24 |
| - else |
25 |
| - with pkgs; [ openblas ] |
26 |
| - ); |
| 15 | + ( |
| 16 | + if isAarch64 && isDarwin then |
| 17 | + with pkgs.darwin.apple_sdk_11_0.frameworks; [ |
| 18 | + Accelerate |
| 19 | + MetalKit |
| 20 | + ] |
| 21 | + else if isAarch32 && isDarwin then |
| 22 | + with pkgs.darwin.apple_sdk.frameworks; [ |
| 23 | + Accelerate |
| 24 | + CoreGraphics |
| 25 | + CoreVideo |
| 26 | + ] |
| 27 | + else |
| 28 | + with pkgs; [ openblas ] |
| 29 | + ); |
27 | 30 | pkgs = import nixpkgs { inherit system; };
|
28 |
| - nativeBuildInputs = with pkgs; [ cmake pkgconfig ]; |
| 31 | + nativeBuildInputs = with pkgs; [ cmake ninja pkgconfig ]; |
29 | 32 | llama-python =
|
30 | 33 | pkgs.python3.withPackages (ps: with ps; [ numpy sentencepiece ]);
|
31 | 34 | postPatch = ''
|
|
38 | 41 | mv $out/bin/server $out/bin/llama-server
|
39 | 42 | '';
|
40 | 43 | cmakeFlags = [ "-DLLAMA_BUILD_SERVER=ON" "-DLLAMA_MPI=ON" "-DBUILD_SHARED_LIBS=ON" "-DCMAKE_SKIP_BUILD_RPATH=ON" ];
|
41 |
| - in { |
| 44 | + in |
| 45 | + { |
42 | 46 | packages.default = pkgs.stdenv.mkDerivation {
|
43 |
| - name = "llama.cpp"; |
44 |
| - src = ./.; |
45 |
| - postPatch = postPatch; |
46 |
| - nativeBuildInputs = nativeBuildInputs; |
47 |
| - buildInputs = osSpecific; |
| 47 | + inherit name src meta postPatch nativeBuildInputs buildInputs postInstall; |
48 | 48 | cmakeFlags = cmakeFlags
|
49 | 49 | ++ (if isAarch64 && isDarwin then [
|
50 |
| - "-DCMAKE_C_FLAGS=-D__ARM_FEATURE_DOTPROD=1" |
51 |
| - "-DLLAMA_METAL=ON" |
52 |
| - ] else [ |
53 |
| - "-DLLAMA_BLAS=ON" |
54 |
| - "-DLLAMA_BLAS_VENDOR=OpenBLAS" |
| 50 | + "-DCMAKE_C_FLAGS=-D__ARM_FEATURE_DOTPROD=1" |
| 51 | + "-DLLAMA_METAL=ON" |
| 52 | + ] else [ |
| 53 | + "-DLLAMA_BLAS=ON" |
| 54 | + "-DLLAMA_BLAS_VENDOR=OpenBLAS" |
55 | 55 | ]);
|
56 |
| - postInstall = postInstall; |
57 |
| - meta.mainProgram = "llama"; |
58 | 56 | };
|
59 | 57 | packages.opencl = pkgs.stdenv.mkDerivation {
|
60 |
| - name = "llama.cpp"; |
61 |
| - src = ./.; |
62 |
| - postPatch = postPatch; |
63 |
| - nativeBuildInputs = nativeBuildInputs; |
| 58 | + inherit name src meta postPatch nativeBuildInputs postInstall; |
64 | 59 | buildInputs = with pkgs; buildInputs ++ [ clblast ];
|
65 | 60 | cmakeFlags = cmakeFlags ++ [
|
66 | 61 | "-DLLAMA_CLBLAST=ON"
|
67 | 62 | ];
|
68 |
| - postInstall = postInstall; |
69 |
| - meta.mainProgram = "llama"; |
| 63 | + }; |
| 64 | + packages.rocm = pkgs.stdenv.mkDerivation { |
| 65 | + inherit name src meta postPatch nativeBuildInputs postInstall; |
| 66 | + buildInputs = with pkgs; buildInputs ++ [ hip hipblas rocblas ]; |
| 67 | + cmakeFlags = cmakeFlags ++ [ |
| 68 | + "-DLLAMA_HIPBLAS=1" |
| 69 | + "-DCMAKE_C_COMPILER=hipcc" |
| 70 | + "-DCMAKE_CXX_COMPILER=hipcc" |
| 71 | + "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" |
| 72 | + ]; |
70 | 73 | };
|
71 | 74 | apps.llama-server = {
|
72 | 75 | type = "app";
|
|
0 commit comments