|
|
@@ -6,6 +6,9 @@
|
|
|
outputs = { self, nixpkgs, flake-utils }:
|
|
|
flake-utils.lib.eachDefaultSystem (system:
|
|
|
let
|
|
|
+ name = "llama.cpp";
|
|
|
+ src = ./.;
|
|
|
+ meta.mainProgram = "llama";
|
|
|
inherit (pkgs.stdenv) isAarch32 isAarch64 isDarwin;
|
|
|
buildInputs = with pkgs; [ openmpi ];
|
|
|
osSpecific = with pkgs; buildInputs ++
|
|
|
@@ -31,7 +34,7 @@
|
|
|
with pkgs; [ openblas ]
|
|
|
);
|
|
|
pkgs = import nixpkgs { inherit system; };
|
|
|
- nativeBuildInputs = with pkgs; [ cmake pkgconfig ];
|
|
|
+ nativeBuildInputs = with pkgs; [ cmake ninja pkgconfig ];
|
|
|
llama-python =
|
|
|
pkgs.python3.withPackages (ps: with ps; [ numpy sentencepiece ]);
|
|
|
postPatch = ''
|
|
|
@@ -44,35 +47,35 @@
|
|
|
mv $out/bin/server $out/bin/llama-server
|
|
|
'';
|
|
|
cmakeFlags = [ "-DLLAMA_BUILD_SERVER=ON" "-DLLAMA_MPI=ON" "-DBUILD_SHARED_LIBS=ON" "-DCMAKE_SKIP_BUILD_RPATH=ON" ];
|
|
|
- in {
|
|
|
+ in
|
|
|
+ {
|
|
|
packages.default = pkgs.stdenv.mkDerivation {
|
|
|
- name = "llama.cpp";
|
|
|
- src = ./.;
|
|
|
- postPatch = postPatch;
|
|
|
- nativeBuildInputs = nativeBuildInputs;
|
|
|
- buildInputs = osSpecific;
|
|
|
+ inherit name src meta postPatch nativeBuildInputs buildInputs postInstall;
|
|
|
cmakeFlags = cmakeFlags
|
|
|
++ (if isAarch64 && isDarwin then [
|
|
|
- "-DCMAKE_C_FLAGS=-D__ARM_FEATURE_DOTPROD=1"
|
|
|
- "-DLLAMA_METAL=ON"
|
|
|
- ] else [
|
|
|
- "-DLLAMA_BLAS=ON"
|
|
|
- "-DLLAMA_BLAS_VENDOR=OpenBLAS"
|
|
|
+ "-DCMAKE_C_FLAGS=-D__ARM_FEATURE_DOTPROD=1"
|
|
|
+ "-DLLAMA_METAL=ON"
|
|
|
+ ] else [
|
|
|
+ "-DLLAMA_BLAS=ON"
|
|
|
+ "-DLLAMA_BLAS_VENDOR=OpenBLAS"
|
|
|
]);
|
|
|
- postInstall = postInstall;
|
|
|
- meta.mainProgram = "llama";
|
|
|
};
|
|
|
packages.opencl = pkgs.stdenv.mkDerivation {
|
|
|
- name = "llama.cpp";
|
|
|
- src = ./.;
|
|
|
- postPatch = postPatch;
|
|
|
- nativeBuildInputs = nativeBuildInputs;
|
|
|
+ inherit name src meta postPatch nativeBuildInputs postInstall;
|
|
|
buildInputs = with pkgs; buildInputs ++ [ clblast ];
|
|
|
cmakeFlags = cmakeFlags ++ [
|
|
|
"-DLLAMA_CLBLAST=ON"
|
|
|
];
|
|
|
- postInstall = postInstall;
|
|
|
- meta.mainProgram = "llama";
|
|
|
+ };
|
|
|
+ packages.rocm = pkgs.stdenv.mkDerivation {
|
|
|
+ inherit name src meta postPatch nativeBuildInputs postInstall;
|
|
|
+ buildInputs = with pkgs; buildInputs ++ [ hip hipblas rocblas ];
|
|
|
+ cmakeFlags = cmakeFlags ++ [
|
|
|
+ "-DLLAMA_HIPBLAS=1"
|
|
|
+ "-DCMAKE_C_COMPILER=hipcc"
|
|
|
+ "-DCMAKE_CXX_COMPILER=hipcc"
|
|
|
+ "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
|
|
|
+ ];
|
|
|
};
|
|
|
apps.llama-server = {
|
|
|
type = "app";
|