服务器上使用docker搭建gem5-gcn3环境
使用docker配置gem5-gcn3环境
3步:拉取镜像,编译gcn,测试square
1、拉取镜像
默认主机有梯子/代理,根据官网步骤 gem5 gpu:AMD VEGA GPU
docker pull ghcr.io/gem5-test/gcn-gpu:v23-1
报错:
Error response from daemon: Head "https://ghcr.io/v2/gem5-test/gcn-gpu/manifests/v23-1": denied
解决,需要在github上设置一下token信息,参考链接 关于容器注册表支持。设置步骤:
vim ~/.bashrc
export CR_PAT=YOUR_TOKEN
# 退出重新进入终端,或者
source ~/.bashrc
echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
# login success
重新拉取镜像,
docker pull ghcr.io/gem5-test/gcn-gpu:v23-1
报错: Error response from daemon: manifest unknown,清单未知。去gem5 github主页,查看gcn的package下的版本列表 gcn-gpu 。发现目前没有v23-1的版本,改为已经发布的最新的v23-0,重新拉取
docker pull ghcr.io/gem5-test/gcn-gpu:v23-0
2、环境编译
根据镜像创建一个gcn3-gpu的容器,然后进入容器。
docker run --net host -itd --name gcn3-gpu -v /home/wgs/gem5space/:/root/gem5space ghcr.io/gem5/gcn-gpu:v23-0 bash
docker exec -w /root/gem5space -it gcn3-gpu bash
上面的一些参数说明:
docker run:
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
-i : 以交互模式运行容器,通常与 -t 同时使用;
-t : 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--volume , -v: 绑定一个卷
docker exec:
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
-w :指定初始化的工作目录
描述一下后面的文件夹结构
gem5-space
|--gem5
|--gem5-resources
gem5的源码,可以从github gem5的历史版本中下载相应的源码压缩包,然后解压 gem5-resources可以从github上clone下来,
git clone https://github.com/gem5/gem5-resources.git
编译gem5-gcn3的部分:
cd gem5
scons build/GCN3_X86/gem5.opt -j 64
编译的输出如下 其他的一些说明: 如果想实现快速创建,进入或者删除容器,可以在主机的环境变量~/.bashrc中添加下面内容
alias cgcn3='docker run --net host -itd --name gcn3-gpu -v /home/wgs/gem5space/:/root/gem5space ghcr.io/gem5/gcn-gpu:v23-0 bash'
alias egcn3='docker exec -w /root/gem5space -it gcn3-gpu bash'
alias dgcn3='docker stop gcn3-gpu; docker rm -f gcn3-gpu'
在主机终端分别执行cgn3/egcn3/dgcn3可以实现,对容器的创建/进入/删除操作。 进入容器,可以通过下面操作修改终端的显示彩色
apt update & apt install vim
vim ~/.barshrc
# 在vim命令中输入: j 64,跳转到第64行
# 取消第39行的注释
#force_color_prompt=yes
3、测试square
square在github上的介绍和测试流程 square
# pwd: /root/gem5space
cd gem5-resources/src/gpu/square
make
# Warning: The specified HIP target: gfx902 is unknown. Correct compilation is not guaranteed.
cd -
gem5/build/GCN3_X86/gem5.opt gem5/configs/example/apu_se.py -n 3 -c gem5-resources/src/gpu/square/bin/square
成功运行后的输出如下:
info: check result
PASSED!
Ticks: 139906310500
Exiting because exiting with last active thread context
运行时会有一些warning,而且也需要等待一小段时间。
其他的情况说明
docker官网有一个版本的gem5-gcn3, 地址docker官网 gcn3。这个版本可以编译,但是运行起来会有报错,不太清楚这个docker里面环境什么情况。而且是两年前的一个版本。