Windows 10 + Visual Studio 2017 + CUDA 10 環境下編譯 pytorch 1.0


原文: https://blog.csdn.net/h8832077/article/details/85646816

pytorch 1.0 一個月之前發布了。pytorch其實筆者很早就接觸過,那時候驚嘆於它的簡潔、動態及良好的社區支持。但是那時候,pytorch在c++上的支持並不好,工業界很難用,基本上只屬於一種比較好的算法驗證框架。

但是,pytorch 1.0 的發布終結了這一現況,現在,它有了良好的c++前向預測支持,再加上它本身不遜於tensorflow的運行速度,python式的開發邏輯(這點非常棒),支持onnx格式。。。除了沒有tensorflow那樣多的功能函數(這點也造成了tensorflow的冗長),實在是很難找到別的缺點。

為什么要自己編譯pytorch

pytorch的官方網站上,其實有編好的pytorch各種版本(windows/linux/Mac環境下,python/c++兩種語言,從這也看出pytorch對windows的用戶還是挺友好的),但是目前c++版本好像只支持release模式。如果你是一個初學者,可以選擇跳過本文直接去官網下;但如果你是一個研究者,需要變動源碼的contributor,或和我一樣,需要Debug版本和Cpu版本,或者特定CUDA版本的pytorch,你也可以選擇這條更為艱辛但收獲更多的路。


需要准備

1.python(最好是anaconda)
2.CUDA \ CUDNN(如果你需要GPU版本)
3.VS 2017最新版
4.GIT工具
5.cmake工具
6.intel MKL(如果沒有的話,pytorch默認選擇用eigen)

編譯步驟

  1. 找到一個路徑,執行
git clone -b v1.0.0 https://github.com/pytorch/pytorch.git 

 

這里你當然也可以選擇自己需要的版本。

  1. 在目錄中,執行
git submodule update --init --recursive

 

這一步是循環更新需要的第三方庫,它們在third_party中。

  1. 打開cmd,執行以下命令(你可以把它們保存在一個bat中,一起執行)
set "VS150COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build"
set CMAKE_GENERATOR=Visual Studio 15 2017
set DISTUTILS_USE_SDK=1
set USE_OPENCV=1
set USE_CUDA=1
set CUDNN_INCLUDE_DIR="D:\lib\CUDA\v10.0\include"
call "%VS150COMNTOOLS%\vcvarsall.bat" x64

 

這里要確認VS150COMNTOOLS和CUDNN_INCLUDE_DIR中的目錄是否存在,不在的話你需要根據自己的情況變更一下。沒有opencv的讀者不需要加
set USE_OPENCV=1。
如果你需要編譯debug模式,請加上

DEBUG=1

 

  1. 對於安裝MKL,並且想在pytorch中應用的讀者,你需要更改cmake/Modules/FindMKL.cmake 第72行

SET(INTEL_COMPILER_DIR “C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows”)

為你自己的mkl路徑(一般是/intel_mkl/compilers_and_libraries_2019.1.144/windows)

如果你沒有安裝NINJA或者提示任何有關錯誤,請關閉ninja編譯使用vs,具體加上下面這句

set USE_NINJA=OFF

 

  1. 對於安裝了CUDA的讀者,你需要更改tools/setup_helpers/cuda.py第10行

WINDOWS_HOME = glob.glob(C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v*.*)

將glob里的搜索地址改為你CUDA的安裝路徑
6.在cmd中,輸入

python setup.py build

 

即可進行編譯
輸入

python setup.py install

 

如果需要wheel文件,可以輸入

python setup.py bdist_wheel

 

會在編譯好之后,將編好的pytorch復制到你的默認python環境中,可以直接使用

中文系統,編譯信息中有亂碼

找到torch/utils/collect_env.py中第 43~44行

output = output.decode("ascii")
err = err.decode("ascii")

 

 

改為

output = output.decode("gb2312")
err = err.decode("gb2312")

 

 

參考

如果你在windows上編pytorch碰到一些問題,可以follow一個大神
https://github.com/peterjc123/pytorch-scripts

總結

最后,祝您身體健康,再見!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM