目錄
1.pytorch,torch和torchvision的區(qū)別
2.nvcc和nvidia-smi顯示的CUDA版本不同困曙?
3.cuda 與 cudatoolkit 的區(qū)別
4.Pytorch 確定所使用的 cuda 版本
5.Linux中PATH价认、 LIBRARY_PATH侵歇、 LD_LIBRARY_PATH的區(qū)別
1.pytorch,torch和torchvision的區(qū)別
安裝 PyTorch 會安裝兩個模塊, 一個是 torch, 一個 torchvision
- torch 是主模塊, 用來搭建神經(jīng)網(wǎng)絡的
- torchvision 是輔模塊, 有數(shù)據(jù)庫, 還有一些已經(jīng)訓練好的神經(jīng)網(wǎng)絡等著你直接用, 比如 (VGG, AlexNet, ResNet).
pytorch采用python語言接口來實現(xiàn)編程,而torch是采用lua語言晤硕,Lua是一個什么樣的語言悼潭,可以這樣說,Lua相當于一個小型加強版的C舞箍,支持類和面向對象舰褪,運行效率極高,與C語言結合“特別默契”疏橄,也就是說在Lua中使用C語言非常容易也很舒服占拍。
因此,torch是采用C語言作為底層捎迫,然后lua語言為接口的深度學習庫晃酒。而Pytorch呢,Pytorch其實也是主要采用C語言為接口(相關文章)窄绒,另外除了C語言那還有C++了掖疮,因為Pytorch吸收結合了caffe2,進行了很多代碼合并颗祝,現(xiàn)在Pytorch的底層雖然大部分還是C語言浊闪,但是接口什么的也逐漸向C++過渡。
目前來看螺戳,兩者的底層庫的C語言部分區(qū)別還是不大搁宾,盡管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泥畅,因為二者是互斥的。也就是說在開發(fā)過程中琅翻,你只能選擇其中一種API位仁。簡單理解二者的區(qū)別就是:runtime是更高級的封裝柑贞,開發(fā)人員用起來更方便,而driver API更接近底層障癌,速度可能會更快凌外。
3.cuda 與 cudatoolkit 的區(qū)別
cudatoolkit是Nvidia 官網(wǎng)提供的 CUDA Toolkit 可以安裝開發(fā) CUDA 程序所需的工具,包括 CUDA 程序的編譯器涛浙、IDE康辑、調試器等,CUDA 程序所對應的各式庫文件以及它們的頭文件
pytorch提供的cudatoolkit主要包含應用程序在使用 CUDA 相關的功能時所依賴的動態(tài)鏈接庫轿亮。在安裝了 cudatoolkit 后疮薇,只要系統(tǒng)上存在與當前的 cudatoolkit 所兼容的 Nvidia 驅動,則已經(jīng)編譯好的 CUDA 相關的程序就可以直接運行我注,而不需要安裝完整的 Nvidia 官方提供的 CUDA Toolkit .
通過 Anaconda 安裝的應用程序包位于安裝目錄下的 /pkg 文件夾中按咒,如筆者的目錄即為 /home/xxx/anaconda3/pkgs/ ,用戶可以在其中查看 conda 安裝的 cudatoolkit 的內容但骨,如下圖所示励七。可以看到 conda 安裝的 cudatoolkit 中主要包含的是支持已經(jīng)編譯好的 CUDA 程序運行的相關的動態(tài)鏈接庫掠抬。( Ubuntu 環(huán)境下 )
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的區(qū)別
- LIBRARY_PATH是程序編譯期間查找動態(tài)鏈接庫時指定查找共享庫的路徑
- LD_LIBRARY_PATH是程序加載運行期間查找動態(tài)鏈接庫時指定除了系統(tǒng)默認路徑之外的其他路徑
- 前兩者的共同點是庫闷哆,庫是這兩個路徑和PATH路徑的區(qū)別,PATH是可執(zhí)行文件抱怔。
參考
https://www.cnblogs.com/yhjoker/p/10972795.html Pytorch使用不同版本的 cuda
https://cloud.tencent.com/developer/article/1142510 torch, pytorch和torchvision的區(qū)別
https://zhuanlan.zhihu.com/p/91334380 nvcc和nvidia-smi顯示的CUDA版本不同以及Linux中PATH劣坊、 LIBRARY_PATH、 LD_LIBRARY_PATH的區(qū)別讼稚?