Demo:coremark

来自Bouffalo Lab Docs
跳转到导航 跳转到搜索

Demo简介 (Introduction)

CoreMark 的主要目标是提供一个简单的方法来测试处理器核心功能,该Demo存放在SDK的 bouffalo_sdk/examples/coremark_v1.01 下。

关于处理器,更多信息请访问 www.eembc.org。


构建与运行

  • 使用 make 命令构建和运行基准测试。
  • 运行结果会输出到 run1.logrun2.log 文件中,性能结果在 run1.log 中。

交叉编译

  • 对于交叉编译平台,需要调整 core_portme.makcore_portme.h 和可能的 core_portme.c 文件。
  • 示例:创建一个新平台目录并复制默认配置文件,然后运行: make PORT_DIR=<platform>

Makefile 目标

  • run:默认目标,生成 run1.logrun2.log
  • run1.log:性能参数运行结果。
  • run2.log:验证参数运行结果。
  • run3.log:生成配置文件的运行结果。
  • compile:编译基准测试可执行文件。
  • link:链接基准测试可执行文件。
  • check:验证源文件的 MD5 值。
  • clean:清理临时文件。

Make 标志

  1. ITERATIONS:设置运行迭代次数,默认运行 10-100 秒。例如: make ITERATIONS=10 适用于模拟器、功耗测量等场景。
  2. XCFLAGS:添加编译器标志。例如: make XCFLAGS="-g -DMULTITHREAD=4 -DUSE_FORK=1"
  3. CORE_DEBUG:调试运行时使用。例如: make XCFLAGS="-DCORE_DEBUG=1"
  4. REBUILD:强制重新构建可执行文件。

make 系统 (Systems Without make)

  • 手动编译所需文件并运行。例如:
gcc -O2 -o coremark.exe core_list_join.c core_main.c core_matrix.c core_state.c core_util.c simple/core_portme.c -DPERFORMANCE_RUN=1 -DITERATIONS=1000

./coremark.exe > run1.log

并行执行

  • 使用 XCFLAGS=-DMULTITHREAD=N 设置并行线程数。例如: make XCFLAGS="-DMULTITHREAD=4 -DUSE_PTHREAD"

可执行文件运行参数 (Run Parameters)

  • CoreMark 可执行文件支持多个参数(如果 main() 支持参数)。
  • 参数包括种子值、迭代次数、数据缓冲区大小等。

运行规则

  • 必须
    1. 基准测试运行时间至少为 10 秒。
    2. 验证必须成功,种子值为 0,0,0x660x3415,0x3415,0x66
    3. 如果使用配置文件优化,必须使用种子值 8,8,8 生成配置文件。
    4. 所有源文件必须使用相同的编译标志。
  • 允许
    • 修改迭代次数、工具链、内存分配方法等。
  • 不允许
    • 修改除 core_portme* 外的源文件。


示例输出:

Benchmark started, please make sure it runs for at least 10s.

                                                             Now PC=a0006152
2K performance run parameters for coremark.
CoreMark Size    : 666
Total ticks      : 11807
Total time (secs): 11
Iterations/Sec   : 1000
Iterations       : 11000
Compiler version : GCC10.2.0
Compiler flags   : -O2
Memory location  : STACK
seedcrc          : 0xe9f5
[0]crclist       : 0xe714
[0]crcmatrix     : 0x1fd7
[0]crcstate      : 0x8e3a
[0]crcfinal      : 0x33ff
Correct operation validated. See readme.txt for run and reporting rules.
CoreMark 1.0 : 1000 / GCC10.2.0 -O2 / STACK