我是一名研究平行编程论文的本科生。 我正在使用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
答案 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
但请记住:
HPI
和x86 DerivO3CPU
,但不会影响AtomicSimpleCPU
。