docker 环境下编译运行 gem5

本文详细介绍了如何在Docker环境下配置、编译和运行gem5,针对VMware中可能出现的编译错误提供了解决方案。通过创建自定义Ubuntu镜像,安装必要的依赖,然后下载并编译gem5源码,最终成功运行gem5。此方法不仅解决了虚拟机资源限制导致的编译问题,还提供了在有限的网络条件下构建docker镜像的步骤。
摘要由CSDN通过智能技术生成

问题提出

最近一段时间在学习 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 可能编译失败的问题。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值