add: llama-cpp-hexagon #8
@@ -0,0 +1,3 @@
|
|||||||
|
{ llama-cpp }:
|
||||||
|
|
||||||
|
llama-cpp.override { hexagonSupport = true; }
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
|
pkgs,
|
||||||
autoAddDriverRunpath,
|
autoAddDriverRunpath,
|
||||||
cmake,
|
cmake,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
@@ -36,7 +37,6 @@
|
|||||||
shaderc,
|
shaderc,
|
||||||
vulkan-headers,
|
vulkan-headers,
|
||||||
vulkan-loader,
|
vulkan-loader,
|
||||||
hexagon-sdk,
|
|
||||||
ninja,
|
ninja,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@@ -44,7 +44,14 @@ let
|
|||||||
# It's necessary to consistently use backendStdenv when building with CUDA support,
|
# It's necessary to consistently use backendStdenv when building with CUDA support,
|
||||||
# otherwise we get libstdc++ errors downstream.
|
# otherwise we get libstdc++ errors downstream.
|
||||||
# cuda imposes an upper bound on the gcc version
|
# cuda imposes an upper bound on the gcc version
|
||||||
effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else stdenv;
|
buildPkgs = import pkgs.path {
|
||||||
|
system = "x86_64-linux"; # builder uses x86_64
|
||||||
|
};
|
||||||
|
|
||||||
|
# hexagon needs a x86 build env
|
||||||
|
crossPkgs = buildPkgs.pkgsCross.aarch64-multiplatform;
|
||||||
|
|
||||||
|
effectiveStdenv = if hexagonSupport then crossPkgs.stdenv else stdenv;
|
||||||
inherit (lib)
|
inherit (lib)
|
||||||
cmakeBool
|
cmakeBool
|
||||||
cmakeFeature
|
cmakeFeature
|
||||||
@@ -147,8 +154,8 @@ effectiveStdenv.mkDerivation (finalAttrs: {
|
|||||||
]
|
]
|
||||||
++ optionals hexagonSupport [
|
++ optionals hexagonSupport [
|
||||||
(cmakeFeature "GGML_HEXAGON_FP32_QUANTIZE_GROUP_SIZE" "128")
|
(cmakeFeature "GGML_HEXAGON_FP32_QUANTIZE_GROUP_SIZE" "128")
|
||||||
(cmakeFeature "HEXAGON_SDK_ROOT" "${hexagon-sdk}/opt/hexagon")
|
(cmakeFeature "HEXAGON_SDK_ROOT" "${pkgs.hexagon-sdk}/opt/hexagon")
|
||||||
(cmakeFeature "HEXAGON_TOOLS_ROOT" "${hexagon-sdk}/opt/hexagon/tools/HEXAGON_Tools/19.0.04")
|
(cmakeFeature "HEXAGON_TOOLS_ROOT" "${pkgs.hexagon-sdk}/opt/hexagon/tools/HEXAGON_Tools/19.0.04")
|
||||||
];
|
];
|
||||||
|
|
||||||
# upstream plans on adding targets at the cmakelevel, remove those
|
# upstream plans on adding targets at the cmakelevel, remove those
|
||||||
@@ -190,9 +197,9 @@ effectiveStdenv.mkDerivation (finalAttrs: {
|
|||||||
xddxdd
|
xddxdd
|
||||||
];
|
];
|
||||||
platforms = lib.platforms.unix;
|
platforms = lib.platforms.unix;
|
||||||
badPlatforms = optionals (cudaSupport || openclSupport) lib.platforms.darwin (
|
badPlatforms = optionals (cudaSupport || openclSupport) lib.platforms.darwin;
|
||||||
hexagonSupport && !effectiveStdenv.hostPlatform.aarch64-linux
|
broken =
|
||||||
);
|
(metalSupport && !effectiveStdenv.hostPlatform.isDarwin)
|
||||||
broken = metalSupport && !effectiveStdenv.hostPlatform.isDarwin;
|
|| (hexagonSupport && !effectiveStdenv.hostPlatform.isAarch64);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user