aarch64架构CPU下Ubuntu系统环境源码编译pytorch-gpu-2.0.1版本
准备事项:
1. pytorch源码下载:
源码的官方地址:
https://github.com/pytorch/pytorch
但是这里我们不能简单的使用git clone命令下载,因为pytorch项目依赖着很多的其他项目的代码,而其他的项目往往又依赖着另外一些项目代码,因此这里我们需要使用下面命令进行下载源码操作:
git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
# if you are updating an existing checkout
git submodule sync
git submodule update --init --recursive
2. aarch64架构CPU下Ubuntu系统:
由于本人编译这个pytorch是为了提供给国内的一些国产超算平台进行使用,所以需要使用aarch64架构下的ubuntu系统进行编译,但是平常的工作使用的电脑又都是x86的,为此我这里使用docker系统运行aarch64架构下的ubuntu系统,这里需要使用的就是x86系统架构下运行aarch64架构的docker镜像的使用方法,具体参考:
如何在X86_64系统上运行arm架构的docker容器——(异构/不同架构)CPU下的容器启动
3. 为aarch64架构下的容器安装NVIDIA的cuda和cudnn,这里需要注意的是因为是给aarch架构使用,因此需要下载sbsa版本的cuda和cudnn,具体操作不赘述。


4. 编译器的安装:
apt install cmake
apt install gcc
apt install g++
5. anaconda3的安装 (不具体介绍)
===============================================
具体编译:
--------------------------------------
指定GCC路径:
export CC=/usr/bin/gcc
指定nvcc路径:
export CMAKE_CUDA_COMPILER=/usr/local/cuda-11.4/bin/nvcc
安装anaconda3中编译的依赖环境:
conda install cmake ninja
# Run this command from the PyTorch directory after cloning the source code using the “Get the PyTorch Source“ section below
pip install -r requirements.txt
(性能加速组件,可选择性安装)(对应的版本是否存在需要参考:https://anaconda.org/pytorch/repo)
conda install mkl mkl-include
# CUDA only: Add LAPACK support for the GPU if needed
conda install -c pytorch magma-cuda110 # or the magma-cuda* that matches your CUDA version from https://anaconda.org/pytorch/repo # (optional) If using torch.compile with inductor/triton, install the matching version of triton
# Run from the pytorch directory after cloning
make triton
编译:
export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
python setup.py develop
打包:
pip wheel .
===============================================
异常问题:
libstdc++.so.6: version `GLIBCXX_3.4.30’ not found
(在一个主机上编译后放在另一个主机上运行,由于编译时的C语言标准库高于安装时环境的C语言标准库版本,因此报错。最简单的操作就是将编译时的系统中的标准库copy过去到运行主机上,但是如果时间久远找不到但是编译的环境就需要再为运行环境单独安装标准库)
conda安装动态链接库:
conda install -c conda-forge libstdcxx-ng=13.1.0
由于网络等原因无法正常安装则可以选择离线安装:
conda的官方文件地址:
https://anaconda.org/conda-forge/libstdcxx-ng/files

下载后的文件:

这个.conda文件是个压缩包,需要安装的lib库就在里面,这时我们使用下面命令安装:
conda install --offline ./libstdcxx-ng-13.1.0-h452befe_0.conda
安装好新的标准库后需要将地址加入到系统路径下:
首先需要确定安装的位置,这里使用find命令去查找:
find ./anaconda3 -name libstdc++.so.6

如果是base环境下安装lib库一般路径在pkgs下面,但是在自创建的环境下新安装的lib库则是在新环境下,大致形式为:
export LD_LIBRARY_PATH=/path-to-your-conda/envs/your-env-name/lib:$LD_LIBRARY_PATH
在上面的例子中,base环境下的新lib库在pkgs文件夹下,因此操作为:
export LD_LIBRARY_PATH=/root/anaconda3/pkgs/libstdcxx-ng-13.1.0-h452befe_0/lib/libstdc++.so.6:$LD_LIBRARY_PATH
查看新的lib库是否支持:
strings /root/anaconda3/pkgs/libstdcxx-ng-13.1.0-h452befe_0/lib/libstdc++.so.6 | grep GLIBCXX_3.4.30

===============================================
参考:
如何在X86_64系统上运行arm架构的docker容器——(异构/不同架构)CPU下的容器启动
pytorch频道的可安装组件:
https://anaconda.org/pytorch/repo

aarch64架构CPU下Ubuntu系统环境源码编译pytorch-gpu-2.0.1版本的更多相关文章
- 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)
写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- [笔记] Ubuntu 18.04源码编译安装OpenCV 4.0流程
标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 1080 CUDA:10.0 c ...
- ubuntu上源码编译安装mysql5.7.27
一.查看操作系统环境和目录结构,并创建mysql用户和组,以及规划安装mysql所需要的目录. #cat /etc/issue 查看发行版本信息: #cat /proc/version 查看正在运行 ...
- Win下Jenkins-2.138源码编译及填坑笔记
源码编译篇 1. 安装JDK1.8-181,操作系统添加JDK环境变量.Java -version验证一下. 注:Jenkins2.138版本,JDK必须jkd1.8.0-101以上,不支持Java ...
- linux下c语言源码编译
一.源码编译过程 源码 ---> 预处理 ---> 编译 ---> 汇编 ---> 链接 --->执行 我们可以把它分为三部分来完成: ./configure ...
- zstack源码编译安装(1.7.x版本)
图片没粘贴过来,请看本人gitbook吧https://www.gitbook.com/book/jingtyu/how-to-learn-zstack-code 运行环境 zstack的安装方式有很 ...
- tensorflow 源码编译tensorflow 1.1.0到 tensorflow 2.0,ver:1.1.0rc1、1.4.0rc1、1.14.0-rc1、2.0.0b1
目录 tensorflow-build table 更多详细过程信息及下载: tensorflow-build tensorflow 源码编译,提升硬件加速,支持cpu加速指令,suport SSE4 ...
- 源码编译安装 PHP5.5.0,解决curl_exec访问HTTPS返回502错误的问题(修改PATH路径)
最近碰到一个奇怪的问题, PHP使用 curl_exec 访问 HTTPS 网页时, 返回502错误, 访问HTTP网页时没有问题, 用 echo phpinfo() ; 查看, 支持op ...
- windows10下如何进行源码编译安装tensorflow
1.获取python3.5.x https://www.python.org/ftp/python/3.5.4/python-3.5.4-amd64.exe 2.安装python3.5.x,默认安装即 ...
- [环境配置]Ubuntu 16.04 源码编译安装OpenCV-3.2.0+OpenCV_contrib-3.2.0及产生的问题
1.OpenCV-3.2.0+OpenCV_contrib-3.2.0编译安装过程 1)下载官方要求的依赖包 GCC 4.4.x or later CMake 2.6 or higher Git GT ...
随机推荐
- mongodb基于角色的访问控制
https://www.mongodb.com/docs/v4.4/tutorial/enable-authentication/ https://www.mongodb.com/docs/manua ...
- mongodb数据库连接格式
mongodb数据库连接格式 mongodb://账号:密码@mongodb服务器IP:27017/数据库名称
- uboot 添加 自定义命令
--- title: uboot-uboot 添加 自定义命令 date: 2020-05-13 16:51:38 categories: tags: - uboot - cmd - config - ...
- 严格根号带修 RMQ
其实很简单,把之前随机数据的解法中维护块内数据的数据结构换成约束 RMQ,这样子复杂度 严格 单点修改 \(O(\sqrt n)\),区间查询 \(O(1)\),线性空间. 唯一的问题是常数太大了,有 ...
- P3731 题解
简要题意是找到一条边连接使得最大团大小增加. 在补图上最大团等于最大独立集. 所以问题转化为删掉一条边使得最大独立集增加,又因为团不超过两个,所以原图是二分图,也就是使得最大匹配减少. 考虑什么样的匹 ...
- Java常用JDK类库和第三方类库
以下是收集的一些有用的第三方库,Java开发人员可以在其应用程序中使用它们来完成许多有用的任务.为了使用这些库,Java开发人员也应该熟悉这些类库. jdk自带的常用类库 java.lang包 jav ...
- SpringBoot能同时处理多少请求
SpringBoot默认的内嵌容器是Tomcat,也就是我们的程序实际上是运行在Tomcat里的.所以与其说SpringBoot可以处理多少请求,到不如说Tomcat可以处理多少请求. 关于Tomca ...
- Log4j日志输出级别详解
log4j定义了8个级别的log 日志记录器(Logger)的行为是分等级的: 1.分为OFF(关闭所有日志).FATAL(致命错误).ERROR(异常报错).WARN(潜在错误).INFO.DEBU ...
- yb课堂之登陆校验Json Web Token实战之封装通用方法 《九》
引入相关依赖并开发JWT工具类,开发生产token和校验token的方法 加入相关依赖 <dependency> <groupId>io.jsonwebtoken</gr ...
- CM3调试系统简析
CM3 调试系统简析 **"一直以来,单片机的调试一直不是很突出的主题,很多简单些的程序在开发中,甚至都没有调试的概念,而只是把生成的映像直接烧入片子,再根据错误症状来判断问题,然后修改程序 ...