目录
1.pytorch,torch和torchvision的区别
2.nvcc和nvidia-smi显示的CUDA版本不同?
3.cuda 与 cudatoolkit 的区别
4.Pytorch 确定所使用的 cuda 版本
5.Linux中PATH、 LIBRARY_PATH、 LD_LIBRARY_PATH的区别
1.pytorch,torch和torchvision的区别
安装 PyTorch 会安装两个模块, 一个是 torch, 一个 torchvision
- torch 是主模块, 用来搭建神经网络的
- torchvision 是辅模块, 有数据库, 还有一些已经训练好的神经网络等着你直接用, 比如 (VGG, AlexNet, ResNet).
pytorch采用python语言接口来实现编程,而torch是采用lua语言,Lua是一个什么样的语言,可以这样说,Lua相当于一个小型加强版的C,支持类和面向对象,运行效率极高,与C语言结合“特别默契”,也就是说在Lua中使用C语言非常容易也很舒服。
因此,torch是采用C语言作为底层,然后lua语言为接口的深度学习库。而Pytorch呢,Pytorch其实也是主要采用C语言为接口(相关文章),另外除了C语言那还有C++了,因为Pytorch吸收结合了caffe2,进行了很多代码合并,现在Pytorch的底层虽然大部分还是C语言,但是接口什么的也逐渐向C++过渡。
目前来看,两者的底层库的C语言部分区别还是不大,尽管Pytorch使用了C++接口,但是由于代码的兼容性,使用torch拓展的底层代码在Pytorch中照样可以编译使用。
2.nvcc和nvidia-smi显示的CUDA版本不同?
CUDA有两个主要的API:runtime(运行时) API和driver API。这两个API都有对应的CUDA版本(如9.2和10.0等)。
用于支持driver API的必要文件(如libcuda.so)是由GPU driver installer安装的。nvidia-smi就属于这一类API。
用于支持runtime API的必要文件(如libcudart.so以及nvcc)是由CUDA Toolkit installer安装的。(CUDA Toolkit Installer有时可能会集成了GPU driver Installer)。nvcc是与CUDA Toolkit一起安装的CUDA compiler-driver tool,它只知道它自身构建时的CUDA runtime版本。它不知道安装了什么版本的GPU driver,甚至不知道是否安装了GPU driver。
综上,如果driver API和runtime API的CUDA版本不一致可能是因为你使用的是单独的GPU driver installer,而不是CUDA Toolkit installer里的GPU driver installer。
不能混合使用这两个API,因为二者是互斥的。也就是说在开发过程中,你只能选择其中一种API。简单理解二者的区别就是:runtime是更高级的封装,开发人员用起来更方便,而driver API更接近底层,速度可能会更快。
3.cuda 与 cudatoolkit 的区别
cudatoolkit是Nvidia 官网提供的 CUDA Toolkit 可以安装开发 CUDA 程序所需的工具,包括 CUDA 程序的编译器、IDE、调试器等,CUDA 程序所对应的各式库文件以及它们的头文件
pytorch提供的cudatoolkit主要包含应用程序在使用 CUDA 相关的功能时所依赖的动态链接库。在安装了 cudatoolkit 后,只要系统上存在与当前的 cudatoolkit 所兼容的 Nvidia 驱动,则已经编译好的 CUDA 相关的程序就可以直接运行,而不需要安装完整的 Nvidia 官方提供的 CUDA Toolkit .
通过 Anaconda 安装的应用程序包位于安装目录下的 /pkg 文件夹中,如笔者的目录即为 /home/xxx/anaconda3/pkgs/ ,用户可以在其中查看 conda 安装的 cudatoolkit 的内容,如下图所示。可以看到 conda 安装的 cudatoolkit 中主要包含的是支持已经编译好的 CUDA 程序运行的相关的动态链接库。( Ubuntu 环境下 )
4.Pytorch 确定所使用的 cuda 版本
编译pytorch使用的版本
import torch
torch.version.cuda
运行时使用的版本
import torch
import torch.utils
import torch.utils.cpp_extension
torch.utils.cpp_extension.CUDA_HOME #输出 Pytorch 运行时使用的 cuda
修改cuda版本,使得pytorch运行在不同的cuda上
5.Linux中PATH、 LIBRARY_PATH、 LD_LIBRARY_PATH的区别
- LIBRARY_PATH是程序编译期间查找动态链接库时指定查找共享库的路径
- LD_LIBRARY_PATH是程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径
- 前两者的共同点是库,库是这两个路径和PATH路径的区别,PATH是可执行文件。
参考
https://www.cnblogs.com/yhjoker/p/10972795.html Pytorch使用不同版本的 cuda
https://cloud.tencent.com/developer/article/1142510 torch, pytorch和torchvision的区别
https://zhuanlan.zhihu.com/p/91334380 nvcc和nvidia-smi显示的CUDA版本不同以及Linux中PATH、 LIBRARY_PATH、 LD_LIBRARY_PATH的区别?