3

我正在 gem5 模拟环境中运行一个小型矩阵乘法程序,并想测量程序的执行时间。该程序在 Fortran 中,我在矩阵乘法例程之前和之后使用 cpu_time 来获取时间。但是在 gem5 环境中还有其他更好的方法来测量时间吗?

4

3 回答 3

4

在完整系统模式下使用 gem5 测量给定二进制文件的标准方法是通过使用 --script 参数提供 rcS 脚本:

./build/ARM/gem5.fast ... your_options... --script=./script.rcS

您的脚本应包含 m5ops 以根据需要重置和转储统计信息。一个示例脚本.rcS:

m5 resetstats
/bin/yourbinary
m5 dumpstats

然后从 stats.txt 您可以获取执行时间(sim_seconds)或您需要的任何统计信息。如果您使用的是 Syscall Emulation 模式,您可以直接检查 stats.txt 而无需 rcS 脚本。

于 2015-11-17T19:18:03.383 回答
0

您还可以直接在基准测试中添加 resetstats / dumpstats 魔术汇编指令,如下所示:如何计算 gem5 中基准测试开始和结束之间的 CPU 时钟周期数?例如在 aarch64 中:

/* resetstats */
__asm__ __volatile__ ("mov x0, #0; mov x1, #0; .inst 0XFF000110 | (0x40 << 16);" : : : "x0", "x1")
/* dumpstats */
__asm__ __volatile__ ("mov x0, #0; mov x1, #0; .inst 0xFF000110 | (0x41 << 16);" : : : "x0", "x1")

然后,您可能想查看system.cpu.numCycles显示通过了多少 CPU 滴答的 。

于 2019-06-11T08:08:35.633 回答
-1

您当然可以根据您的构建查看不同的统计文件,但我认为最简单的方法是在您的模拟命令之前标记时间:

time ./build/ARM/gem5.fast ... your_options... --script=./script.rcS ...
于 2016-09-28T13:46:42.137 回答