---
title: 编译和安装
description: "1. 使用PuTTY工具，以root用户登录服务器。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpcindapp/prtg-osc/kunpengpytorch_02_0006.html
sourcePath: /source/zh/kunpenghpcs/hpcindapp/prtg-osc/kunpengpytorch_02_0006.html
indexId: 4b90a57c9862497dcdf9a9f55ff65f6c80e5dd52ab37a4917e85b51b8372b10269
---
# 编译和安装

#### 操作步骤

1. 使用PuTTY工具，以root用户登录服务器。
2. 执行以下命令安装Docker toolkit。

```
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
yum-config-manager --add-repo https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo
dnf clean expire-cache --refresh
dnf install -y nvidia-docker2
systemctl restart docker
```


3. 执行以下命令获取基础镜像。

```
docker pull nvidia/cuda-arm64:11.1-devel-centos8
```


4. 执行以下命令运行Docker。

```
docker run -it nvidia/cuda-arm64:11.1-devel-centos8 /bin/bash
```


5. 执行以下命令修改“/etc/yum.repos.d/nvidia-ml.repo”文件。

  a. 打开“/etc/yum.repos.d/nvidia-ml.repo”文件。

```
vi /etc/yum.repos.d/nvidia-ml.repo
```


  b. 按“i”进入编辑模式，添加如下粗体内容。

```
[nvidia-ml]
name=nvidia-ml
baseurl=https://developer.download.nvidia.com/compute/machine-learning/repos/rhel8/sbsa
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA
sslverify=false
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
6. 执行以下命令修改“/etc/yum.repos.d/cuda.repo”文件。

  a. 打开“/etc/yum.repos.d/cuda.repo”文件。

```
vi /etc/yum.repos.d/cuda.repo
```


  b. 按“i”进入编辑模式，添加如下粗体内容。

```
[cuda]
name=cuda
baseurl=https://developer.download.nvidia.com/compute/cuda/repos/rhel8/sbsa
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA
sslverify=false
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
7. 执行以下命令刷新Yum源缓存。

```
yum makecache
```


8. 执行以下命令安装系统依赖。

```
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel python3 python3-devel gcc wget cmake3 libarchive git which
```


9. 执行以下命令下载并安装Cudnn8。

```
wget https://developer.download.nvidia.cn/compute/machine-learning/repos/rhel8/sbsa/libcudnn8-8.0.4.30-1.cuda11.1.aarch64.rpm --no-check-certificate
rpm -ivh libcudnn8-8.0.4.30-1.cuda11.1.aarch64.rpm
wget https://developer.download.nvidia.cn/compute/machine-learning/repos/rhel8/sbsa/libcudnn8-devel-8.0.4.30-1.cuda11.1.aarch64.rpm --no-check-certificate
rpm –ivh libcudnn8-devel-8.0.4.30-1.cuda11.1.aarch64.rpm
```


10. 执行以下命令部署Anaconda。
  执行./Anaconda3-2021.05-Linux-aarch64.sh时，需手动输入“Enter”和“yes”，默认部署在“/root/anaconda3”目录。

```
wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-aarch64.sh
chmod +x Anaconda3-2021.05-Linux-aarch64.sh
./Anaconda3-2021.05-Linux-aarch64.sh
export PATH=/root/anaconda3/bin/:$PATH
```


11. 执行以下命令安装PyTorch编译依赖。

```
conda install astunparse numpy ninja pyyaml setuptools cmake cffi typing_extensions future six requests dataclasses
```


  （可选）conda代理配置方法如下：

```
cat > /root/.condarcexport PATH=/root/anaconda3/bin:$PATH
channels:
- conda-forge
- defaults
proxy_servers:
http: xxxxxx
https: xxxxxx
ssl_verify: false
```


12. 执行以下命令配置环境变量。

```
export PATH=/root/anaconda3/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64
```


13. 执行以下命令下载并编译PyTorch源码。

```
export GIT_SSL_NO_VERIFY=1
git clone --recursive https://github.com/pytorch/pytorch  --depth=1
cd pytorch
git submodule sync
git submodule update --init --recursive --jobs 0
export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
python setup.py install
```


14. 执行以下命令新建另一个终端Shell导出容器。

```
docker ps
```

PyTorch源码等大文件移到容器外后删除再导出镜像。

  a. 备份源码。

```
docker cp 4ad81495b7ef:/pytorch .
```


  b. 删除容器内PyTorch源码。

```
rm -rf pytorch/
rm -rf Anaconda3-2021.05-Linux-aarch64.sh
rm -f libcudnn8-8.0.4.30-1.cuda11.1.aarch64.rp
rm -f libcudnn8-devel-8.0.4.30-1.cuda11.1.aarch64.rpm
```


  c. 导出镜像。

```
docker export -o pytorch_cuda.tar 4ad81495b7ef
```
