scripts : add build-zen.{sh,bat} helpers for AVX-512-capable CPUs (#1734)
Adds two thin one-liner-ish helpers that invoke `cmake` with the flag
set documented in docs/build.md "CPU build flags for AVX-512", so that
users on AMD Zen4 / Intel Sapphire Rapids+ hardware get the IQK
HAVE_FANCY_SIMD path activated without having to remember the five
relevant `GGML_AVX512_*=ON` options.
scripts/build-zen.sh - Linux / macOS bash wrapper
scripts/build-zen.bat - Windows MSVC wrapper (run from a
"x64 Native Tools Command Prompt")
Both default to a "build" output directory, both pass through to the
same cmake invocation, and both work alongside the existing build
options (no behavioural change to vanilla CMake builds).
.gitignore: added `!scripts/build-*.sh` / `!scripts/build-*.bat`
exceptions, in line with the existing `!build-info.sh` / `!build.zig`
exceptions, so the scripts directory build helpers don't get caught
by the broad `build*` artifact pattern.
This is a follow-up to #1729 — the docs section explains why these
flags matter, this PR makes them one command away.
This commit is contained in:
parent
485c431b9d
commit
a67287124d
|
|
@ -49,6 +49,8 @@ build*
|
||||||
!build-info.sh
|
!build-info.sh
|
||||||
!build.zig
|
!build.zig
|
||||||
!docs/build.md
|
!docs/build.md
|
||||||
|
!scripts/build-*.sh
|
||||||
|
!scripts/build-*.bat
|
||||||
/libllama.so
|
/libllama.so
|
||||||
/llama-*
|
/llama-*
|
||||||
/vulkan-shaders-gen
|
/vulkan-shaders-gen
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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 <build-dir>/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
|
||||||
Loading…
Reference in New Issue