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

相关文章

Spring Boot项目打包和运行的操作方法

《SpringBoot项目打包和运行的操作方法》SpringBoot应用内嵌了Web服务器,所以基于SpringBoot开发的web应用也可以独立运行,无须部署到其他Web服务器中,下面以打包dem... 目录一、打包为JAR包并运行1.打包为可执行的 JAR 包2.运行 JAR 包二、打包为WAR包并运行

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

debian12安装docker的实现步骤

《debian12安装docker的实现步骤》本文主要介绍了debian12安装docker的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录步骤 1:更新你的系统步骤 2:安装依赖项步骤 3:添加 docker 的官方 GPG 密钥步骤

Gradle下如何搭建SpringCloud分布式环境

《Gradle下如何搭建SpringCloud分布式环境》:本文主要介绍Gradle下如何搭建SpringCloud分布式环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Gradle下搭建SpringCloud分布式环境1.idea配置好gradle2.创建一个空的gr

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用