创建虚拟环境:
conda create -n build-libtorch python=3.8
cd build-libtorch
安装相关依赖:
conda install astunparse numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses
下载 Pytorch,可通过 HTTPS
或 SSH
方式进行下载:
git clone https://github.com/pytorch/pytorch.git # HTTPS
git clone git@github.com:pytorch/pytorch.git # SSH
克隆下来的是最新版本,可根据需要切换不同版本:
cd pytorch
git tag # 查看标签
git checkout v1.4.0 # 根据标签切换版本
git submodule sync # 根据父仓库中的配置,将子模块的URL进行更新,以保证与父仓库中记录的URL一致。这样,当执行git submodule update命令时,Git就能正确地从指定的URL下载子模块的更新或特定版本的代码
git submodule update --init --recursive # 初始化和更新父仓库中的子模块,并递归地初始化和更新所有嵌套的子模块
如果不能通过 HTTPS 方式更新子模块,可以通过 sudo gedit .gitmodules
命令打开 .gitmodules
文件,该文件中记录了子模块的存储路径和下载地址。打开文件后修改子模块的 url
,例如将 url = https://github.com/pybind/pybind11.git
修改为 url = git@github.com:pybind/pybind11.git
。所有子模块的 url
都修改好后,依次执行 git submodule sync
和 git submodule update --init --recursive
。
也可一步到位进行下载:
git clone -b v1.4.0 https://github.com/pytorch/pytorch.git
git clone -b v1.4.0 git@github.com:pytorch/pytorch.git
可根据需要设置编译选项:
export USE_CUDA=False
export BUILD_TEST=False
export USE_NINJA=OFF
执行编译:
方式一:
# 在pytorch目录下
mkdir build_libtorch && cd build_libtorch
python ../tools/build_libtorch.py
方式二:
# 在pytorch的父目录下
mkdir pytorch-build && cd pytorch-build
cmake -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_BUILD_TYPE:STRING=Release -DPYTHON_EXECUTABLE:PATH=`which python3` -DCMAKE_INSTALL_PREFIX:PATH=../pytorch-install ../pytorch
cmake --build . --target install
新建 libtorch 目录,将 pytorch/torch/include 目录复制到 libtorch 目录下,将 build/lib 目录复制到 libtorch 目录下。文章来源:https://www.toymoban.com/news/detail-731657.html
可能遇到的问题:文章来源地址https://www.toymoban.com/news/detail-731657.html
- 在执行 cmake 命令时,运行到
Performing Test COMPILER_SUPPORTS_LONG_DOUBLE
这一步就停止不动了,长时间没有反应,这很可能是 GCC 版本导致的问题,可尝试更换 GCC 版本来解决,更换的版本可以比之前更高,也可以更低,可以多尝试 - 出现
Could not run a simple program built with your compiler. If you are trying to use -fsanitize=address, make sure libasan is properly installed on your system (you can confirm if the problem is this by attempting to build and run a small program.)
问题,可尝试在 pytorch 目录下的 CMakeLists.txt 中设置set(INTERN_BUILD_MOBILE ON)
来解决
到了这里,关于Pytorch源码编译Libtorch的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!