GEM5 full system Parsec tutorial 2024 parsec 全系统教程2024年可运行

本文于2023年10月实测可以编译完成GEM5 full system 的parsec benchmar运行。本文提供了一镜到底的手把手全流程教程。 gem的build和disk image总有很多问题,这一次用docker和尽可能的下载而非本地编译来实现。也尽可能避开gem5art的组件等花里胡哨带来潜在bug的功能。

1. build GEM5 with docker

本来可以本地scons build的, 但是遇到了很多问题。

下图中官方提供了很多方法,最简单有效的还是docker,避开一切环境的打扰。(想查看官方教程的:https://www.gem5.org/documentation/general_docs/building )
在这里插入图片描述
下面是具体的实际的命令行:

docker pull  gcr.io/gem5-test/ubuntu-22.04_all-dependencies:v22-1
#或者 sudo docker pull  gcr.io/gem5-test/ubuntu-22.04_all-dependencies:v22-1
#代码解释:任意路径的命令行都可。 
#docker pull <image>  ,<image> 是你的docker镜像。我选择的是和host,也就是物理机一致的版本,ubuntu22.04。

创建一个文件夹,进入文件夹,git clone gem5

mkdir myprojects2024
cd myprojects2024
git clone https://github.com/gem5/gem5

在这里插入图片描述

sudo docker run -u $UID:$GID --volume  /home/yz/myprojects/2024GEM5/parsec-tests/yzmodifiedgem5/:/gem5  --rm -it gcr.io/gem5-test/ubuntu-22.04_all-dependencies:v22-1
#docker run -u $UID:$GID --volume <gem5 directory>:/gem5 --rm -it <image>

这里 是host物理机的地址,/gem5是docker内虚拟的地址,docker启动后,会发现ls出现了gem5。这是因为我们把host的 <地址/gem5>挂载到docker内的<根目录/gem5>里,我们同时docker内对该文件夹操作,编译,host物理机也会有同样的效果。
在这里插入图片描述
然后dcoker内 进入gem5文件夹,scons编译

cd gem5 
scons build/X86/gem5.opt -j 24
## scons build/{ISA}/gem5.{variant} -j {cpus}
#其中ISA 有X86,ARM 等可选,我们选X86因为对应的教程比较多,也有默认的资源。
#gem5.{variant}有 gem5.debug/gem5.opt/gem5.fast可选, 选debug就慢但是信息多,fast就快但是信息少,一般选opt就行。
# 其中-j {cpus} 可以选择--j 4/ -j 8/-j 16,根据cpu核数选择,选错了也没关系,顶多慢一点。#

在这里插入图片描述
也许会有一些关于hook的提示,选yes就行,让程序自己编译我花了大概11:50-12:10, 20min以内。
在这里插入图片描述

cd gem5/util/m5/ #进入目录即可,如果你当前目录是gem5了, 则为: cd  util/m5/
scons build/x86/out/m5

2. 启动一个full system 模拟

然后输入下面的命令行进行一个简单的测试,这个命令行可以跳过。

 ./build/X86/gem5.opt configs/example/gem5_library/x86-ubuntu-run.py

它将创建一个使用 KVM 启动 Ubuntu 18.04 映像的模拟,并且自动下载缺失的内核与镜像文件。
在这里插入图片描述

然后是我们的核心部分,parsec benchmarkl的全系统模拟。其中,我们避免了packer或qemu或者m5 util手动打包镜像,而是直接跳过镜像和内核的编译(从而让gem5默认下载缺失内核和镜像)。
查看可以看到我们在~/.cache/gem5目录内下好了kernel和image文件。
在这里插入图片描述

然后是运行parsec的full system模拟。我们运行的是其中一个benchmark,叫blacksholes,很多地方缩写为bl。
size定为simsmall,花费5-8分钟(e5-2678花费8分钟,10700k花费五分钟)。simalarge则在10700k上花费1小时以上。

build/X86/gem5.opt configs/example/gem5_library/x86-parsec-benchmarks.py --benchmark blackscholes --size simsmall

最后的结果如下。
在这里插入图片描述

在gem5/m5out/路径下会有结果文件,打开stats.txt即可看到对应的结果。
在这里插入图片描述

一些简单的结果分析

打开stats.txt,可以看到host上花了329.56hostseconds,也就是在10700k上花费了地球时间的5分钟。
仿真的频率是1x10^12.
在这里插入图片描述

以下与正文无关:

附录A: 一些可能的bug:

bug1: kvm
Exception: [configs/example/gem5_library/x86-parsec-benchmarks.py] KVM is required but is unavailable on this system
解决方法:

sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
sudo adduser `id -un` libvirt
sudo adduser `id -un` kvm

然后重启,或者至少重新开启终端。
bug2: libhdf5-dev
./build/X86/gem5.opt: error while loading shared libraries: libhdf5_serial_cpp.so.103: cannot open shared object file: No such file or directory
解决方法:

sudo apt install libhdf5-dev

bug3:
in the file ‘/proc/sys/kernel/perf_event_paranoid’. The default value was changed to 2 in kernel 4.6.
PARSEC 运行时需要perf_event_paranoid权限。大意是记录performance数据需要读取cpu的记录,被host物理机拒绝了,改为1就行。

sudo sysctl kernel.perf_event_paranoid=1 
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值