目录
快速上手步骤
系统要求
包管理 | 操作系统 | 版本 | 内核 | 参考下载地址 |
---|---|---|---|---|
rpm | CentOS | 7.6 | 3.10.0-957.el7.x86_64 | 链接:https://pan.baidu.com/s/1cpb3O_5xmvLcAGtekFhxIg 提取码:q2zq |
8.5 | 4.18.0-348.el8.x86_64 | |||
NFS | 3.2 | 3.10.0-957.nfs.5.x86_64 | 链接:https://pan.baidu.com/s/1YyOMbKlr1BiiGVkRNvbPQw 提取码:8h03 | |
4.0 | 4.19.113-11.nfs4.x86_64 | |||
4.0-Desktop | 5.4.0-49-generic | |||
Anolis | 8.4 | 4.19.91-23.4.an8.x86_64 | 链接:https://mirrors.openanolis.cn/anolis/ | |
8.6 | 4.19.91-26.an8.x86_64 | |||
Kylin | v10 SP2 | 4.19.90-24.4.v2101.ky10.x86_64 | 链接:http://distro-images.kylinos.cn:8802/web_pungi/download/share/wA7vpuh4S5ZrxLWRXVBgGO0d9TfJqijD | |
UOS | 1021e | 4.19.90-2109.1.0.0108.up2.uel20.x86_64 | 链接:https://www.chinauos.com/resource/download-server | |
openEuler | 22.03 | 5.10.0-60.18.0.50.oe2203.x86_64 | 链接:https://openeuler.org/zh/download/ | |
deb | Ubuntu | 20.04.1 | 5.4.0-42-generic | 链接:https://pan.baidu.com/s/1CS8nAsOM8zvKIU3eB4WqAg 提取码:ksk3 |
22.04 | 5.15.0-43-generic |
注:建议使用Centos7.6或者Ubuntu20.04,内核查看命令:uname -r
您仅需以下几步便可以开始体验DCU加速卡:
第一步:硬件安装
1.将DCU加速卡插入主板的PCIe插槽,并连接好电源线,如图所示:
2.通过lspci | grep -i Display
命令查看是否检测到DCU加速卡,如图所示一张DCU加速卡被识别:(问题排查1)
第二步:驱动安装
➡rpm系列系统(CentOS,NFS,Anolis,Kylin,UOS,openEuler)
-
安装驱动依赖包
yum install -y \ cmake \ automake \ gcc \ gcc-c++ \ rpm-build \ autoconf \ kernel-devel-`uname -r` \ kernel-headers-`uname -r`
-
获取驱动
注:可前往开发者社区→资源工具→驱动,获取latest驱动下载地址。
-
安装驱动
注:卸载驱动请执行命令
rpm -e rock
。chmod 755 rock*.run \ && ./rock*.run \ && reboot
-
验证(问题排查2、3)
通过
lsmod | grep dcu
命令验证驱动是否安装成功,如图所示:
➡deb系列系统(Ubuntu)
-
安装驱动依赖包
apt update \ && apt install -y \ cmake \ automake \ rpm \ gcc \ g++ \ autoconf \ linux-headers-`uname -r`
-
获取驱动
注:可前往开发者社区→资源工具→驱动,获取latest驱动下载地址
-
安装驱动
注:卸载驱动请执行命令`apt-get remove rock`。*
chmod 755 rock*.run \ && ./rock*.run \ && reboot
-
验证(问题排查2、3)
通过
lsmod | grep dcu
命令验证驱动是否安装成功,如图所示:
第三步:环境部署
注:非root用户请务必加入39组,才能正确调用DCU加速卡,通过命令usermod -a -G 39 $USER
完成设置。
容器化部署方式(推荐)
➡rpm系列系统(CentOS,NFS,Anolis,Kylin,UOS,openEuler)
-
安装docker
注:Docker 要求内核版本不低于 3.10,建议安装docker-19.03以上版本;若安装失败,建议使用docker国内源。
yum install -y docker-ce docker-ce-cli containerd.io \ && systemctl daemon-reload \ && systemctl restart docker
-
获取镜像
注:镜像获取可以前往镜像仓库—光源,挑选所需DCU镜像,复制相应带有latest标签的命令,并在命令行执行,例如拉取pytorch镜像。
2.
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10-py38-latest
3.启动容器环境
注:该启动参数可根据实际情况进行删减,参数如下:
-i 打开容器标准输入
-t 分配一个伪终端
-v 挂载数据卷
--network 连接网络(none|host|自定义网络...)
--name 为容器添加名字
--ipc 设置IPC模式(none|shareable|host...)
--shm-size 设置/dev/shm大小
--group-add 设置用户附加组(DCU需要添加39组)
--device 指定访问设备(DCU需要添加/dev/kfd以及/dev/dri)
--cap-add 添加权限(SYS_PTRACE|NET_ADMIN...)
--security-opt 安全配置(seccomp=unconfined|label=disable...)
--privileged 特权模式
...
docker run \
-it \
--name=test \
--device=/dev/kfd \
--device=/dev/dri \
--security-opt seccomp=unconfined \
--cap-add=SYS_PTRACE \
--ipc=host \
--network host \
--shm-size=16G \
--group-add 39 \
-v /opt/hyhal:/opt/hyhal \
image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10-py38-latest
➡deb系列系统(Ubuntu)
-
安装docker
注:推荐使用ubuntu的LTS版,建议安装docker-19.03以上版本;若安装失败,建议使用docker国内源。或者下载脚本
curl -fsSL get.docker.com -o get-docker.sh
,简化安装流程。apt-get install -y docker-ce docker-ce-cli containerd.io \ && systemctl daemon-reload \ && systemctl restart docker
-
获取镜像(同rpm系列系统,选择带有ubuntu名称的镜像即可)
-
启动容器环境(同rpm系列系统)
物理机部署方式
➡rpm系列系统(CentOS,NFS,Anolis,Kylin,UOS,openEuler)
-
安装DTK(DCU Toolkit,DCU软件平台)依赖包(问题排查4)
yum install -y \ epel-release \ centos-release-scl \ && yum clean all \ && yum makecache \ && yum groupinstall -y "Development tools" \ && yum install -y \ vim \ curl \ bzip2 \ bzip2-devel \ sudo \ gcc \ uuid-devel \ gdbm-devel \ readline-devel \ tk-devel \ openssl \ openssl-devel \ openssl-static \ rpm-build \ patch \ ninja-build \ glog-devel \ lmdb-devel \ opencv-devel \ openblas-devel \ libibverbs-devel \ gflags-devel \ gstreamer1 \ gstreamer1-devel \ gstreamer1-plugins-base \ gstreamer1-plugins-base-devel \ gstreamer1-plugins-bad-free \ gstreamer1-plugins-bad-free-devel \ gstreamer1-plugins-good \ gstreamer1-plugins-ugly-free \ gstreamer1-plugins-ugly-free-devel \ gst123 \ libibverbs-devel \ libibverbs-utils \ libffi-devel \ zlib-devel \ openssl-devel \ ncurses-devel \ sqlite-devel \ devtoolset-7-gcc* \ numactl \ numactl-devel \ wget \ openssh \ openssh-server
-
python安装
cd /tmp \ && wget -O python.tgz https://registry.npmmirror.com/-/binary/python/3.8.12/Python-3.8.12.tgz \ && mkdir python-tmp \ && tar -xvf python.tgz -C ./python-tmp --strip-components 1 \ && cd python-tmp \ && ./configure \ --enable-shared \ && make -j$(nproc) \ && make install \ && rm -rf /tmp/python* \ && ln -s /usr/local/bin/python3 /usr/local/bin/python \ && ln -sf /usr/local/bin/pip3 /usr/local/bin/pip
-
pip更新
pip install --no-cache-dir --upgrade pip
-
cmake安装
cd /tmp \ && wget -O cmake.tar.gz https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz \ && mkdir /opt/cmake \ && tar -xvf cmake.tar.gz -C /opt/cmake --strip-components 1 \ && rm -rf /tmp/cmake*
-
hwloc安装
cd /tmp \ && wget -O hwloc.tar.gz https://download.open-mpi.org/release/hwloc/v2.7/hwloc-2.7.1.tar.gz \ && mkdir hwloc-tmp \ && tar -xvf hwloc.tar.gz -C ./hwloc-tmp --strip-components 1 \ && cd hwloc-tmp \ && ./configure --prefix=/opt/hwloc \ && make -j$(nproc) \ && make install \ && rm -rf /tmp/hwloc*
-
mpi安装
cd /tmp \ && wget -O openmpi.tar.gz https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.1.tar.gz \ && mkdir openmpi-tmp \ && tar -xvf openmpi.tar.gz -C ./openmpi-tmp --strip-components 1 \ && cd openmpi-tmp \ && ./configure \ --prefix=/opt/mpi/ \ --with-hwloc=/opt/hwloc/ \ --enable-orterun-prefix-by-default \ --enable-mpi-thread-multiple \ --enable-dlopen \ && make -j$(nproc) \ && make install \ && rm -rf /tmp/openmpi*
-
获取DTK
注:可前往开发者社区→资源工具→DCU Toolkit,获取latest DTK下载地址。
-
安装DTK
tar -xvf DTK-*.tar.gz -C /opt/ \ && ln -s /opt/dtk-* /opt/dtk
-
设置环境变量
cat > /etc/profile.d/dtk.sh <<-"EOF" #!/bin/bash #gcc source /opt/rh/devtoolset-7/enable #python3 export LD_LIBRARY_PATH=/usr/local/lib/:/usr/local/lib64/:$LD_LIBRARY_PATH export PATH=/usr/local/bin:$PATH export PYTHONPATH=/usr/local/:$PYTHONPATH #cmake export PATH=/opt/cmake/bin/:$PATH #hwloc export PATH=/opt/hwloc/bin/:${PATH} \ export LD_LIBRARY_PATH=/opt/hwloc/lib:${LD_LIBRARY_PATH} #mpi export LD_LIBRARY_PATH=/opt/mpi/lib:$LD_LIBRARY_PATH export PATH=/opt/mpi/bin:$PATH #DTK source /opt/dtk/env.sh EOF source /etc/profile.d/dtk.sh
-
验证DCU环境(问题排查5、6)
通过
rocm-smi
以及rocminfo | grep gfx
命令验证DCU环境安装完毕,如图所示:
➡deb系列系统(Ubuntu)
-
安装DTK(DCU Toolkit,DCU软件平台)依赖包(问题排查4)
apt-get update -y \ && apt-get install --no-install-recommends -y \ build-essential \ git \ wget \ gfortran \ elfutils \ libelf-dev \ libdrm-dev \ kmod \ libtinfo5 \ sqlite3 \ libsqlite3-dev \ libnuma-dev \ libgl1-mesa-dev \ alien \ rsync \ libpci-dev \ pciutils \ libpciaccess-dev \ libbabeltrace-dev \ pkg-config \ libfile-which-perl \ libfile-basedir-perl \ libfile-copy-recursive-perl \ libfile-listing-perl \ libprotobuf-dev \ libio-digest-perl \ libdigest-md5-file-perl \ libdata-dumper-simple-perl \ vim \ curl \ libcurlpp-dev \ openssh-server \ sudo \ locales \ openssl \ libssl-dev \ patch \ ninja-build \ libgoogle-glog-dev \ liblmdb-dev \ libopenblas-dev \ libgflags-dev \ libibverbs-dev \ ibverbs-utils \ libffi-dev \ zlib1g \ zlib1g-dev \ libbz2-dev \ libncurses-dev \ libsqlite3-dev \ read-edid \ numactl \ libjpeg62 \ liblzma-dev \ libgdbm-dev \ libgdbm-compat-dev \ libnss3-dev \ libreadline-dev \ libncurses5-dev \ libncursesw5-dev \ xz-utils \ tk-dev \ && apt-get clean \ && rm -rf /var/lib/apt/lists/*
-
python安装
cd /tmp \ && wget -O python.tgz https://registry.npmmirror.com/-/binary/python/3.8.12/Python-3.8.12.tgz \ && mkdir python-tmp \ && tar -xvf python.tgz -C ./python-tmp --strip-components 1 \ && cd python-tmp \ && ./configure \ --enable-shared \ && make -j$(nproc) \ && make install \ && rm -rf /tmp/python* \ && ln -s /usr/local/bin/python3 /usr/local/bin/python \ && ln -sf /usr/local/bin/pip3 /usr/local/bin/pip \ && apt-get update -y \ && apt-get install --no-install-recommends -y \ libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev \ libgstreamer-plugins-bad1.0-dev \ gstreamer1.0-plugins-base \ gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad \ gstreamer1.0-plugins-ugly \ gstreamer1.0-libav \ gstreamer1.0-tools \ gstreamer1.0-x \ gstreamer1.0-alsa \ gstreamer1.0-gl \ gstreamer1.0-gtk3 \ gstreamer1.0-qt5 \ gstreamer1.0-pulseaudio \ gst123 \ libopencv-dev \ python3-opencv \ && apt-get clean \ && rm -rf /var/lib/apt/lists/*
-
pip更新
pip install --no-cache-dir --upgrade pip
-
cmake安装
cd /tmp \ && wget -O cmake.tar.gz https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz \ && mkdir /opt/cmake \ && tar -xvf cmake.tar.gz -C /opt/cmake --strip-components 1 \ && rm -rf /tmp/cmake*
-
hwloc安装
cd /tmp \ && wget -O hwloc.tar.gz https://download.open-mpi.org/release/hwloc/v2.7/hwloc-2.7.1.tar.gz \ && mkdir hwloc-tmp \ && tar -xvf hwloc.tar.gz -C ./hwloc-tmp --strip-components 1 \ && cd hwloc-tmp \ && ./configure --prefix=/opt/hwloc \ && make -j$(nproc) \ && make install \ && rm -rf /tmp/hwloc*
-
mpi安装
cd /tmp \ && wget -O openmpi.tar.gz https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.1.tar.gz \ && mkdir openmpi-tmp \ && tar -xvf openmpi.tar.gz -C ./openmpi-tmp --strip-components 1 \ && cd openmpi-tmp \ && ./configure \ --prefix=/opt/mpi/ \ --with-hwloc=/opt/hwloc/ \ --enable-orterun-prefix-by-default \ --enable-mpi-thread-multiple \ --enable-dlopen \ && make -j$(nproc) \ && make install \ && rm -rf /tmp/openmpi*
-
获取DTK
注:可前往开发者社区→资源工具→DCU Toolkit,获取latest DTK下载地址。
-
安装DTK
tar -xvf DTK-*.tar.gz -C /opt/ \ && ln -s /opt/dtk-* /opt/dtk
-
设置环境变量
cat > /etc/profile.d/dtk.sh <<-"EOF" #!/bin/bash #python3 export LD_LIBRARY_PATH=/usr/local/lib/:/usr/local/lib64/:$LD_LIBRARY_PATH export PATH=/usr/local/bin:$PATH export PYTHONPATH=/usr/local/:$PYTHONPATH #cmake export PATH=/opt/cmake/bin/:$PATH #hwloc export PATH=/opt/hwloc/bin/:${PATH} \ export LD_LIBRARY_PATH=/opt/hwloc/lib:${LD_LIBRARY_PATH} #mpi export LD_LIBRARY_PATH=/opt/mpi/lib:$LD_LIBRARY_PATH export PATH=/opt/mpi/bin:$PATH #DTK source /opt/dtk/env.sh EOF source /etc/profile.d/dtk.sh
-
验证DCU环境(问题排查5、6)
通过
rocm-smi
以及rocminfo | grep gfx
命令验证DCU环境安装完毕,如图所示:
第四步:实例测试
注:HIP_VISIBLE_DEVICES
—设置DCU加速卡可见性,类似CUDA_VISIBLE_DEVICES。例如:export HIP_VISIBLE_DEVICES=0
表示设置第一块DCU可见。
训练测试
-
训练环境搭建
注:若在光源拉取相应框架镜像后则无需搭建环境,进入后即得到完整训练环境,可直接跳转至环境验证(推荐)。本次环境搭建以Pytorch框架为例,各类框架(pytorch,tensorflow,paddlepaddle,oneflow...)请前往开发者社区→资源工具→AI 生态包下获取最新whl包并安装。
-
下载Pytorch以及TorchVision框架包
注:各种框架的whl包应与上述安装过程中DTK版本对应,例如已安装dtk-22.10,则需要到AI 生态包→pytorch→dtk-22.10以及AI 生态包→vision→dtk-22.10文件夹中下载whl包并安装。
-
安装Pytorch以及TorchVision(问题排查7)
pip3 install torch-*.whl \ && pip3 install torchvision-*.whl \ && pip3 install numpy
-
-
环境验证(问题排查8)
python3 -c "import torch;print('pytorch version:',torch.__version__);print('DCU is',torch.cuda.is_available())"
-
训练代码获取
注:可前往ModelZoo获取实例代码,本次以flavr_pytorch为例;同时,DCU也兼容GPU开源深度学习代码。
-
克隆训练代码
git clone http://developer.hpccube.com/codes/modelzoo/flavr_pytorch.git
-
代码依赖安装
cd flavr_pytorch \ && pip install -r requirements.txt
-
启动测试
python main.py --batch_size 32 --test_batch_size 32 --dataset vimeo90K_septuplet --loss 1*L1 --max_epoch 200 --lr 0.0002 --data_root datasets --n_outputs 1 --num_gpu 1
推理测试
-
推理环境搭建
注:若在光源拉取相应框架镜像后则无需搭建环境,进入后即得到完整推理环境,可直接跳转至环境验证(推荐)。本次环境搭建以MIGraphX框架为例。
-
安装half
wget https://github.com/ROCmSoftwarePlatform/half/archive/1.12.0.tar.gz \ && tar -xvf 1.12.0.tar.gz \ && cp half-1.12.0/include/half.hpp /opt/dtk/include/
-
安装sqlite
cd /tmp \ && wget --no-cookie --no-check-certificate -O sqlite.tar.gz https://www.sqlite.org/2023/sqlite-autoconf-3410000.tar.gz \ && mkdir sqlite-tmp \ && tar -xvf sqlite.tar.gz -C ./sqlite-tmp --strip-components 1 \ && cd sqlite-tmp \ && ./configure \ && make -j$(nproc) \ && make install \ && cd \ && rm -rf /tmp/sqlite*
-
下载MIGraphX
注:MIGraphX框架安装包应与安装过程中系统版本以及DTK版本对应,例如centos7.6系统中安装dtk-23.10.1,则需要到AI 生态包→migraphx→dtk-23.10.1→CentOS7.6文件夹下载rpm安装包并安装。
-
安装MIGraphX
rpm -ivh migraphx-*.rpm --nodeps --force \ && rpm -ivh migraphx-devel-*.rpm --nodeps --force
-
设置环境变量
cat > /etc/profile.d/migraphx.sh <<-"EOF" #!/bin/bash export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH export PYTHONPATH=/opt/dtk/lib:$PYTHONPATH EOF source /etc/profile.d/migraphx.sh
-
-
环境验证
/opt/dtk/bin/migraphx-driver onnx -l
-
推理代码获取
注:可前往ModelZoo获取实例代码,本次以yolov7_migraphx为例。
-
克隆推理代码
git clone http://developer.hpccube.com/codes/modelzoo/yolov7_migraphx.git
-
代码依赖安装
cd yolov7_migraphx/Python/ \ && pip install -r requirements.txt
-
启动测试
python YoloV7_infer_migraphx.py
问题排查
1.问:lspci | grep -i Display
无显示
答:清理DCU加速卡金手指,确保各插槽插紧无松动。
2.问:lsmod | grep hydcu
无显示
答:请先执行驱动安装步骤;若仍无显示,通过命令
modprobe hydcu
手动加载驱动并重启机器;若驱动仍未加载,请查看/etc/modprobe.d/hydcu.conf是否存在,不存在可通过命令echo “options hydcu hygon_vbios=0” > /etc/modprobe.d/hydcu.conf
手动创建。
3.问: 驱动加载失败,如下图:
答:请检查系统启动项中是否包含nomodeset选项,若存在,请删除。通常在系统启动时,按 e进入内核启动修改页面,找到以 linux16 /vmlinuz 开始的行,删除 nomodeset 字段,然后按Ctrl+x启动,如图所示:
![]()
在系统启动之后,根据不同版本的系统要求修改 grub 文件,确保该启动项永久生效。
4.问: 某些依赖包无法安装
答:建议换国内源。其中lmdb-devel、glog-devel、opencv-devel、openblas-devel、gflags-devel、gstreamer等,或liblmdb-dev、libopenblas-dev、 libgflags-dev、libopencv-dev、gstreamer等无法安装,无需担心,该依赖包已导入框架内;其中若devtoolset-7安装失败,可以进入DCU Toolkit下载后离线安装:
![]()
mkdir /opt/rh \
&& tar xvf devtoolset-7.3.1.tar.gz -C /opt/rh
5.问: rocm-smi
显示正常,rocminfo
出现如下图报错:
答:请通过命令
usermod -a -G 39 $USER
将用户加入39组。
6.问:rocm-smi
、rocminfo
命令都查找不到
答:请根据系统执行DTK安装中的设置环境变量步骤。
7.问:pip install 安装出现如图不支持提示
答:请通过命令
pip install --upgrade pip
将pip升级,若未解决,请查看下载的whl包py版本是否与环境中的python版本一致,以及检查环境中是否已正确安装DTK软件包。
8.问:使用期间出现如下导入hsa相关库报错
答:dtk23.10系列设计如此,请在启动容器时挂载hyhal:-v /opt/hyhal:/opt/hyhal,或在开发者社区下载hyhal,放入容器/opt/下,并解压。