一、 Orange Pi 5 简介
Orange Pi 5 采用了瑞芯微 RK3588S 新一代八核 64 位处理器,具体为四核A76+四核A55,采用了 8nm 工艺设计,主频最高可达 2.4GHz,集成 ARM Mali-G610 MP4 GPU,内嵌高性能 3D 和 2D 图像加速模块,内置高达 6 Tops 算力的 AI 加速器 NPU,拥有 4GB/8GB/16GB/32GB(LPDDR4/4x),具有高达 8K 显示处理能力。
Orange Pi 5 引用了相当丰富的接口,包括 HDMI 输出、GPIO 接口、Type-C、M.2 PCIe2.0、千兆网口、2 个 USB2.0,1 个 USB3.0 等;可广泛适用于高端平板、边缘计算、人工智能、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT 各个行业。 Orange Pi 5 支持Orange Pi 官方研发的操作系统 Orange Pi OS ,同时,支持 Android12 、Debian11、Ubuntu、Armbian、OpenWRT 等操作系统。
我这个是 8GB 版本,铜散热片,亚克力外壳加风扇散热,待机状态温度差不多 37°C。
二、下载编译
1. 下载代码
git clone https://github.com/eembc/coremark.git
cd coremark/
2. 编译
orangepi@orangepi5:~/benchm/coremark$ make ITERATIONS=100000
显示如下:
make XCFLAGS=" -DPERFORMANCE_RUN=1" load run1.log
make[1]: Entering directory '/home/orangepi/benchm/coremark'
make port_prebuild
make[2]: Entering directory '/home/orangepi/benchm/coremark'
make[2]: Nothing to be done for 'port_prebuild'.
make[2]: Leaving directory '/home/orangepi/benchm/coremark'
make link
make[2]: Entering directory '/home/orangepi/benchm/coremark'
cc -O2 -Ilinux -Iposix -I. -DFLAGS_STR=\""-O2 -DPERFORMANCE_RUN=1 -lrt"\" -DITERATIONS=100000 -DPERFORMANCE_RUN=1 core_list_join.c core_main.c core_matrix.c core_state.c core_util.c posix/core_portme.c -o ./coremark.exe -lrt
Link performed along with compile
make[2]: Leaving directory '/home/orangepi/benchm/coremark'
make port_postbuild
make[2]: Entering directory '/home/orangepi/benchm/coremark'
make[2]: Nothing to be done for 'port_postbuild'.
make[2]: Leaving directory '/home/orangepi/benchm/coremark'
make port_preload
make[2]: Entering directory '/home/orangepi/benchm/coremark'
make[2]: Nothing to be done for 'port_preload'.
make[2]: Leaving directory '/home/orangepi/benchm/coremark'
echo Loading done ./coremark.exe
Loading done ./coremark.exe
make port_postload
make[2]: Entering directory '/home/orangepi/benchm/coremark'
make[2]: Nothing to be done for 'port_postload'.
make[2]: Leaving directory '/home/orangepi/benchm/coremark'
make port_prerun
make[2]: Entering directory '/home/orangepi/benchm/coremark'
make[2]: Nothing to be done for 'port_prerun'.
make[2]: Leaving directory '/home/orangepi/benchm/coremark'
./coremark.exe 0x0 0x0 0x66 100000 7 1 2000 > ./run1.log
make port_postrun
make[2]: Entering directory '/home/orangepi/benchm/coremark'
make[2]: Nothing to be done for 'port_postrun'.
make[2]: Leaving directory '/home/orangepi/benchm/coremark'
make[1]: Leaving directory '/home/orangepi/benchm/coremark'
make XCFLAGS=" -DVALIDATION_RUN=1" load run2.log
make[1]: Entering directory '/home/orangepi/benchm/coremark'
make port_preload
make[2]: Entering directory '/home/orangepi/benchm/coremark'
make[2]: Nothing to be done for 'port_preload'.
make[2]: Leaving directory '/home/orangepi/benchm/coremark'
echo Loading done ./coremark.exe
Loading done ./coremark.exe
make port_postload
make[2]: Entering directory '/home/orangepi/benchm/coremark'
make[2]: Nothing to be done for 'port_postload'.
make[2]: Leaving directory '/home/orangepi/benchm/coremark'
make port_prerun
make[2]: Entering directory '/home/orangepi/benchm/coremark'
make[2]: Nothing to be done for 'port_prerun'.
make[2]: Leaving directory '/home/orangepi/benchm/coremark'
./coremark.exe 0x3415 0x3415 0x66 100000 7 1 2000 > ./run2.log
make port_postrun
make[2]: Entering directory '/home/orangepi/benchm/coremark'
make[2]: Nothing to be done for 'port_postrun'.
make[2]: Leaving directory '/home/orangepi/benchm/coremark'
make[1]: Leaving directory '/home/orangepi/benchm/coremark'
Check run1.log and run2.log for results.
See README.md for run and reporting rules.
三、运行
orangepi@orangepi5:~/benchm/coremark$ ./coremark.exe
程序在大核上运行的,显示如下:
2K performance run parameters for coremark.
CoreMark Size : 666
Total ticks : 16710
Total time (secs): 16.710000
Iterations/Sec : 17953.321364
Iterations : 300000
Compiler version : GCC10.2.1 20210110
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 : 0xcc42
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 17953.321364 / GCC10.2.1 20210110 -O2 -DPERFORMANCE_RUN=1 -lrt / Heap
用 taskset 将程序指定在小核上运行:
orangepi@orangepi5:~/benchm/coremark$ taskset -c 2 ./coremark.exe
显示如下:
2K performance run parameters for coremark.
CoreMark Size : 666
Total ticks : 16114
Total time (secs): 16.114000
Iterations/Sec : 6826.362170
Iterations : 110000
Compiler version : GCC10.2.1 20210110
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 : 0x33ff
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 6826.362170 / GCC10.2.1 20210110 -O2 -DPERFORMANCE_RUN=1 -lrt / Heap
可以另外打开一个终端窗口,查看运行情况,一个大核全速运行,温度最高是 41°C:
四个大核全速运行,温度达到 54°C:
四、优化
1. 强制最高频率
默认CPU会根据负载动态调节频率,以达到降功耗目的,可以将CPU强制工作在 1.8GHz 和2.4GHz 最高频率下。
sudo bash -c 'echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor'
sudo bash -c 'echo performance > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor'
2. 超频
启用:sudo bash -c 'echo 1 > /sys/devices/system/cpu/cpufreq/boost'
这个功能好像不支持,显示如下:
bash: line 1: /sys/devices/system/cpu/cpufreq/boost: Permission denied
关闭:sudo bash -c 'echo 0 > /sys/devices/system/cpu/cpufreq/boost'
3. 提高优化等级,改为-o3编译
gcc -o coremark 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
采用上述命令试了一下,感觉效果差不多。
4. 关闭图形系统
sudo init 3
效果不大,运行结果为:
CoreMark 1.0 : 17979.144193 / GCC10.2.1 20210110 -O2 -DPERFORMANCE_RUN=1 -lrt / Heap
恢复图形系统: sudo init 5
五、小结
OrangePi5 RK3588S 的单个大核的 CoreMark 分数是 17979,四个大核的 CoreMark 分数是 71916,小核的 CoreMark 分数是 6826,四个小核的 CoreMark 分数是 27304,总的 CoreMark 分数达到了 99,220,达到了六核 Intel(R) Core(TM) i5-9600K CPU @ 3.70GHz 的 CoreMark 分数(192,369)的一半,性能不可谓不强悍。
再加上 6 TOPs 算力的 AI 加速器 NPU,高达 8K 显示处理能力,Android12 、Debian11、Ubuntu、Armbian、OpenWRT 等操作系统的支持,值得一试。
老徐,2023/6/23