在服务器上部署DeepIM-PyTorch时,需要编译point matching loss layer,需要依赖nvcc进行编译。但是直接编译会报错:No such file or directory: '/home/xxx/miniforge-pypy3/envs/deepim/bin/nvcc'
。是因为CUDA Toolkit (Pytorch)是 CUDA不完整的工具安装包,其主要包含在使用 CUDA 相关的功能时所依赖的动态链接库。不会安装驱动程序。而CUDA Toolkit (nvidia): CUDA完整的工具安装包,其中提供了 Nvidia 驱动程序、开发 CUDA 程序相关的开发工具包等可供安装的选项。包括 CUDA 程序的编译器、IDE、调试器等,CUDA 程序所对应的各式库文件以及它们的头文件。
所以应该直接调用本机完整的cuda中的nvcc。这时需要把CUDA_HOME设置为cuda所在正确目录:
export CUDA_HOME=/usr/local/cuda
。往往服务器的/usr/local/下会有多个cuda版本,这些都是完整版,按需设置目录即可。
例如,我的虚拟环境中使用的是cudatoolkit=11.3,那么我就选取该文件夹中的cuda-11.3作为CUDA_HOME的值,即export CUDA_HOME=/usr/local/cuda-11.3
。一定要注意虚拟环境中的cuda版本和本机有的cuda版本对应上,不然就会报错 The detected CUDA version (10.1) mismatches the version that was used to compile PyTorch (11.3). Please make sure to use the same CUDA versions.
还有就是尽可能使用新版本的cuda,服务器nvcc -V
中的cuda版本为10.1,在虚拟环境中也用10.1版本的cudatoolkit,会因为种种原因无法通过编译。
在anaconda虚拟环境中编译文件找不到cudatoolkits下的nvcc
于 2024-01-14 11:39:26 首次发布