Git commit
硬件环境
- Board: Milk-V Jupiter
- SoC: SpacemiT K1/M1
- CPU: SpacemiT X60
- Architecture: RISC-V RV64
- OS: Linux
- CPU cores: 8
- llama.cpp: current source tree
/proc/cpuinfo 显示:
model name : Spacemit(R) X60
uarch : spacemit,x60
isa : rv64imafdcv_zicbom_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zfhmin_zca_zcd_zba_zbb_zbc_zbs_zkt_zve32f_zve32x_zve64d_zve64f_zve64x_zvfh_zvfhmin_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt
从 /proc/cpuinfo 看,CPU 支持:
- RV64
- RVV
- Zfh / Zfhmin
- Zvfh / Zvfhmin
- Zba / Zbb / Zbc / Zbs
- Zicbom
- Zihintpause
- 以及其他 RISC-V 扩展
当前 GCC
系统 GCC 位于:
/usr/bin/gcc
/usr/bin/g++
之前 CMake 因环境变量错误使用了不存在的 clang:
CC=/usr/bin/clang
CXX=/usr/bin/clang++
实际系统中不存在:
/usr/bin/clang
/usr/bin/clang++
清除 CC/CXX 后,CMake 已经可以正常检测 RISC-V/SpacemiT 编译器。
llama.cpp CMake 配置
使用:
cmake -B build \
-DCMAKE_BUILD_TYPE=Release \
-DGGML_CPU_RISCV64_SPACEMIT=ON \
-DGGML_CPU_REPACK=OFF \
-DLLAMA_OPENSSL=OFF \
-DGGML_RVV=ON \
-DGGML_RV_ZVFH=ON \
-DGGML_RV_ZFH=ON \
-DGGML_RV_ZICBOP=ON \
-DGGML_RV_ZIHINTPAUSE=ON \
-DGGML_RV_ZBA=ON \
-DCMAKE_TOOLCHAIN_FILE=${PWD}/cmake/riscv64-spacemit-linux-gnu-gcc.cmake \
-DCMAKE_INSTALL_PREFIX=build/installed
CMake 检测结果
CMake 可以成功检测到部分 SpacemiT 扩展:
-- Performing Test SPACEMIT_RISCV_COMPILER_SUPPORT_IME1
-- Performing Test SPACEMIT_RISCV_COMPILER_SUPPORT_IME1 - Success
-- Performing Test SPACEMIT_RISCV_COMPILER_SUPPORT_VMADOTN
-- Performing Test SPACEMIT_RISCV_COMPILER_SUPPORT_VMADOTN - Success
但是以下指令检测失败:
SPACEMIT_RISCV_COMPILER_SUPPORT_VMADOT_S4
SPACEMIT_RISCV_COMPILER_SUPPORT_VMADOT_S8
SPACEMIT_RISCV_COMPILER_SUPPORT_VFWMADOT_FP16
SPACEMIT_RISCV_COMPILER_SUPPORT_VFMADOT_S4
SPACEMIT_RISCV_COMPILER_SUPPORT_VFMADOT_S8
SPACEMIT_RISCV_COMPILER_SUPPORT_VPACK
SPACEMIT_RISCV_COMPILER_SUPPORT_VNPACK
最终 CMake 确定:
RISCV64_SPACEMIT_IME_SPEC: RISCV64_SPACEMIT_IME1
但随后因为没有设置 SPERT_DIR 而停止:
CMake Error at ggml/src/ggml-cpu/CMakeLists.txt:461 (message):
SPERT_DIR is not set. Point it at the extracted spine-runtime release
(with include/ and lib/).
spine-runtime
我已经准备了:
/home/niwang/spine-runtime.riscv64.0.6.3
计划通过:
-DSPERT_DIR=/home/niwang/spine-runtime.riscv64.0.6.3
提供给 CMake。
1. 推荐使用哪个 GCC/toolchain?
当前系统 GCC 可以检测到:
IME1 Success
VMADOTN Success
但无法检测:
VMADOT_S4
VMADOT_S8
VFWMADOT_FP16
VFMADOT_S4
VFMADOT_S8
VPACK
VNPACK
请问 SpacemiT X60/K1 是否需要使用 SpacemiT 官方定制 GCC/toolchain,才能完整支持这些 IME 指令?
如果需要,应该从哪里获取对应版本的 GCC/toolchain?
Git commit
硬件环境
/proc/cpuinfo显示:从
/proc/cpuinfo看,CPU 支持:当前 GCC
系统 GCC 位于:
之前 CMake 因环境变量错误使用了不存在的 clang:
实际系统中不存在:
清除
CC/CXX后,CMake 已经可以正常检测 RISC-V/SpacemiT 编译器。llama.cpp CMake 配置
使用:
cmake -B build \ -DCMAKE_BUILD_TYPE=Release \ -DGGML_CPU_RISCV64_SPACEMIT=ON \ -DGGML_CPU_REPACK=OFF \ -DLLAMA_OPENSSL=OFF \ -DGGML_RVV=ON \ -DGGML_RV_ZVFH=ON \ -DGGML_RV_ZFH=ON \ -DGGML_RV_ZICBOP=ON \ -DGGML_RV_ZIHINTPAUSE=ON \ -DGGML_RV_ZBA=ON \ -DCMAKE_TOOLCHAIN_FILE=${PWD}/cmake/riscv64-spacemit-linux-gnu-gcc.cmake \ -DCMAKE_INSTALL_PREFIX=build/installedCMake 检测结果
CMake 可以成功检测到部分 SpacemiT 扩展:
但是以下指令检测失败:
最终 CMake 确定:
但随后因为没有设置 SPERT_DIR 而停止:
spine-runtime
我已经准备了:
计划通过:
提供给 CMake。
1. 推荐使用哪个 GCC/toolchain?
当前系统 GCC 可以检测到:
但无法检测:
请问 SpacemiT X60/K1 是否需要使用 SpacemiT 官方定制 GCC/toolchain,才能完整支持这些 IME 指令?
如果需要,应该从哪里获取对应版本的 GCC/toolchain?