前言
根据官方的手册宣传可以看到coremark跑分达到了4925,我们就实际测一测。
准备
基于WIN11下的WSL2搭建开发环境
安装WSL2和Ubuntu20.04,过程可以搜索网络上的资料,这里不再赘述。
打开WSL终端
安装编译器
sudo apt-get install gcc-aarch64-linux-gnu
查看编译器版本
aarch64-linux-gnu-gcc -v
过程
下载代码
git clone https://github.com/eembc/coremark.git
cd coremark/
vi simple/core_portme.h
修改
#define COMPILER_FLAGS \
FLAGS_STR
#endif
为
#define COMPILER_FLAGS \
"-O3"
#endif
如果-O0编译则改为”-O0”
typedef ee_u32 ee_ptr_int;
改为
typedef unsigned long ee_ptr_int;
编译
aarch64-linux-gnu-gcc core_list_join.c core_main.c core_matrix.c core_state.c core_util.c simple/core_portme.c -DPERFORMANCE_RUN=1 -DITERATIONS=100000 -Isimple -I. -O0 -o coremarko0
aarch64-linux-gnu-gcc core_list_join.c core_main.c core_matrix.c core_state.c core_util.c simple/core_portme.c -DPERFORMANCE_RUN=1 -DITERATIONS=100000 -Isimple -I. -O3 -o coremarko3
aarch64-linux-gnu-gcc core_list_join.c core_main.c core_matrix.c core_state.c core_util.c simple/core_portme.c -DPERFORMANCE_RUN=1 -DITERATIONS=100000 -Isimple -I. -ofast -o coremarkofast
导入到windows下
cp coremarko0 coremarko3 coremarkofast /mnt/d
然后通过串口rz导入到开发板
添加可执行权限
chmod +x coremarko0 coremarko3 coremarkofast
运行
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
切换到性能模式
./coremarko0
./coremarko3
./coremarkofast
结果如下,可以看到优化不同差距较大
root@forlinx:/# ./coremarko0
2K performance run parameters for coremark.
CoreMark Size : 666
Total ticks : 112108674
Total time (secs): 112.108674
Iterations/Sec : 891.991640
Iterations : 100000
Compiler version : GCC9.4.0
Compiler flags : -O0
Memory location : STACK
seedcrc : 0xe9f5
[0]crclist : 0xe714
[0]crcmatrix : 0x1fd7
[0]crcstate : 0x8e3a
[0]crcfinal : 0xd340
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 891.991640 / GCC9.4.0 -O0 / STACK
root@forlinx:/# ./coremarko3
2K performance run parameters for coremark.
CoreMark Size : 666
Total ticks : 21480671
Total time (secs): 21.480671
Iterations/Sec : 4655.348057
Iterations : 100000
Compiler version : GCC9.4.0
Compiler flags : -O3
Memory location : STACK
seedcrc : 0xe9f5
[0]crclist : 0xe714
[0]crcmatrix : 0x1fd7
[0]crcstate : 0x8e3a
[0]crcfinal : 0xd340
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 4655.348057 / GCC9.4.0 -O3 / STACK
root@forlinx:/# ./coremarkofast
2K performance run parameters for coremark.
CoreMark Size : 666
Total ticks : 21475001
Total time (secs): 21.475001
Iterations/Sec : 4656.577199
Iterations : 100000
Compiler version : GCC9.4.0
Compiler flags : -Ofast
Memory location : STACK
seedcrc : 0xe9f5
[0]crclist : 0xe714
[0]crcmatrix : 0x1fd7
[0]crcstate : 0x8e3a
[0]crcfinal : 0xd340
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 4656.577199 / GCC9.4.0 -Ofast / STACK
与官方的4952差别不大
用官方的程序跑也是4628,所以与板子本身环境还有一些影响。
root@forlinx:/# coremark.exe
2K performance run parameters for coremark.
CoreMark Size : 666
Total ticks : 12962
Total time (secs): 12.962000
Iterations/Sec : 4628.915291
Iterations : 60000
Compiler version : GCC7.4.1 20181213 [linaro-7.4-2019.02 revision 56ec6f6b99cc167ff0c2f8e1a2eed33b1edc85d4]
Compiler flags : -O2 -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 : 0xbd59
Correct operation validated. See readme.txt for run and reporting rules.
CoreMark 1.0 : 4628.915291 / GCC7.4.1 20181213 [linaro-7.4-2019.02 revision 56ec6f6b99cc167ff0c2f8e1a2eed33b1edc85d4] -O2 -lrt / Heap
root@forlinx:/#
从https://www.eembc.org/coremark/scores.php
搜索Cortex-A53可以对比同为4核Cortex-A53的NXP的i.MX8M的得分。
我们这里换算成4核4656.577199*4=18,626.308796
18,626.308796/(1.5*1000)=12.4175CoreMark/MHz
与i.MX8M的19678.58和13.12CoreMark/MHz也差不多
总结
Coremark跑分和官方宣传的差不多,没有虚标,CPU性能和NXP的配置差不多的i.MX8M得分也差不多,可以对标一线国际大厂。