zoukankan      html  css  js  c++  java
  • 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 Studio2017ProfessionalVCAuxiliaryBuild"
    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:libCUDAv10.0include"
    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

    总结

    最后,祝您身体健康,再见!

  • 相关阅读:
    web--ajax--json
    4.26
    4.25
    4.23
    4.22
    4.20
    4.19
    4.18
    4月问题总结章
    4.17
  • 原文地址:https://www.cnblogs.com/leoking01/p/13504205.html
Copyright © 2011-2022 走看看