我是靠谱客的博主 粗犷大象,最近开发中收集的这篇文章主要介绍在windows上编译pytorch-1.3.1的那些坑,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

由于用的计算卡比较老,官方下载的pytorch gpu版本不支持显卡,在使用gpu部分时显示

no kernel image is available for execution on the device

就起了自己编译pytorch包的念头,中间遇到几个坑,记录一下

0,安装nvidia 驱动,cudatool,anaconda, vs2017就不说了,网上到处有

1,github下载中断问题

git clone --recursive https://github.com/pytorch/pytorch cd pytorch

github上clone  pytorch总是失败,在网上找到如下设置,保证足够缓存

git  config --global  http.postbuffer 1048576000
git  config --global  http.lowspeedlimit 0
git  config --global  http.lowspeedtime 999

git clone --recursive  https://github.com/pytorch/pytorch    #建议早上6点到8点下载,否则网不好会中断

cd pytorch

#这一步是从v1.3.1上创建自己的分支

git checkout -b mybuild  v1.3.1    

# 更新分支对应的模块,我一开始忘了这一步,于是各种错误:(

git submodule sync

git submodule update --init --recursive

 

 2,安装anaconda,并安装相应的包

conda install numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing

 

3,设置编译器等环境变量

一开始我是按照官网说明设置的,使用visual studio编译,需要设置

set USE_NINJA=0  才能编译

但发现如果用visual studio编译时,编译cu文件是单线程,奇慢无比而且会莫名奇妙的锁死不动,几个小时都编译不完,后来发现第二步中conda安装了ninja,尝试用Ninja编译,并行速度简直上了天。

我所用的编译设置如下

#set CMAKE_GENERATOR=Visual Studio 15 2017
#set USE_NINJA=0
set CMAKE_GENERATOR=Ninja                                         #大小写必须一致
set TORCH_PACKAGE_NAME=pytorch                              #安装时包的名字

set CMAKE_GENERATOR_TOOLSET_VERSION=14.16   #这个vs2017最新版本
set DISTUTILS_USE_SDK=1

for /f "usebackq tokens=*" %i in (`"%ProgramFiles(x86)%Microsoft Visual StudioInstallervswhere.exe" -version [15^,16^) -products * -latest -property installationPath`) do call "%iVCAuxiliaryBuildvcvarsall.bat" x64 -vcvars_ver=%CMAKE_GENERATOR_TOOLSET_VERSION%

set CUDAHOSTCXX=%VCToolsInstallDir%binHostx86x64cl.exe

set PYTORCH_BUILD_VERSION=1.3.1           #版本号
set PYTORCH_BUILD_NUMBER=001

python setup.py install  

4,磁盘空间

编译这玩意儿需要31G的磁盘空间,:(

 

5,编译成功安装完成后

cuda install cudatoolkit=10.1

conda install torchvision -c pytorch --no-deps    # --no-deps是为了防止自动下载安装官网pytorch

 

6,测试

import torch

x=torch.rand(5,3)

device = torch.device("cuda")

y=torch.ones_like(x,device=device)

x=x.to(device)

z=x+y

print(z)

:-) :-) :-) :-)

 

最后

以上就是粗犷大象为你收集整理的在windows上编译pytorch-1.3.1的那些坑的全部内容,希望文章能够帮你解决在windows上编译pytorch-1.3.1的那些坑所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部