LM/llama.cpp for SYCL: Difference between revisions
< LM
Jump to navigation
Jump to search
(→F32) |
(→F16) |
||
| (8 intermediate revisions by the same user not shown) | |||
| Line 6: | Line 6: | ||
cmake -B build/sycl -G Ninja \ | cmake -B build/sycl -G Ninja \ | ||
-DGGML_SYCL=ON \ | -DGGML_SYCL=ON \ | ||
-DGGML_SYCL_F16=ON \ | |||
-DGGML_SYCL_FORCE_MMQ=ON \ | |||
-DGGML_SYCL_GRAPH=ON \ | |||
-DGGML_SYCL_DNN=ON \ | |||
-DGGML_SYCL_TARGET=INTEL \ | -DGGML_SYCL_TARGET=INTEL \ | ||
-DGGML_SYCL_DEVICE_ARCH=bmg-g31 \ | -DGGML_SYCL_DEVICE_ARCH=bmg-g31 \ | ||
-DGGML_NATIVE=ON \ | -DGGML_NATIVE=ON \ | ||
| Line 24: | Line 26: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== F16 | === F16 without DNN === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cmake -B build/sycl- | cmake -B build/sycl-nodnn -G Ninja \ | ||
-DGGML_SYCL=ON \ | -DGGML_SYCL=ON \ | ||
-DGGML_SYCL_F16=ON \ | |||
-DGGML_SYCL_DNN=OFF \ | |||
-DGGML_SYCL_TARGET=INTEL \ | -DGGML_SYCL_TARGET=INTEL \ | ||
-DGGML_SYCL_DEVICE_ARCH=bmg-g31 \ | -DGGML_SYCL_DEVICE_ARCH=bmg-g31 \ | ||
-DGGML_NATIVE=ON \ | -DGGML_NATIVE=ON \ | ||
| Line 43: | Line 45: | ||
-DCMAKE_C_FLAGS="-O3 -fp-model=fast=2 -qopenmp" | -DCMAKE_C_FLAGS="-O3 -fp-model=fast=2 -qopenmp" | ||
cmake --build build/sycl- | cmake --build build/sycl-nodnn | ||
cmake --install build/sycl- | cmake --install build/sycl-nodnn --prefix ~/llama.cpp/sycl-nodnn | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 52: | Line 54: | ||
cmake -B build/sycl-f32 -G Ninja \ | cmake -B build/sycl-f32 -G Ninja \ | ||
-DGGML_SYCL=ON \ | -DGGML_SYCL=ON \ | ||
-DGGML_SYCL_F16=OFF \ | |||
-DGGML_SYCL_DNN=ON \ | |||
-DGGML_SYCL_TARGET=INTEL \ | -DGGML_SYCL_TARGET=INTEL \ | ||
-DGGML_SYCL_DEVICE_ARCH=bmg-g31 \ | -DGGML_SYCL_DEVICE_ARCH=bmg-g31 \ | ||
-DGGML_NATIVE=ON \ | -DGGML_NATIVE=ON \ | ||
| Line 105: | Line 107: | ||
cmake -B build/sycl -G Ninja \ | cmake -B build/sycl -G Ninja \ | ||
-DGGML_SYCL=ON \ | -DGGML_SYCL=ON \ | ||
-DGGML_SYCL_F16=ON \ | |||
-DGGML_SYCL_DNN=ON \ | |||
-DGGML_SYCL_TARGET=INTEL \ | -DGGML_SYCL_TARGET=INTEL \ | ||
-DGGML_SYCL_DEVICE_ARCH=bmg-g31 \ | -DGGML_SYCL_DEVICE_ARCH=bmg-g31 \ | ||
-DGGML_NATIVE=ON \ | -DGGML_NATIVE=ON \ | ||
| Line 148: | Line 150: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# turbo quant fork | # turbo quant fork | ||
cmake -B build/sycl -G Ninja \ | cmake -B build/sycl -G Ninja \ | ||
Latest revision as of 04:03, 14 September 2026
Rebuild
F16
cmake -B build/sycl -G Ninja \
-DGGML_SYCL=ON \
-DGGML_SYCL_F16=ON \
-DGGML_SYCL_FORCE_MMQ=ON \
-DGGML_SYCL_GRAPH=ON \
-DGGML_SYCL_DNN=ON \
-DGGML_SYCL_TARGET=INTEL \
-DGGML_SYCL_DEVICE_ARCH=bmg-g31 \
-DGGML_NATIVE=ON \
-DGGML_LTO=ON \
-DMKL_DIR=/opt/intel/oneapi/mkl/latest/lib/cmake/mkl \
-DCMAKE_C_COMPILER=icx \
-DCMAKE_CXX_COMPILER=icpx \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_RPATH="\$ORIGIN/../lib" \
-DCMAKE_CXX_FLAGS="-O3 -fp-model=fast=2 -qopenmp" \
-DCMAKE_C_FLAGS="-O3 -fp-model=fast=2 -qopenmp"
cmake --build build/sycl
cmake --install build/sycl --prefix ~/llama.cpp/sycl
F16 without DNN
cmake -B build/sycl-nodnn -G Ninja \
-DGGML_SYCL=ON \
-DGGML_SYCL_F16=ON \
-DGGML_SYCL_DNN=OFF \
-DGGML_SYCL_TARGET=INTEL \
-DGGML_SYCL_DEVICE_ARCH=bmg-g31 \
-DGGML_NATIVE=ON \
-DGGML_LTO=ON \
-DMKL_DIR=/opt/intel/oneapi/mkl/latest/lib/cmake/mkl \
-DCMAKE_C_COMPILER=icx \
-DCMAKE_CXX_COMPILER=icpx \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_RPATH="\$ORIGIN/../lib" \
-DCMAKE_CXX_FLAGS="-O3 -fp-model=fast=2 -qopenmp" \
-DCMAKE_C_FLAGS="-O3 -fp-model=fast=2 -qopenmp"
cmake --build build/sycl-nodnn
cmake --install build/sycl-nodnn --prefix ~/llama.cpp/sycl-nodnn
F32
cmake -B build/sycl-f32 -G Ninja \
-DGGML_SYCL=ON \
-DGGML_SYCL_F16=OFF \
-DGGML_SYCL_DNN=ON \
-DGGML_SYCL_TARGET=INTEL \
-DGGML_SYCL_DEVICE_ARCH=bmg-g31 \
-DGGML_NATIVE=ON \
-DGGML_LTO=ON \
-DMKL_DIR=/opt/intel/oneapi/mkl/latest/lib/cmake/mkl \
-DCMAKE_C_COMPILER=icx \
-DCMAKE_CXX_COMPILER=icpx \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_RPATH="\$ORIGIN/../lib" \
-DCMAKE_CXX_FLAGS="-O3 -fp-model=fast=2 -qopenmp" \
-DCMAKE_C_FLAGS="-O3 -fp-model=fast=2 -qopenmp"
cmake --build build/sycl-f32
cmake --install build/sycl-f32 --prefix ~/llama.cpp/sycl-f32
Download source
sudo apt install -y git cmake libssl-dev ninja-build
sudo apt install git cmake
sudo apt install libssl-dev openssl
mkdir ~/llama.cpp
git clone https://github.com/ggerganov/llama.cpp ~/llama.cpp/src
git clone https://github.com/TheTom/llama-cpp-turboquant ~/llama.cpp/src-tbq
List available options
grep -rn "option(GGML_SYCL" CMakeLists.txt ggml/CMakeLists.txt
grep -rn "SYCL" CMakeLists.txt ggml/CMakeLists.txt
Build
# install required headers
sudo apt install -y \
intel-oneapi-mkl-devel \
intel-oneapi-dnnl-devel \
intel-oneapi-mkl-sycl-distributed-dft-devel \
intel-oneapi-compiler-dpcpp-cpp \
intel-ocloc-dev \
libigc-dev \
libze-dev
# set options
cmake -B build/sycl -G Ninja \
-DGGML_SYCL=ON \
-DGGML_SYCL_F16=ON \
-DGGML_SYCL_DNN=ON \
-DGGML_SYCL_TARGET=INTEL \
-DGGML_SYCL_DEVICE_ARCH=bmg-g31 \
-DGGML_NATIVE=ON \
-DGGML_LTO=ON \
-DMKL_DIR=/opt/intel/oneapi/mkl/latest/lib/cmake/mkl \
-DCMAKE_C_COMPILER=icx \
-DCMAKE_CXX_COMPILER=icpx \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_RPATH="\$ORIGIN/../lib" \
-DCMAKE_CXX_FLAGS="-O3 -fp-model=fast=2 -qopenmp" \
-DCMAKE_C_FLAGS="-O3 -fp-model=fast=2 -qopenmp"
# build
cmake --build build/sycl
# debug compilation error
cmake --build build/sycl 2>&1 | tee build.log
grep -n -i "error" build.log | head -n 1
tail -n +8270 build.log
# install
cmake --install build/sycl --prefix ~/llama.cpp/sycl
# clean
rm -rf build/sycl
# detect GPU
cd ~/llama.cpp/sycl/bin
./llama-cli --list-devices
Got It!
Available devices: SYCL0: Intel(R) Arc(TM) Pro B70 Graphics (32656 MiB, 32128 MiB free)
TODO: optimized
# turbo quant fork
cmake -B build/sycl -G Ninja \
-DGGML_SYCL=ON \
-DGGML_SYCL_TARGET=INTEL \
-DGGML_SYCL_DNN=ON \
-DGGML_SYCL_F16=ON \
-DGGML_SYCL_DEVICE_ARCH=bmg-g31 \
-DGGML_NATIVE=ON \
-DMKL_DIR=/opt/intel/oneapi/mkl/latest/lib/cmake/mkl \
-DCMAKE_C_COMPILER=icx \
-DCMAKE_CXX_COMPILER=icpx \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_RPATH="\$ORIGIN/../lib" \
-DCMAKE_CXX_FLAGS="-ffast-math -O3" \
-DCMAKE_C_FLAGS="-ffast-math -O3" \
-DGGML_SYCL_TURBO_QUANT=OFF
Run
.bashrc
export SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1
export ZES_ENABLE_SYSMAN=1
List all oneAPI header packages
# list name only
apt list "intel-oneapi-*-devel"
# list name & description
apt search --names-only "^intel-oneapi-.+-devel$"
正在列出... 完成 intel-oneapi-ccl-devel/all 2022.1.1-3 amd64 intel-oneapi-daal-devel/all 2021.5.3-832 amd64 intel-oneapi-dal-devel/all 2026.1.0-7 amd64 intel-oneapi-dnnl-devel/all,now 2026.0.2-40 amd64 [已安裝] intel-oneapi-ipp-devel/all 2026.0.1-51 amd64 intel-oneapi-ippcp-devel/all 2026.0.1-9 amd64 intel-oneapi-ishmem-devel/all 1.6.0-223 amd64 intel-oneapi-libdpstd-devel/all 2022.13.0-107 amd64 intel-oneapi-mkl-classic-devel/all 2026.1.0-236 amd64 intel-oneapi-mkl-cluster-devel/all 2026.1.0-236 amd64 intel-oneapi-mkl-core-devel/all 2026.1.0-236 amd64 intel-oneapi-mkl-devel/all,now 2026.1.0-236 amd64 [已安裝] intel-oneapi-mkl-sycl-devel/all 2026.1.0-236 amd64 intel-oneapi-mkl-sycl-distributed-dft-devel/all,now 2026.1.0-236 amd64 [已安裝] intel-oneapi-mpi-devel/all 2021.18.1-9 amd64 intel-oneapi-onevpl-devel/all 2023.1.0-43488 amd64 intel-oneapi-tbb-devel/all 2023.1.0-151 amd64
References
https://sergiiob.dev/posts/intel-arc-pro-b70-full-recipe-llama-cpp-sycl/