如何在DCU上面编译llama.cpp
·
推荐一个免费的 语音识别网站
一、环境配置
操作系统以及各种软件的版本如下:
二、下载代码并编译
# 注意要下载b6792版本,因为最新的版本你到最后会发现gguf模型在推理时,会报各种乱码
git clone --depth 1 --branch b6792 https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
HIPCXX="$(hipconfig -l)/clang" HIP_PATH="$(hipconfig -R)" cmake -S . -B build -DGGML_HIP=ON -DGPU_TARGETS=gfx928 -DCMAKE_BUILD_TYPE=Release
备注:在上面的命令中,gfx928是DCU的架构名称,可以通过下面的命令获得:
clinfo | grep Name
编译时,报错如下:
此时,vi examples/CMakeLists.txt,将simple文件夹那行注释掉:
重新运行上面的编译命令,再次报错如下:
解决办法是:
sed -i 's/5\.3\.25211/6.3.25211/g' /opt/dtk/lib/cmake/hip/hip-config-version.cmake
然后再次重新运行上面的编译命令。
完成后,再运行:(下面的128可改为你真实的cpu核数)
cmake --build build --config Release -- -j 128
此处的编译时间很长,需耐心等待。
如果中途报错如下:

那么就执行下面的操作:
apt install -y libclang-rt-15-dev
#下面的LDFLAGS路径是通过这个命令获得:find /usr/lib -name "libclang_rt.builtins-x86_64.a"
#/usr/lib/llvm-15/lib/clang/15.0.7/lib/linux/libclang_rt.builtins-x86_64.a
export LDFLAGS="-L/usr/lib/llvm-15/lib/clang/15.0.7/lib/linux"
rm -rf build
HIPCXX="$(hipconfig -l)/clang" HIP_PATH="$(hipconfig -R)" cmake -S . -B build -DGGML_HIP=ON -DGPU_TARGETS=gfx928 -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -- -j 128
如果还报错:
/root/private_data/work_space/llama.cpp/ggml/src/ggml-cuda/ggml-cuda.cu:3840:24: error: no member named 'unifiedAddressing' in 'hipDeviceProp_t'
就修改ggml/src/ggml-cuda/ggml-cuda.cu:
把这行代码:
bool is_uma = prop.unifiedAddressing > 0 || uma_env;
改为:
bool is_uma = uma_env;
然后再重新编译。
最终成功的编译结果截图:

128核cpu并行编译,耗时7分钟38秒。
总结一下,整体安装脚本如下:
apt update
apt install -y libclang-rt-15-dev
export LDFLAGS="-L/usr/lib/llvm-15/lib/clang/15.0.7/lib/linux"
rm -rf build
sed -i 's/5\.3\.25211/6.3.25211/g' /opt/dtk/lib/cmake/hip/hip-config-version.cmake
HIPCXX="$(hipconfig -l)/clang" HIP_PATH="$(hipconfig -R)" cmake -S . -B build -DGGML_HIP=ON -DGPU_TARGETS=gfx928 -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -- -j 128
三、参考文献
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)