我该怎么编译&在gem5 Full System中运行一个c程序(使用OpenMP)?

时间:2017-03-11 11:58:45

标签: openmp gem5

我是一名研究平行编程论文的本科生。 我正在使用OpenMP模型。现在我想使用gem5来衡量性能。 这就是我通过以下链接成功安装gem5 Full System的原因:

http://cearial01.kaist.ac.kr/index.php/2016/08/26/gem5-documentation/

现在我要编译&使用gem5运行带有OpenMP(matmul.c)的c程序。 我该怎么编译&运行这个程序? 我的意思是我在哪个文件夹中存储了这个程序文件(matmul.c)进行编译? 我如何创建该程序的目标文件? 如何更改处理器,缓存内存大小,运行期间没有cpu和&汇编

我是本节的新生。这就是为什么我的要求清单太大了! 希望任何人都不要介意。

最诚挚的问候, Litu

1 个答案:

答案 0 :(得分:1)

  

如何编译和运行此程序?我的意思是我在哪个文件夹中存储了这个程序文件(matmul.c)进行编译?我如何创建该程序的目标文件?

如何对图像进行交叉编译不是特定于gem5的,所以我会简短。

首先,您必须为图像获取交叉编译器。

最好的方法是从图像的相同源获取交叉编译器,以确保兼容性。

我首选的方法是使用最小的Buildroot图像。的buildroot:

  • 为我构建交叉编译器和图像,从而确保兼容性
  • 使用其软件包系统自动构建新软件
  • 可以生成非常简单的图像,更适合宝石和建筑研究

这是my setup on GitHub。它包含我在gem5中成功运行的最小OpenMP hello world

另一个不错的选择是使用https://crosstool-ng.github.io/

由于您需要OpenMP支持,因此必须使用支持构建GCC交叉编译器编译器。

我认为这是在GCC中完成的:

./configure --enable-libgomp

或通过Buildroot选项:

BR2_GCC_ENABLE_OPENMP=y

然后在编译时,您必须将-fopenmp选项传递给gcc

  

如何更改处理器数量和缓存大小?

自己回答这个问题的最好方法是使用类似的东西:

./build/ARM/gem5.opt configs/example/fs.py -h

并搜索选项。

你遇到了:

  • -n NUM_CPUS, --num-cpus=NUM_CPUS

    对于ARM,您还需要传递具有相应核心数的.dtb,例如:./system/arm/dt/armv7_gem5_v1_2cpu.dtb 2核。

  • 缓存:您可以轻松找到以下选项:

     --caches --l1d_size=1024 --l1i_size=1024 --l2cache --l2_size=1024 --l3_size=1024
    

    但请记住: