在我的环境里这么操作是没问题的,如果大家遇到不一样的问题,就再多搜搜细心分析,肯定能解决的~
我的环境:
系统:Ubuntu 22.04
Python:3.8(conda)
1 为什么遇到这个问题
我在安装和使用3D Gaussian Splatting项目时,其中两个子模块:submodules/diff-gaussian-rasterization 和 submodules/simple-knn,安装时报错:
类似这些:
/usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘...’:
435 | function(_Functor&& __f) | ^ /usr/include/c++/11/bits/std_function.h:435:145: note: ‘_ArgTypes’ /usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with ‘...’: 530 | operator=(_Functor&& __f) | ^ /usr/include/c++/11/bits/std_function.h:530:146: note: ‘_ArgTypes’
查了半天才发现是因为 CUDA版本不对,我目前是11.5,要求的是11.8。于是我得升级CUDA版本,所以就记录下过程
2、CUDA版本到底是哪个
这里先记录下初学时可能会搞迷糊的问题,就是跑深度学习这些的时候,CUDA版本到底看的是哪个,我开始就搞迷糊了。
有两个版本号:
1)nvidia-smi 命令出来的,比如当前我的版本显示的是 12.0
2)nvcc -V 命令出来的,比如当前我显示11.5
这俩版本详细情况可以搜一下就有很多,这里简单理解呢就是:
第1个版本是显卡驱动的版本,这个版本显示了这个显卡最高支持的CUDA版本。
第2个版本是toolkit的版本,这才是编程要看的那个版本,一般是小于等于第1个显示的版本。
所以一般情况说的都是第2个版本号。
3、升级CUDA版本
我当前 Nvcc -V 显示版本是11.5, 而现在要升级到11.8.
所以要安装11.8版本,就去官网 CUDA Toolkit 11.8 Downloads | NVIDIA Developer
然后选电脑对应的环境,注意最后选install type要选 runfile(local),就是本地安装,为啥呢,因为我先试了其他两个装的时候会报错......
然后就装好了,默认安装路径在这里:
/usr/local/cuda-11.8
并且这个路径下还自动有个 cuda的软连接指向这个目录。
4、切换CUDA版本
此时11.5和11.8都安装了,但是nvcc -V 显示使用的还是11.5版本,现在需要切换到11.8.
先查看老版本文件在哪,which nvcc 发现是在 /usr/bin下。
然后 cat nvcc,显示:
#!/bin/sh
exec /usr/lib/nvidia-cuda-toolkit/bin/nvcc "$@"
说明nvcc它也是链接到了另一个地方。
所以修改这个文件,把路径指到新版本的目录,就可以了。
当前新版本的nvcc文件就是/usr/local/cuda-11.8/bin/nvcc
就把上面的文件改为
#!/bin/sh
exec /usr/lib/nvidia-cuda-toolkit/bin/nvcc "$@"
此时nvcc -V,就能看到新版本的输出版本号了