diff --git a/.gitignore b/.gitignore index df822228..81b0a7ef 100644 --- a/.gitignore +++ b/.gitignore @@ -49,6 +49,8 @@ build* !build-info.sh !build.zig !docs/build.md +!scripts/build-*.sh +!scripts/build-*.bat /libllama.so /llama-* /vulkan-shaders-gen diff --git a/scripts/build-zen.bat b/scripts/build-zen.bat new file mode 100644 index 00000000..125bf307 --- /dev/null +++ b/scripts/build-zen.bat @@ -0,0 +1,27 @@ +@echo off +REM CPU-only build helper for AVX-512-capable CPUs (AMD Zen4 / Intel +REM Sapphire Rapids+) on Windows + MSVC. Enables the IQK GEMM kernels +REM gated by HAVE_FANCY_SIMD (see docs\build.md "CPU build flags for AVX-512"). +REM +REM Run from a Visual Studio "x64 Native Tools Command Prompt" so that +REM cl.exe and the rest of the MSVC toolchain are on PATH. +REM +REM Usage: +REM scripts\build-zen.bat [build-dir] +REM +REM Default build directory is "build". + +setlocal + +if "%~1"=="" (set BUILD_DIR=build) else (set BUILD_DIR=%~1) + +cmake -B "%BUILD_DIR%" -G "NMake Makefiles" ^ + -DCMAKE_BUILD_TYPE=Release ^ + -DGGML_NATIVE=ON ^ + -DGGML_AVX512=ON ^ + -DGGML_AVX512_VBMI=ON ^ + -DGGML_AVX512_VNNI=ON ^ + -DGGML_AVX512_BF16=ON +if errorlevel 1 exit /b 1 + +cmake --build "%BUILD_DIR%" --config Release diff --git a/scripts/build-zen.sh b/scripts/build-zen.sh new file mode 100644 index 00000000..eb88ee41 --- /dev/null +++ b/scripts/build-zen.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# CPU-only build helper for AVX-512-capable CPUs (AMD Zen4 / Intel +# Sapphire Rapids+). Enables the IQK GEMM kernels gated by HAVE_FANCY_SIMD +# (see docs/build.md "CPU build flags for AVX-512"). +# +# Usage: +# ./scripts/build-zen.sh [build-dir] +# +# Default build directory is "build". A subsequent +# +# objdump -d /bin/llama-cli | grep -c vpdpbusd +# +# should report a non-trivial count if VNNI was compiled in. The runtime +# banner of any built binary will print "HAVE_FANCY_SIMD is defined" when +# the AVX-512 quantized matmul path is active. + +set -e + +BUILD_DIR=${1:-build} + +cmake -B "$BUILD_DIR" \ + -DCMAKE_BUILD_TYPE=Release \ + -DGGML_NATIVE=ON \ + -DGGML_AVX512=ON \ + -DGGML_AVX512_VBMI=ON \ + -DGGML_AVX512_VNNI=ON \ + -DGGML_AVX512_BF16=ON + +cmake --build "$BUILD_DIR" --config Release -j