欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

关于pytorch扩展的几个问题

时间:2023-05-25

参考自:【环境】pytorch选择cuda的顺序【关于cudatoolkit和/usr/local/cuda】

                cuda和cudatoolkit

一:cuda扩展

       涉及到cuda扩展,有关cuda源码(.cu文件)编译的部分需要使用NVIDIA官网提供的CUDAtoolkit工具,一些工程下喜欢使用ninja来对源码进行编译,此时要注意ninja需要cuda的版本至少在10.0以上。(而且,当文件夹下有build.ninja这个文件的时候,表明作者已经把编译的不走给你写好了,直接在该文件夹目录下命令行输入:ninja就可以执行编译了)。扩展的最终目的是生成动态链接库.so文件

二:cuda版本选择问题

pytorch选择cuda版本的顺序分为:

1:编译时的查找顺序;

     ①:搜索环境变量CUDA_HOME 或 CUDA_PATH(但一般情况下,这两个环境变量是不存在的)(用户及环境变量设置~/.bashrc,系统级环境变量设置/etc/profile;修改以后都需要使用source进行更行,否则修改的内容不会起作用)

     ②:/usr/local/cuda(这其实是一个软连接,也就是它并不是我们所需要的真正的cuda,而是一个指向我们目标cuda的链接,所以可以很方便的通过修改它来转变我们所需要的版本)

     ③:which nvcc的上级上级目录(which nvcc 会在环境变量PATH中找,PATH一般在~/.bashrc文件中设置,可能会有多个PATH都包含nvcc的情况,这时候选择第一个PATH中所包含的NVCC,可通过echo $PATH查看环境变量的设置情况。),一般情况下 which nvcc 的结果是/usr/bin/nvcc,这里的nvcc默认指向的是系统默认的cuda,一般版本比较低,可以修改它指向我们需要的版本

注意,nvcc -V和nvidia-smi出来的cuda版本不一致,一个对应驱动API,一个对应运行API,我们看nvcc -V

     ④:如果上述都不存在,则torch.utils.cpp_extension.CUDA_HOME为None,会使用conda安装的cudatoolkit,其路径为cudart 库文件目录的上级目录(此时可能是通过 conda 安装的 cudatoolkit,一般直接用 conda install cudatoolkit,就是在这里搜索到 cuda 库的)。
 

2:执行时的查找顺序(也就是搜索.so文件的顺序):见参考

3:pytorch编译时使用的cuda版本可以通过:torch.version.cuda来查看

     而运行时的cuda版本可以通过 torch.utils.cpp_extension.CUDA_HOME来查看。参考自cuda和cudatoolkit

三:cuda/cudatoolkit/nvcc

参考自:cuda和cudatoolkit

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。