由于NVMain已经停止维护很久了,直接与新的gem5集成会出现很多错误,只能选取老版本的gem5进行协同编译。老版本的编译会遇到一些问题,在这里罗列出来,以免后面还有人需要使用NVMain但不知道该如何运行它。

工具下载

下载已经经过patch的源代码。在这个仓库中已经准备好了旧版本的gem5,以及nvmain。

推荐使用docker。笔者之前使用Ubuntu22.04遇到了非常多的warning和bug,即使全部解决了集成也没有成功。在此使用的是Ubuntu18.04进行编译。如果读者没有Ubuntu18,或者不想再进行过多的环境配置,使用docker是最简单的方案。

环境构建

构建的docker file如下:

1
2
3
4
5
FROM ubuntu:18.04
WORKDIR /simulator
RUN apt -y update
RUN apt -y upgrade
RUN apt -y install python2.7 g++ scons vim swig m4 mercurial python-dev zlib1g-dev libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev

使用docker build -t gem5-nvmain .指令构建出镜像。下载依赖需要几分钟的时间。

然后,使用docker run -it -v ~/simulator/gem5-nvmain-hybrid-simulator:/simulator/gem5-nvmain -it gem5-nvmain将下载好的源代码挂载到创建容器的/simulator目录下。就完成了基本的环境构建。

编译

在gem5-stable目录下运行scons EXTRAS=nvmain-path -j4 build/X86/gem5.opt即可开始编译。

编译过程参考博客,在此篇博客中提到了两个坑我都遇到了,如果出现deprecated警告或者有关LO_Cache的报错可以使用该博客中的方法解决问题。

大概几分钟过后就编译完成啦^_^