windwos源码编译libtorch(win10+32bit+libtorch)

win10 编译32位libtorch

文章目录

  • win10 编译32位libtorch
  • 前言
  • 1. 安装Anaconda
  • 2. 安装Visual Studio 2017
  • 3. 获取pytorch源码
  • 4. 设置环境变量
    • 1. 打开anaconda prompt
    • 2. 添加环境变量
  • 3. 编译好后libtorch的位置
  • 4. 测试libtorch

前言

本人暂时没有试过GPU版的32位libtorch,所以以下编译出来的libtorch是基于cpu版的。同时由于目前pytorch官方并没有提供32位libtorch,如果项目需要32位libtorch必须使用源码进行编译。32位的libtorch在windows平台下因为不能使用mkl-dnn性能会有很大的降低,可以使用FBGEMM代替,但是我试了以后没有什么效果。要是有什么好的方式可以提升window平台下的速度可以告诉我,谢谢。

1. 安装Anaconda

anaconda下载地址
windwos源码编译libtorch(win10+32bit+libtorch)_第1张图片
根据操作系统版本选择64位或32位的安装程序安装anaconda
windwos源码编译libtorch(win10+32bit+libtorch)_第2张图片
安装时可以选择是否将anaconda添加到环境变量中,由于接下来我们要使用的是anaconda prompt来进行编译,所以这里可以根据需要随意选择。

2. 安装Visual Studio 2017

windows下源码编译pytorch需要用到vs,目前官方仅支持vs2017和vs2019,这里我使用vs2017来进行编译。
vs2017下载地址
windwos源码编译libtorch(win10+32bit+libtorch)_第3张图片
勾选使用c++的桌面开发
windwos源码编译libtorch(win10+32bit+libtorch)_第4张图片
选择单个组件,并勾选VC++2017版本15.4 v14.11工具集
之后点击安装,等待安装完成。安装完成后将vs添加到环境变量中。
参考: Windows10下配置VS2017环境变量
如果配置环境变量时有些文件夹没有可以忽略。

3. 获取pytorch源码

git clone -b可以选择分支来克隆,这里我使用的是1.4.0的版本。如果在编译的时候出现问题,可以尝试更换pytorch版本后重新编译。

git clone -b v1.4.0 --recursive https://github.com/pytorch/pytorch
cd pytorch
git submodule sync
git submodule update --init --recursive

4. 设置环境变量

1. 打开anaconda prompt

windwos源码编译libtorch(win10+32bit+libtorch)_第5张图片

2. 添加环境变量

# 如果设置为一,则编译出来的就是debug版本的libtorch
set DEBUG=1
# 将conda转换为32位环境
set CONDA_FORCE_32BIT=1
# 创建conda环境
conda create -n env_name python=3.7
# 进入conda环境
conda activate env_name
# 下载依赖包
conda install numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing
# 设置是否使用显卡,这里我设置为0,代表不使用显卡
set USE_CUDA=0
# 不适用ninja,使用ninja在编译时会发生问题,这里关闭ninja
set USE_NINJA=OFF
# (可选)是否编译test文件
set BUILD_TEST=False
# (可选)使用FBGEMM代替mkl-dnn编译
set USE_FBGEMM=ON
set CAFFE2=OFF
# 设置你生成的makefile的文件版本
set CMAKE_GENERATOR=Visual Studio 15 2017
# 设置使用的工具集
set CMAKE_GENERATOR_TOOLSET_VERSION=14.11
set DISTUTILS_USE_SDK=1
# 将编译环境转换为32位环境
for /f "usebackq tokens=*" %i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version [15^,16^) -products * -latest -property installationPath`) do call "%i\VC\Auxiliary\Build\vcvarsall.bat" x86 -vcvars_ver=%CMAKE_GENERATOR_TOOLSET_VERSION%
# 编译libtorch
cd tools
python build_libtorch.py

3. 编译好后libtorch的位置

你的pytorch位置下的torch文件夹下的bin、lib、include、share文件夹
windwos源码编译libtorch(win10+32bit+libtorch)_第6张图片
windwos源码编译libtorch(win10+32bit+libtorch)_第7张图片
这里我漏标了一个include文件夹

4. 测试libtorch

windwos源码编译libtorch(win10+32bit+libtorch)_第8张图片
右键项目属性
windwos源码编译libtorch(win10+32bit+libtorch)_第9张图片
修改包含目录和库目录
在这里插入图片描述
包含目录(包含目录一般包含函数声明的头文件)
在这里插入图片描述
库目录(一般包含静态库的位置)
windwos源码编译libtorch(win10+32bit+libtorch)_第10张图片
测试代码

#include

int main() {
	torch::Tensor tensor = torch::rand({1, 3, 224, 224});
	std::cout << tensor << std::endl;
	return 0;	
}

你可能感兴趣的:(python)