CoreMark
The initial code was developed in 2009 by EEMBC. Since 2018 it is additionally licenced with the Apache licence. For a quick test in Linux just enter the following commands:
git clone https://github.com/eembc/coremark
cd coremark
make
cat run1.log
To use all the available cores on a CPU like 13700T simply write
make clean
make XCFLAGS="-g -DMULTITHREAD=24 -DUSE_FORK=1"
cat run1.log
One can easily see how the score scales with the frequency over this wide range.
In 2019 Paul Stoffregen from PJRC with the Teensy project ported it to Arduino. It runs out of the box on an ESP32. Multicore optimisation is not enabled yet. In ubuntu it works with
make XCFLAGS="-g -DMULTITHREAD=4 -DUSE_FORK=1"
Some of my results from Arduino IDE and Ubuntu:
Board | CoreMark | LED | MHz | Mark/MHz |
---|---|---|---|---|
Arduino MEGA 2560 | 7 | 13 | 16 | 0.44 |
STM32F103C8T6 128k | 81 | 17 | 72 | 1.13 |
STM32F401CCU6 256k | 150 | 31 | 84 | 1.79 |
STM32F411CEU6 512k | 172 | 31 | 100 | 1.72 |
T-Koala ESP32 | 351 | 5 | 160 | 2.19 |
Raspberry Pi Model B v2 | 1574 | 700 | 2.25 | |
Raspberry Pi 3 Model B | 3800 | 1200 | 3.17 | |
Amlogic S905W tanix tx3 | 3913 | 1200 | 3.26 | |
Raspberry Pi 4 v1.1 4GB | 8257 | 1500 | 5.50 | |
Xeon X5550 | 13643 | 3060 | 4.46 | |
i5-3320M | 21245 | 3300 | 6.44 | |
i7-4960HQ | 21326 | 3800 | 5.61 | |
i7-6820HQ | 23779 | 3660 | 6.61 | |
i3-10100 | 30532 | 4220 | 7.23 | |
i7-13700T | 39082 | 4600 | 8.49 |
Multithread results
Board | CoreMark | MHz | Mark/Mhz |
---|---|---|---|
RPi3 Model B 4 threads | 15194 | 1200 | 3.16 |
Amlogic S905W 4 threads | 15393 | 1200 | 3.21 |
Raspberry 4 with 4 threads | 32880 | 1500 | 5.48 |
i5-3320M 4 threads | 53450 | 3300 | 4.05 |
i7-4960HQ 4 threads | 74944 | 3800 | 4.93 |
i7-4960HQ 8 threads | 95261 | 3800 | 3.13 |
i7-6820HQ 4 threads | 96420 | 3660 | 6.70 |
i3-10100 4 threads | 103808 | 4070 | 6.38 |
i7-6820HQ 8 threads | 118862 | 3660 | 4.13 |
Xeon X5550 16 threads | 124634 | 3060 | 2.55 |
i3-10100 8 threads | 167829 | 4070 | 4.95 |
i7-13700T 16 threads | 319893 | 2650 | 7.54 |
i7-13700T 24 threads | 390614 | 2550 | 6.38 |
Bluepill STM32F103C8T6 can only be programmed with the ST-Link V2 programmer.
Blackpill STM32F401CCU6 and STM32F411CEU6 working with:
- Correct board and board part number
- U(S)ART support: “Enabled (generic ‘Serial’)”
- USB support (if available): “CDC (generic ‘Serial’ supersede U(S)ART)” to have COM port serial after reboot
- Upload method: “STM32CubeProgrammer (DFU)”
Programming mode activated by press and hold Boot0 and hit NRST. You have a new USB devices “STM32 BOOTLOADER”.
Most interesting is the ratio CoreMark/MHz:
ESP IDF crosscompiling toolchain
The Arduino port from Paul Stoffregen does not run on ESP8266 yet. But ochrin used the esp8266 toolchain and got some results in March 2020. I tried to replicate his results:
Board | CoreMark | Ochrin |
---|---|---|
ESP8266 80 MHz | 155 | 191 |
ESP8266 160 MHz | 262 | |
ESP32 80 MHz | 166 | |
ESP32 160 MHz | 332 | |
ESP32 240 MHz | 498 | |
ESP32 2C 160 MHz | 661 | |
ESP32 2C 240 MHz | 991 |
Still no match for the 2314 coremark score of the Teensy 4.0 (Cortex-M7 at 600 MHz compared to LX6 with 240 MHz). I can’t make the ESP32 toolchain running.
Update 2024/08/09
The Raspberry Pico 2350 was just released. It has both a Cortex M33 dualcore and a Hazard3 dualcore. Their speed (for 150 MHz) should be 4.02 and 3.81 CoreMark/MHz, respectively.
An update for the M1 CoreMark is needed. And some test results for above processors. Scheduled as TBD in Saigon for September 2024.