PaulStoffregen / CoreMark

Benchmark CPU Performance on Arduino Compatible Boards
101 stars 17 forks source link

Sipeed Maix Bit (Kendryte K210) benchmark #1

Open dimitre opened 4 years ago

dimitre commented 4 years ago

Hello Paul, congrats on the release of Teensy 4.0 I'm looking forward to use it. I've just tested the Sipeed Maix Bit (Kendryte K210) here with your CoreMark, and I'm sharing the results in the case you think it is interesting. Screen Shot 2019-08-07 at 1 03 05 PM Screen Shot 2019-08-07 at 1 04 19 PM

mzy2240 commented 4 years ago

What's the operating frequency for your maix bit when doing the test? 400 Mhz? Have u tried the 600 Mhz or higher?

dimitre commented 4 years ago

What's the operating frequency for your maix bit when doing the test? 400 Mhz? Have u tried the 600 Mhz or higher?

I've tried both but they gave me the same result so I've opened this https://github.com/sipeed/Maixduino/issues/46

I've tried with ArduinoCore-k210 and it gave different results, but the same results for 400 and 600 mhz too.

Maixduino CoreMark 1.0 : 697.79 / GCC8.2.0 (flags unknown) / STACK

ArduinoCore-k210 from Seedstudio CoreMark 1.0 : 631.86 / GCC8.2.0 (flags unknown) / STACK

ckuehnel commented 4 years ago

My results for 400 MHz:

2K performance run parameters for coremark. CoreMark Size : 666 Total ticks : 15816 Total time (secs): 15.82 Iterations/Sec : 695.50 Iterations : 11000 Compiler version : GCC8.2.0 Compiler flags : (flags unknown) Memory location : STACK 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 : 695.50 / GCC8.2.0 (flags unknown) / STACK

NikiSchlifke commented 4 years ago

That would be single core rightI?

ckuehnel commented 4 years ago

Yes.Von Samsung-Tablet gesendet -------- Ursprüngliche Nachricht --------Von: NikiSchlifke notifications@github.com Datum: 07.09.19 06:43 (GMT+01:00) An: PaulStoffregen/CoreMark CoreMark@noreply.github.com Cc: Claus Kühnel info@ckuehnel.ch, Comment comment@noreply.github.com Betreff: Re: [PaulStoffregen/CoreMark] Sipeed Maix Bit (Kendryte K210) benchmark (#1) That would be single core rightI?

—You are receiving this because you commented.Reply to this email directly, view it on GitHub, or mute the thread. [ { "@context": "http://schema.org", "@type": "EmailMessage", "potentialAction": { "@type": "ViewAction", "target": "https://github.com/PaulStoffregen/CoreMark/issues/1?email_source=notifications\u0026email_token=AABPZTG4FCZY34JIKVJDID3QIMWOJA5CNFSM4IKCBTT2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6EQB3Y#issuecomment-529072367", "url": "https://github.com/PaulStoffregen/CoreMark/issues/1?email_source=notifications\u0026email_token=AABPZTG4FCZY34JIKVJDID3QIMWOJA5CNFSM4IKCBTT2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6EQB3Y#issuecomment-529072367", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { "@type": "Organization", "name": "GitHub", "url": "https://github.com" } } ]

JovanEps commented 2 years ago

Hello Paul, one big thank you for shearing your CodeMark code. I used it to benchmark my Sipeed Maix Bit's - Kendryte K210 64bit MCU using Arduino IDE and all looks promising while Optimization level was Os,O1 and O2, but unfortunately with -O3 and -Ofast options code do not pass compiling. I get error massages like this one:

C:\Users\Jovan\Documents\Arduino\CoreMark-master-22\core_list_join.c: In function 'core_bench_list':
core_list_join.c:138:12: error: 'info.data16' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  list_data info;
            ^~~~
cc1.exe: some warnings being treated as errors
exit status 1
'info.data16' may be used uninitialized in this function [-Werror=maybe-uninitialized]_

Any idea how to fix it? Although I do get much better results then Dimitre on default settings @400MHz with -02 like:

--- O2 optimization , benchmark by JovanEps 
CoreMark Performance Benchmark

CoreMark measures how quickly your processor can manage linked
lists, compute matrix multiply, and execute state machine code.

Iterations/Sec is the main benchmark result, higher numbers are better
Running.... (usually requires 12 to 20 seconds)

2K performance run parameters for coremark.
CoreMark Size    : 666
Total ticks      : 13505
Total time (secs): 13.51
Iterations/Sec   : 814.51
Iterations       : 11000
Compiler version : GCC8.2.0
Compiler flags   : (flags unknown)
Memory location  : STACK
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 : 814.51 / GCC8.2.0 (flags unknown) / STACK

I miss the -O3 options, so any help or suggestion regarding that issue will be more then welcome :). I expect -O3 to give significantly better results because (for example) -O3 in Dhrystone 2.1 Benchmark is giving me huge 1318.21 MISP while -O2's options is giving just 937.93 MIPS, and that is a huge 40.5% difference.

Example >

------ Benchmark by JovanEps 
--O3 
Dhrystone Benchmark, Version 2.1 (Language: C)
Execution starts, 30000000 runs through Dhrystone

Execution ends
Microseconds for one run through Dhrystone: 0.43
Dhrystones per Second: 2316091.70
VAX MIPS rating = 1318.21

------ Benchmark by JovanEps 
--O2
Dhrystone Benchmark, Version 2.1 (Language: C)
Execution starts, 30000000 runs through Dhrystone

Execution ends
Microseconds for one run through Dhrystone: 0.61
Dhrystones per Second: 1647935.50
VAX MIPS rating = 937.93