gem5+NVMain混合编译qpush无报错(+parsec负载)

网络上的gem5+nvmain编译都有大大小小的错误,在此总结一下一个2017/10/20可行的混合编译流程,参考了左师兄博客(博客中有parsec相关部分) 以及 CSDN一名作者的gem5专栏


初始准备工作

  • 使用的环境是Ubuntu14.04+VMWare虚拟机,不建议使用Ubuntu16.04以及中文版,因为说实话高版本的有点卡顿使用不舒服.
  • 虚拟机建议内存3G以上(否则编译的时候会内存溢出),建议硬盘24G以上(实验后期gem5文件夹会达到接近10G,留点空间容错).
  • 接下来安装需要的软件包
    name@ubuntu:~$ sudo apt-get install mercurial scons swig gcc m4 python python-dev libgoogle-perftools-dev g++ libprotobuf-dev
  • 其中比较重要的就是mercurial,它是一个类似git的代码管理软件,使用hg命令,这个后文会再提到.

配置hgrc文件

  • hgrc文件是一个hg指令相关的文件,创建即可,具体vi和vim指令请自行百度学习,创建hgrc文件:
    name@ubuntu:~$ vi~/.hgrc
  • 把下面内容加入hgrc文件中,修改username信息(改成自己喜欢的字符串就好,这个不重要)
[ui]
# Set the username you will commit code with
username=Your Name <your@email.address>
ssh = ssh -C
# Always use git diffs since they contain permission changes and rename info
[defaults]
qrefresh = --git
email = --git
diff = --git
[extensions]
# These are various extensions we find useful
# Mercurial Queues -- allows managing of changes as a series of patches
hgext.mq =
# PatchBomb -- send a series of changesets as e-mailed patches
hgext.patchbomb =
# External Diff tool (e.g. kdiff3, meld, vimdiff, etc)
hgext.extdiff =
# Fetch allows for a pull/update operation to be done with one command and automatically commits a merge changeset
hgext.fetch =
# Path to the style file for the M5 repository
# This file enforces our coding style requirements
style = /path/to/your/m5/util/style.py
[email]
method = smtp
from = Your Name <your@email.address>
[smtp]
host = your.smtp.server.here

安装GEM5

name@ubuntu:~$ hg clone http://repo.gem5.org/gem5
检查文件列表的时候可能会卡顿一会,耐心等就行了

下载nvmain

点击在bitbucket下载(无需注册帐号)
为什么要下载这个版本,是因为这个版本里的nvmain/patches/gem5/nvmain2-gem5-11688+这个补丁包比较重要,它要求对应的gem5版本也要是11688或者以上的版本.下载完nvmain以后,把它放在gem5的目录里,把长长的文件夹名字改为nvmain(非必须,只是看着方便)

给gem5打补丁并编译

  • 注意此时如果直接像其他博客里面写的hg qimport的话就会因为gem5的版本号和patch补丁对应不上而导致hg qpush出错,所以先更新gem5版本(同时以防万一还是把init操作都做一遍吧,init报错无所谓)
name@ubuntu:~$ cd gem5
name@ubuntu:~/gem5$ hg init
name@ubuntu:~/gem5$ hg qinit
name@ubuntu:~/gem5$ hg update 11688 
#update后在这里会看到有很多文件改变了,这是好的信息,说明gem5更新了
name@ubuntu:~/gem5$ hg qimport -f ./nvmain/patches/gem5/nvmain2-gem5-11688+
#此处nvmain/patch下的补丁版本号和我们的gem5版本号对上了
name@ubuntu:~/gem5$ hg qpush
#过程中会出现style.py路径错误之类的提示信息,目前看来对后续影响不大,先不管,可能是个样式表信息吧
  • 编译GEM5 with NVMain
    name@ubuntu:~/gem5$ scons EXTRAS=nvmain build/ALPHA/gem5.opt

编译成功后测试

name@ubuntu:~/gem5$ ./build/ALPHA/gem5.opt configs/example/se.py -c tests/test-progs/hello/bin/alpha/linux/hello --cpu-type=detailed --caches --l2cache --mem-type=NVMainMemory --nvmain-config=./nvmain/Config/PCM_ISSCC_2012_4GB.config
  • 混合编译成功的一大标志就是--mem-type可以选择NVMainMemory作为内存类型了,接着程序会把数据执行后在控制台输出NVMain提供的统计信息.
  • 上面的helloword执行后可以在输出中找到"helloword"字符串

parsec

运行parsec负载部分可直接参考左鹏飞博客,只需注意最后运行时的指令加入NVMain作为主存即可,最后一步指令如下:

./build/ALPHA/gem5.opt ./configs/example/fs.py -n <number> --script=./path/to/runScript.rcS  --mem-type=NVMainMemory --nvmain-config=./nvmain/Config/PCM_ISSCC_2012_4GB.config --caches --l2cache -F 5000000000

其中-n <number>是线程数,也可以不加这个参数。--script部分要换成自己生成的.rcS脚本。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容