佛山市外贸网站建设价格,锡盟做网站,牛网站,郴州市人口今天在写大模型量化推理框架时遇到了一些编译上的错误#xff0c;简单复盘一下问题和解决方案#xff1a;
问题1#xff1a;CMAKE_CUDA_ARCHITECTURES
报错信息#xff1a; CMake Error: CMAKE_CUDA_ARCHITECTURES must be non-empty if set cmake和cuda相关的报错通常都…今天在写大模型量化推理框架时遇到了一些编译上的错误简单复盘一下问题和解决方案
问题1CMAKE_CUDA_ARCHITECTURES
报错信息 CMake Error: CMAKE_CUDA_ARCHITECTURES must be non-empty if set cmake和cuda相关的报错通常都很“调虎离山”。 当出现这个报错时本质问题并不是没有指定所谓的cuda architecture参数而是找不到nvcc路径。
那么解决方案就是在环境变量中添加nvcc的路径
export PATH$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME/usr/local/cuda然后source ~/.bashrc保存修改的内容然后用如下命令检查一下是否生效 参考资料 CMake Error: CMAKE_CUDA_ARCHITECTURES must be non-empty if set
问题2CMake版本过低
服务器上CMake版本过低
这个好处理直接用pip安装新版的cmake即可
pip install cmake问题3GCC版本过低
服务器上默认的gcc版本非常低 这个问题比较棘手需要手动下载新版的gcc然后激活新版的gcc以替换旧版本。比如现在服务器上下载好了多个版本的gcc 我进入到11版本的文件夹中然后执行如下命令激活
source enable 于是查看当前的gcc的版本 但是并没有这么顺利我发现在编译时仍然会报错gcc版本过低。下面是我猜测的原因我将gcc的路径打印whereis gcc出来发现有多个路径也许系统默认选择了第一个路径也就是老版本。 于是我尝试在CMakeLists.txt的开头加上如下代码作用是手动指定gcc的路径
set(CMAKE_CXX_COMPILER /opt/rh/devtoolset-11/root/usr/bin/gcc)然后编译了一次好像没生效然后我再编译了一次发现编译成功