docker 环境下编译运行 gem5

2024-03-10 10:08
文章标签 编译 运行 docker 环境 gem5

本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/793894

相关文章

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基