CoreMark 测试指南

1、coremark 简介

coremark 是由EEMBC提出的一个评价CPU性能指标的跑分软件。其主要目标是测试处理器核心性能。CoreMark程序使用C语言写成,包含如下四类运算法则:数学矩阵操作(普通矩阵运算)、列举(寻找并排序)、状态机(用来确定输入流中是否包含有效数字)、CRC(循环冗余校验),都是在真实的嵌入式应用中很常见的操作,这也是CoreMark比其他测试标准更有实际价值的原因所在。

目前只发布了1个版本: https://github.com/eembc/coremark/tree/v1.01


CoreMark标准的测试方法很简单,就是在某配置参数组合下单位时间内跑了多少次CoreMark程序,其指标单位为CoreMark和CoreMark/MHz。
    
CoreMark和CoreMark/MHz 数字越高,意味着性能更高。    
CoreMark/MHz = CoreMark Score/Clock Frequency(CPU RUN)

可参考 https://www.analog.com/media/en/technical-documentation/application-notes/EE-389.pdf    

2、Cross compile 

这里以 NXP-LS1046A  ARM64平台为例 

Hardware Platform:NXP-LS1046A : 4 * A72 cores  1.8GHz

CoreMark详细说明可以参考coremark

这里以硬件平台NXP-LS1046A为例进行编译配置 : 4*A72 coresCPU主频1800MHz

目前CoreMark只发布了1个版本, 我们可以直接下载

wget https://github.com/eembc/coremark/archive/refs/tags/v1.01.zip

1新建一个编译目录

unzip v1.01.zip && cd coremark-1.01

cp linux64/ arm64 -ad

2修改arm64/core_portme.mak中的CC变量为正确的交叉编译工具

CC=/data/toolchain/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc

3测试多核性能时,需配置XCFLAGS来打开需要的宏

测试NXP-LS1046A 4CPU性能, 编译方式:

make PORT_DIR=arm64 XCFLAGS="-DTOTAL_DATA_SIZE=12000 -DPROFILE_RUN=1 -DMULTITHREAD=4 -DUSE_PTHREAD -pthread"

mv coremark.exe coremark_4core

测试单核性能, 编译方式:

make PORT_DIR=arm64

mv coremark.exe coremark_1core

说明:

测试多核性能(根据核数确定,这里是4核,选用多线程方式)

XCFLAGS="-DMULTITHREAD=4 -DUSE_PTHREAD -pthread"

也可选多进程方式,可实际测试看性能表现选择线程还是进程:

XCFLAGS="-DMULTITHREAD=4 -DUSE_FORK"

多核可选优化参数, 根据程序产生profile参数优化性能,可实际测试看性能表现,选择是否使用该参数:

XCFLAGS="-DTOTAL_DATA_SIZE=12000 -DPROFILE_RUN=1"

3、测试

这里以测试NXP-LS1046A 4CPU性能为例。

测试结果可以跟 EEMBC官方认证结果进行对比参考: coreMark Scores

为保证测试到最佳性能,测试前请确保系统上没有其它负载。

3.1 多核性能测试

#./coremark_4core 0x0 0x0 0x66 0 7 1 2000

root@localhost:~# ./coremark_4core 0x0 0x0 0x66 0 7 1 2000
2K performance run parameters for coremark.
CoreMark Size    : 666
Total ticks      : 19128
Total time (secs): 19.128000
Iterations/Sec   : 41823.504810
Iterations       : 800000
Compiler version : GCC7.2.1 20171011
Compiler flags   : -O2 -O2 -O5 -DTOTAL_DATA_SIZE=12000 -DPROFILE_RUN=1 -DMULTITHREAD=4 -DUSE_PTHREAD=1 -pthread -DPERFORMANCE_RUN=1  -lrt
Parallel PThreads : 4
Memory location  : Please put data memory location here
			(e.g. code in flash, data on heap etc)
seedcrc       : 0xe9f5
[0]crclist       : 0xe714
[1]crclist       : 0xe714
[2]crclist       : 0xe714
[3]crclist       : 0xe714
[0]crcmatrix     : 0x1fd7
[1]crcmatrix     : 0x1fd7
[2]crcmatrix     : 0x1fd7
[3]crcmatrix     : 0x1fd7
[0]crcstate      : 0x8e3a
[1]crcstate      : 0x8e3a
[2]crcstate      : 0x8e3a
[3]crcstate      : 0x8e3a
[0]crcfinal      : 0x4983
[1]crcfinal      : 0x4983
[2]crcfinal      : 0x4983
[3]crcfinal      : 0x4983
Correct operation validated. See readme.txt for run and reporting rules.
CoreMark 1.0 : 41823.504810 / GCC7.2.1 20171011 -O2 -O2 -O5 -DTOTAL_DATA_SIZE=12000 -DPROFILE_RUN=1 -DMULTITHREAD=4 -DUSE_PTHREAD=1 -pthread -DPERFORMANCE_RUN=1  -lrt / Heap / 4:PThreads

测试结果:

3.2单核性能测试

# ./coremark_1core 0x0 0x0 0x66 0 7 1 2000

root@localhost:~# ./coremark_1core 0x0 0x0 0x66 0 7 1 2000
2K performance run parameters for coremark.
CoreMark Size    : 666
Total ticks      : 19718
Total time (secs): 19.718000
Iterations/Sec   : 10143.016533
Iterations       : 200000
Compiler version : GCC7.2.1 20171011
Compiler flags   : -O2 -DPERFORMANCE_RUN=1  -lrt
Memory location  : Please put data memory location here
			(e.g. code in flash, data on heap etc)
seedcrc          : 0xe9f5
[0]crclist       : 0xe714
[0]crcmatrix     : 0x1fd7
[0]crcstate      : 0x8e3a
[0]crcfinal      : 0x4983
Correct operation validated. See readme.txt for run and reporting rules.
CoreMark 1.0 : 10143.016533 / GCC7.2.1 20171011 -O2 -DPERFORMANCE_RUN=1  -lrt / Heap

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值