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 ...
随机推荐
- 记一次 .NET某游戏币自助机后端 内存暴涨分析
一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序内存会偶发性暴涨,自己分析了下是非托管内存问题,让我帮忙看下怎么回事?哈哈,看到这个dump我还是非常有兴趣的,居然还有这种游戏币自助机类型的 ...
- Thread.sleep 延时查询或延时查询前更新es缓存数据
Thread.sleep 延时查询或延时查询前更新es缓存数据 MQ消息的顺序性,或发送MQ的发送端未严格事务处理,可能存在数据未落库的情况,而导致接收端处理MQ消息的时候,查询为空. //demo1 ...
- 支付宝 返回的form如何在前端打开
支付宝支付时返回了一段标签标签大概是 <form></form><script></script> 试了innerHtml怎么试都不能用,是那种直接把字 ...
- Golang基于Mysql分布式锁实现集群主备
背景 集群中如果需要主备,可以基于Redis.zk的分布式锁等实现,本文将介绍如何利用Mysql分布式锁进行实现. 原理 数据库中包含数据字段(此处为Master的主机名).版本号和上一次更新时间. ...
- .NET 文件上传服务设计
.NET文件上传服务设计 前言 在b站学习了一个后端小项目,然后发现这个文件上传设计还挺不错,来实现讲解一下. 项目结构如下: 基于策略+工厂模式实现文件上传服务 枚举 在Model层创建即可 pub ...
- Java中final用法与详解
final作为Java中经常用到的关键字,了解final的使用方法是非常有必要的. 这里从final关键字在数据域.方法和类中三个方面分析final关键字的主要用法. final应用于基本数据类型 1 ...
- Java 集合框架迭代器(Iterator)
什么是迭代器 使用循环遍历集合 普通for循环 for(int i=0;i<10;i++){} 增强for循环 for(String str:list){} 什么是迭代器Iterator Ite ...
- Spring里面bean的生命周期里面的init和destroy方法
package net.cybclass.sp; import net.cybclass.sp.domain.Video; import net.cybclass.sp.domain.Video2; ...
- 详解Web应用安全系列(10)文件上传漏洞
文件上传漏洞(File Upload Vulnerabilities)是Web攻击中常见的一种安全漏洞,它允许攻击者上传并执行恶意文件,从而可能对Web服务器造成严重的安全威胁. 一.定义与原理 文件 ...
- Java实现快速快速排序算法
算法简介 快速排序(Quick Sort) 是由冒泡排序改进而得的.在冒泡排序过程中,只对相邻的两个记录进行比较,因此每次交换两个相邻记录时只能消除一个逆序.如果能通过两个(不相邻)记录的一次交换直接 ...