3

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

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

现在我想使用 gem5 编译和运行带有 OpenMP (matmul.c) 的 ac 程序。我怎样才能编译和运行这个程序?我的意思是我将这个程序文件(matmul.c)存储在哪个文件夹中进行编译?我如何创建这个程序的目标文件?如何在运行和编译期间更改处理器数量、缓存大小、cpu 数量?

我是这部分的新学生。这就是为什么我的询问清单太大了!希望大家不要介意。

最好的问候, 利图

4

1 回答 1

1

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

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

首先,您必须获得图像的交叉编译器。

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

我的首选方法是使用最少的 Buildroot 映像。构建根:

  • 为我构建交叉编译器和映像,从而确保兼容性
  • 使用其软件包系统可以轻松地自动化构建新软件
  • 可以产生非常简单的图像,比较适合gem5和架构研究

这是我在 GitHub 上的设置。它包含一个最小的OpenMP hello world,我已在 gem5 中成功运行它。

另一个不错的选择是使用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带有相应核心数的 a,例如:./system/arm/dt/armv7_gem5_v1_2cpu.dtb对于 2 个核心。

  • 缓存:您会很容易找到以下选项:

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

    但请记住:

于 2018-02-28T06:54:48.720 回答