gem5 : 多个checkpoint聚合后运行Multiprogrammed workloads

参考:Multiprogrammed workloads,Running Gem5 with multiple independent checkpoints

问题:

  • 通过checkpoint单独运行SPEC2k6 benchmark时,可以正常运行;
  • 现在假设有4个workload,那么他们各自会有自己的checkpoint,那么如何让他们一起运行呢?

解决方法:
1. gem5中自带的工具util/checkpoint_aggregator.py可以很好的将多个checkpoint聚合成一个运行点。方法如下:

python checkpoint_aggregator.py -o cpt.1 --cpts cpt.2339843762000 cpt.2441406262000 --memory-size 8589934592

2.从上面生成的checkpoint处开始运行4个workloads // running Gem5 using merged checkpoint

/home/fandroid/gem5/build/ALPHA/gem5.debug --debug-flags=CacheDead --debug-file=/home/fandroid/gem5/m5out/trace.out --outdir=/home/fandroid/gem5/m5out /home/fandroid/gem5/configs/example/spec06_l3_4mix_se.py --benchmark=mix1 -n 4 -r 1 --cpu-type=detailed --cpu-clock=2GHz --mem-size=4GB --mem-channels=2 --mem-type=LPDDR3_1600_x32 --caches --l1i_size=32kB --l1i_assoc=8 --l1d_size=32kB --l1d_assoc=8 --l2cache --l2_size=256kB --l2_assoc=8 --l3cache --l3_size=2MB --l3_assoc=32 --part=32

3.运行上面的脚本后会出现如下错误:

"fatal: Can't unserialize 'Globals:numMainEventQueues'" 

由于我使用的是2013年的gem5稳定版,存在一定的bug,最新的开发版本已经修复该问题。见补丁:sim: bump checkpoint version for multiple event queues
要修正这个问题,需要将gem5版本更新到最新,然后在通过util/cpt_upgrader.py工具将之前的cpt.1文件更新即可。

你可能感兴趣的:(GEM5)