2017-03-11 160 views
1

我是一名研究并行编程论文的本科生。 我正在使用OpenMP模型。现在我想使用gem5来衡量性能。 这就是为什么我成功安装gem5全系统通过以下链接:如何在gem5完整系统中编译和运行c程序(使用OpenMP)?

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

现在我想用gem5编译&运行使用OpenMP(matmul.c)的C程序。 如何编译&运行此程序? 我的意思是在哪个文件夹中存储该程序文件(matmul.c)进行编译? 我如何创建这个程序的目标文件? 如何在运行&编译期间更改处理器,缓存内存大小,CPU数量?

我是本节的新生。这就是为什么我的问题清单太大了! 希望有人不介意。

最好的问候, Litu

+4

[如何gem5运行OpenMP的代码?](http://stackoverflow.com/questions/42636993/how-to-run-openmp-code-in-gem5) – Zulan

+0

做可能的复制如果你没有得到任何回应,不要只是重新发布一个问题。想想如何让它更清晰,更具体,更容易回答。 –

+1

您的帖子中有很多问题,这并不好。这里我们主要解决具体的问题。如果您收到一条错误消息,并且您不知道为什么,那是一个很好的问题。询问完整的教程不是一个好问题,可以作为**太brad **或**不清楚**。 –

回答

0

我怎样才能编译并运行此程序?我是指在哪个文件夹中存储该程序文件(matmul.c)以进行编译?我如何创建这个程序的目标文件?

如何交叉编译图像不是gem5特定的,所以我将简要介绍一下。

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

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

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

  • 建立两个交叉编译器和图像对我来说,这样确保兼容性
  • 可以很容易地自动建立新的软件,其包装系统
  • 可以产生非常简单的图像,这是更适用于gem5和架构研究

这是my setup on 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与相应的核心数量,例如:./system/arm/dt/armv7_gem5_v1_2cpu.dtb 2个核心。

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

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

    但要记住的是: