如何调试llama.cpp
- 配置编译选项和编译器:
cmake -B build -DGGML_RVV=ON -DGGML_RV_ZICBOP=OFF -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ - 编译:
cmake --build build --config Debug -j 8或者制定目标编译:cmake --build build --config Debug -j 8 --target llama-cli - gdb调试:
gdb --args ./build/bin/llama-cli -m ../DeepSeek-R1-Distill-Llama-8B-Q2_K_L.gguf -p "Hello" -t 1,使用-t 1可以指定单线程调试。
判断RVV是否支持的手段
在llama.cpp里的RVV相关的算子里,如果判断平台当前是否支持RVV,使用的手段是:
cpp
#if defined(__riscv_v_intrinsic)
或
cpp
#if defined(__riscv_v)
或者通过
cpp
if(ggml_cpu_has_riscv_v) {
}
但需要注意的是:
根据ggml/src/ggml-cpu/CMakeLists.txt的内容,rvv生效的部分仅位于ggml/src/ggml-cpu范围内,因此,使用rvv需要严格的限制在此范围内的文件(当然也可以通过修改CMakeLists.txt使得范围扩张)。