提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、基础环境
- 二、编译流程
- 1.下载源码并配置TOOLCHAIN_FILE内容
- 2.预编译出protoc库和sleef库
- 3.anaconda建立虚拟环境
- 4.编译pytorch源码
- 总结
-
前言
记录一下交叉编译pytorch的历程。网上看了很多资料,按照网上提供的一些方法编译过程还是出现很多问题。自己用时大半个月完成编译,将自己的方法放出来,帮助更多的人。文章参考链接放到最后。
提示:以下是本篇文章正文内容,下面案例可供参考
一、基础环境
Ubuntu版本:20.04
Cmake版本:3.25.0
Anaconda版本:22.9.0
Python版本:3.8
交叉编译器:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu
二、编译流程
1.下载源码并配置TOOLCHAIN_FILE内容
1.git clone --recursive https://github.com/pytorch/pytorch
2.cd pytorch/
3.git submodule sync
4.git submodule update --init --recursive
5.gedit arm_linux_setup.cmake
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")
set(tools /usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu)
set(CMAKE_C_COMPILER ${tools}/bin/aarch64-linux-gnu-gcc-7.5.0)
set(CMAKE_CXX_COMPILER ${tools}/bin/aarch64-linux-gnu-g++)
2.预编译出protoc库和sleef库
1../scripts/build_host_protoc.sh
2.cd ./third_party/sleef
3.mkdir _host && cd _host
4.cmake .. -G"Unix Makefiles" -DCMAKE_INSTALL_PREFIX=_install -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF
3.anaconda建立虚拟环境
1.conda create -y --name pytorch-build python=3.8
2.conda activate pytorch-build
3.conda install -y astunparse numpy ninja pyyaml mkl mkl-includesetuptools cmake cffi typing_extensions future six requests dataclasses pkg-config libuv
4.编译pytorch源码
1.mkdir pytorch-build-arm64
2.cd pytorch-build-arm64
3.cmake -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_TOOLCHAIN_FILE=/pytorch/arm_linux_setup.cmake -DUSE_MKLDNN=OFF -DUSE_QNNPACK=OFF -DUSE_PYTORCH_QNNPACK=OFF -DBUILD_TEST=OFF -DUSE_NNPACK=OFF -DCAFFE2_CUSTOM_PROTOC_EXECUTABLE=/pytorch/build_host_protoc/bin/protoc -DNATIVE_BUILD_DIR=/pytorch/third_party/sleef/_host/ -DCMAKE_BUILD_TYPE:STRING=Release -DPYTHON_EXECUTABLE:PATH=`which python3` -DCMAKE_INSTALL_PREFIX:PATH=../pytorch-install-arm64 ../pytorch
4.cmake --build . --target install
总结
参考链接
https://sanzo.top/Default/pytorch-build/
https://fatalfeel.blogspot.com/2013/12/libtorch-cross-compile-on-aarch64-linux.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)