如果不需要C語言高度,用anaconda安裝,參考(https://github.com/pytorch/pytorch)過程如下,
官網的依賴都是使用conda,conda預設的安裝都是非調試版的。另外還有一些常用包也列一下,根據需要自己裝吧
另外說明一下,如果你隻是想安裝pytorch使用,而不需要調試或檢視任何源碼或版本,那麼下面這個安裝方法最省事,
更具體的請參考:
https://pytorch.org/get-started/locally
https://anaconda.org/pytorch/pytorch
參考原文:https://blog.csdn.net/tanmx219/article/details/82831964
Python不一定要調試版,但我個人喜好就是弄個調試版的。
另外我補充一點,通過設定DEBUG=1,調試pytorch時gdb既能進入pytorch的C源碼,也能進入python的源碼,python不需要自己編譯也是沒有問題的(最初我以為這是必須的,後來發現直接用anacon的python編譯pytorch一點問題都沒有)至于為什麼能進入python庫的C源碼,我也不知道,有時間得再細看一下pytorch編譯部分,找到解壓python源碼包的那段估計就是了,。
在後面的描述中都不使用anaconda,而是假設使用python372來調試pytorch。python372是我自己編譯安裝的python調試開發版。關于如何安裝調試版python, 以及如何讓該版本獨立另存,請參考前一個貼子:
https://blog.csdn.net/tanmx219/article/details/86518446
另外,調試最好和開發分開,不要和日常應用弄到一起,道理大家都明白的。
同樣,因為這裡不使用conda,而是我們前面編譯好的pip372,相關指令如下,
編譯調試pytorch,注意這裡需要sudo權限,否則會報錯無法安裝
如果你需要用gdb等工具調試,還需要打開DEBUG (-g)開關,詳細原因請參考後面“問題”部分說明,我一般使用的指令
這裡的USE_OPENCV等就需要根據自己的實際情況取舍了,CUDA也要根據自己的實際機器來,預設這些都是OFF。
編譯完後可能會出現一大堆問題,具體解決方案請參考後面的章節。一般在問題解決之後,需要重新再編譯一次才行。
-- Could NOT find CUB (missing: CUB_INCLUDE_DIR)
之類的報錯,我的主要包括下面這些設定,
此時可直接在環境變量中添加,如
注意執行完上述指令後要重新打開一個終端才會起作用。另外~/.bashrc隻影響目前使用者(sudo -H python372 setup.py build develop),如果要給所有使用者(sudo python372 setup.py build develop)添加,就要使用這個路徑:
完事後用
指令檢視一下環境變量是否已經起作用了。
參考: https://blog.csdn.net/tanmx219/article/details/86534758
還有一個變量可以在編譯前臨時設定一下,不要放到/etc/profile中去,以免對其他程式造成影響(如果是我的話,這裡會把變量名改成TORCH_DEBUG之類的,避免DEBUG這種過于通用的命名):
export DEBUG=1
export REL_WITH_DEB_INFO=1
我也是看了setup.py中的源碼才知道C語言debug版本的源碼調試需要這個開關,源碼内容是
可見,export DEBUG=1, ON, YES, TRUE, 或Y的效果是相同的,都會開啟DEBUG模式(編譯和連結時的‘-g’開關)。
在不調試的情況下是release版本,為了追求性能優化而抛棄了調試資訊。DEBUG版本為了追求更全面的調試資訊而放棄了速度; 如果使用者既需要調試代碼,需要速度快一點,那麼便可以開始考慮REL_WITH_DEB_INFO這個版本了。
參考:https://blog.csdn.net/tanmx219/article/details/86553485
如果隻是要安裝cudnn,python不用源碼C語言調試的話,那麼anaconda的指令仍然是首選,一條指令就搞定了,如下
conda install cudnn
該警告可以忽略,産生這個警告的原因是,pytorch/third_party/eigen/Eigen/src/Core/util/ConfigureVectorization.h:374行這裡直接使用了定義
#if defined(EIGEN_HAS_CUDA_FP16)
#include <host_defines.h>
#include <cuda_fp16.h>
#endif
是以這個是eigen沒有使用cuda_runtime_api.h 或 cuda_runtime.h 而直接引用了host_defines.h所引起的。
because ninja is not installed. Run this to enable it:
> pip install ninja
===>>>
pytorch使用了setuptools來編譯安裝torch,setup.py中真正執行編譯的部分是函數def build_libs(libs),它通過
subprocess.call調用../tools/build_pytorch_libs.sh (在windows下是build_pytorch_libs.bat)來編譯生成pytorch庫檔案。
如果不是搞C語言源碼調試的話,還是用anaconda吧,省掉的事情不是一點點。Linux裡面的各種依賴太麻煩了。anacoda中可以非常輕松地進行python包的調試,不過安裝時也要使用build develop。
如何使用gdb調試python,請參考Louie Lu的blog:A guide from parser to objects, observed using GDB
參考:http://lsi.ugr.es/jmantas/pdp/ayuda/datos/instalaciones/Install_OpenMPI_en.pdf
torch-cudnn參考:
https://www.cnblogs.com/darkknightzh/p/5668471.html (Ubuntu16 中安裝torch版的cudnn)
https://github.com/NVIDIA/torch-cudnn
https://blog.csdn.net/Hungryof/article/details/51557666 (ubuntu下100%成功安裝torch,同時配置cuda和cudnn)