本文主要是介绍docker 环境下编译运行 gem5,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题提出
最近一段时间在学习 gem5,首先想编译运行一下,但是在自己的老笔电和实验室的祖传台式机(🤐)上安装虚拟机(Vmware, ubuntu 20.04)以及最新版本的 gem5 后,发现在编译的阶段就报错,出现了一些无法解释的错误,在编译的时候监视系统资源情况,初步可以判断是因为系统资源的问题,但是经过很多次尝试,几乎将宿主机(windows)的内存和计算资源都分配给了虚拟机,仍然在编译没多久后就罢工了,实际上这个问题可能并不只我出现,当然如果你的虚拟机足以编译运行 gem5,那么其实没有必要继续在 docker 环境下尝试了。
docker 环境下配置
在 google cloud 云平台的限时免费资源上尝试了一下编译 gem5,发现最新版本的 gem5 是可以进行编译的,所以问题应该是出现在我们自己的机器和虚拟机上,当然也可能是我们的虚拟机安装的包依赖出现了问题,在查看官方文档时,发现官方已经制作了可以编译运行 gem5 环境的 docker 镜像:
gem5 docker 镜像
但是这些镜像是放在 google 云平台上的,经过尝试,添加镜像站也无法顺利 pull 下来,所以只能尝试其它方法,所幸的是有 dockerfile 可以使用,下面是 20.04 版本的 ubuntu 环境,上面的链接中还有其它版本的:
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt -y update
RUN apt -y upgrade
RUN apt -y install build-essential git m4 scons zlib1g zlib1g-dev \libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev \python3-dev python3-six python-is-python3 doxygen libboost-all-dev \libhdf5-serial-dev python3-pydot libpng-dev libelf-dev pkg-config pip \python3-venv
RUN pip install mypy
我们可以利用这个 dockerfile 来创建镜像,但是在实验中中途因为网络问题只 pull 下来 ubuntu 镜像,后面的 apt-install 没有完成,所以我们也可以不用 dockerfile,自己按照步骤来创建镜像即可。
下面的步骤是基于 windows 下 docker 环境的,如果你使用的是 linux 环境或者你还未安装 docker 环境,最好先去了解配置一下 docker 环境。
获得 ubuntu 20.04 镜像
首先 pull 获得 ubuntu 20.04 镜像
docker pull ubuntu:20.04 # 获取 ubuntu 镜像
挂载共享文件夹
这里创建了一个容器,共享了宿主机的文件夹(d 盘下的 d:/docker/shared_data 文件夹,对应 ubuntu 中是 /shared_data 文件夹),镜像名称是 ubuntu:20.04,就是刚刚 pull 下来的镜像,/bin/bash 指的是打开 ubuntu 的 shell 端。
docker run -it -v d:/docker/shared_data:/shared_data ubuntu:20.04 /bin/bash
安装依赖
完成后即进入到 ubuntu 环境中,进行相关依赖包的安装:
apt -y update
apt -y upgrade
apt -y install build-essential git m4 scons zlib1g zlib1g-dev \libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev \python3-dev python3-six python-is-python3 doxygen libboost-all-dev \libhdf5-serial-dev python3-pydot libpng-dev libelf-dev pkg-config pip \python3-venv
pip install mypy
下载 gem5
此时下载 gem5 即可:
git clone https://gem5.googlesource.com/public/gem5
网络不好的话,可以到 github 上下载:
git clone git://github.com/gem5/gem5.git
编译运行
此时就可以按照官方步骤进行编译了,这里以 X86 为例,由于 docker 的 linux 环境默认使用的处理器资源是宿主机的全部处理器资源,所以 -j 指定宿主机的处理器核心数 + 1 即可:
scons build/X86/gem5.opt -j 5
实验了以下,大概花了两个小时,速度应该因(机器)而异,最后可以看到结果,warning 可以不用管:
尝试运行一个实例:
build/X86/gem5.opt configs/learning_gem5/part1/simple.py
得到结果,执行成功:
总结
本文介绍了在 docker 环境下配置、编译和运行 gem5 的方法,成功解决了 vmware 中 gem5 可能编译失败的问题。
这篇关于docker 环境下编译运行 gem5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!