虚拟环境已安装:
在虚拟环境中,安装tinycudann:
1 | pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch |
报错:
1 | error: [Errno 2] No such file or directory: ':/usr/local/cuda-11.3:/usr/local/cuda-11.3/bin/nvcc' |
问题是找不到cuda11.3对应的nvcc。
查看当前的cuda映射:
1 | cd /usr/local |
返回:
1 | File: cuda -> /usr/local/cuda-11.8/ |
表明当前映射到了11.8,需要切换成11.3:
1 | sudo rm -rf cuda |
看一下当前的nvcc版本:
1 | nvcc -V |
返回的是11.5,需要切换成11.3。
查看和更改nvcc映射:
1 | cd /usr/bin |
发现当前没有映射,于是添加软连接:
1 | sudo rm -rf /usr/bin/nvcc |
但报错:/usr/bin/nvcc已存在,此路不通。
于是在/usr目录下,查找所有nvcc命名文件:
1 | find /usr -type f -iname nvcc |
返回:
1 | /usr/bin/nvcc |
用which指令在环境变量$PATH设置的目录里查找nvcc:
1 | which nvcc |
返回:
1 | /usr/bin/nvcc |
说明实际上执行的是/usr/bin/nvcc这个文件,打开它查看其中的内容:
1 | cat /usr/bin/nvcc |
返回:
1 | exec /usr/lib/nvidia-cuda-toolkit/bin/nvcc "$@" |
说明/usr/bin/nvcc这个文件的作用是指定执行哪个nvcc。可以看出,真正执行的是/usr/lib/nvidia-cuda-toolkit/bin/nvcc而不是需要的/usr/local/cuda-11.3/bin/nvcc。下面就把它改过来。
vim打开/usr/bin/nvcc:
1 | sudo vi nvcc |
键入o
,新建一行,将执行文件改成/usr/local/cuda-11.3/bin/nvcc,并把原来的一行注释掉(方便改回来)。最终的文件内容是:
1 | # exec /usr/lib/nvidia-cuda-toolkit/bin/nvcc "$@" |
按下esc
, 退出编辑模式,回到命令模式。然后键入:wq
保存并退出。
检查当前的nvcc版本,切换成功:
1 | nvcc: NVIDIA (R) Cuda compiler driver |
接下来又出现一个问题:
1 | raise RuntimeError( |
也就是说当前g++的版本是10.5,但要求是5.0-10.0。
查看所有可供选择的g++:
1 | sudo update-alternatives --config g++ |
返回:
1 | Selection Path Priority Status |
切换到g++-9即可。
如果有已经安装的g++版本,但是列表中并没有呈现,可通过下面的指令添加:
1 | sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 40 |
然后成功安装tinycudann。