Page 3 of 10

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 8:31 am
by Pito
Nope. No other special settings.
1. the MFLOPS numbers we get are still a bit high to my taste.. But it could be the gcc makes miracles.. I would expect MFLOPs at 1/3 or 1/4 of clock. I got 82MFlops at 168MHz, that is really unbelievable high..
2. the -O3 is not good as it optimizes off the N3 measurement (seee the result).
I would better stay with -O2
3, The FPU is on, it seems, based on the results.
4, there is a link with hundreds of results off this test, you may see F407/F411 outperforms Pentium/Cyrix/AMD chips from 90ties.. :shock:

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 8:36 am
by Bingo600
W. STM Core (untouched settings) and a F4011 i get -O2 : 40 30 30
I don't know the clock settings (yet)

Seems a bit more realistic , the FPU doc said all FLOPS (Except divide) was single cycle on a M4.
But as you mentioned .. We also have to load/save the results ... Takes cycles too.

How do you know your F407 runs 168MHz ??


/Bingo

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 8:45 am
by Pito
F407 is usually set to 168MHz, so it is my assumption the STM core sets that.
You clock looks like 72MHz.

The FPU does in 1 or 3 or 14 cycles, 2+ cycles is load/store, I think it has got some combined/fused operations like MAC (3 cycles)..
Not sure such FPU optimised operations are available off gcc, there are special CMSIS libraries available for DSP and FPU advanced topics, see below.
DSP+FPU intro:
https://www.youtube.com/watch?v=tGMsLvz7bBY

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 9:45 am
by Bingo600
ST Core

Just dug out an original STM F407-Discovery (Old board)

-Os

Code: Select all

##########################################
Single Precision C Whetstone Benchmark
Calibrate
       0.14 Seconds          1   Passes (x 100)
       0.71 Seconds          5   Passes (x 100)
       3.57 Seconds         25   Passes (x 100)

Use 70  passes (x 100)

          Single Precision C/C++ Whetstone Benchmark
Loop content                  Result              MFLOPS      MOPS   Seconds

N1 floating point     -1.12475013732910156        79.059              0.017
N2 floating point     -1.12274742126464844        57.366              0.164
N3 if then else        1.00000000000000000                  83.276    0.087
N4 fixed point        12.00000000000000000                 253.449    0.087
N5 sin,cos etc.        0.49909299612045288                   1.284    4.537
N6 floating point      0.99999982118606567        15.739              2.399
N7 assignments         3.00000000000000000                  13.617    0.950
N8 exp,sqrt etc.       0.75110614299774170                   1.492    1.745

MWIPS                                             70.098              9.986

-O2

Code: Select all

##########################################
Single Precision C Whetstone Benchmark
Calibrate
       0.10 Seconds          1   Passes (x 100)
       0.51 Seconds          5   Passes (x 100)
       2.57 Seconds         25   Passes (x 100)

Use 97  passes (x 100)

          Single Precision C/C++ Whetstone Benchmark
Loop content                  Result              MFLOPS      MOPS   Seconds

N1 floating point     -1.12475013732910156        81.684              0.023
N2 floating point     -1.12274742126464844        57.685              0.226
N3 if then else        1.00000000000000000                 167.325    0.060
N4 fixed point        12.00000000000000000                 315.000    0.097
N5 sin,cos etc.        0.49909299612045288                   1.292    6.247
N6 floating point      0.99999982118606567        59.255              0.883
N7 assignments         3.00000000000000000                  71.990    0.249
N8 exp,sqrt etc.       0.75110614299774170                   1.654    2.182

MWIPS                                             97.323              9.967


-O3

Code: Select all

##########################################
Single Precision C Whetstone Benchmark
Calibrate
       0.10 Seconds          1   Passes (x 100)
       0.50 Seconds          5   Passes (x 100)
       2.49 Seconds         25   Passes (x 100)

Use 100  passes (x 100)

          Single Precision C/C++ Whetstone Benchmark
Loop content                  Result              MFLOPS      MOPS   Seconds

N1 floating point     -1.12475013732910156        83.843              0.023
N2 floating point     -1.12274742126464844        64.306              0.209
N3 if then else        1.00000000000000000                   0.000    0.000
N4 fixed point        12.00000000000000000                 362.069    0.087
N5 sin,cos etc.        0.49909299612045288                   1.330    6.255
N6 floating point      0.99999982118606567        59.275              0.910
N7 assignments         3.00000000000000000                  83.620    0.221
N8 exp,sqrt etc.       0.75110614299774170                   1.655    2.248

MWIPS                                            100.473              9.953

Had to put a delay(3000); , after the last SerialUSB.printf("%39.3f%19.3f\n\n", mwips, TimeUsed);
Else it didn't show ... It's prob bad karma to have an empty loop()

/Bingo

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 9:51 am
by Bingo600
@Pito

Your (-O2) N2 is quite different from mine
viewtopic.php?p=891#p891

You get 86 , i get 81 :o

/Bingo

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 9:52 am
by Pito
What device have you selected for the Discovery F407?
Try with BlackF407ZE

It could be the boards have different gcc setting..

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 10:03 am
by Bingo600
I selected Disco
Disco.png
Disco.png (49.61 KiB) Viewed 5392 times
Hmm the forum doesn't like Colons in the upload filename
Menu_2020012608:18:35.png is flagged as invalid :?

/Bingo

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 10:07 am
by Bingo600
I have a Black F407
https://www.aliexpress.com/item/4000103742703.html

How do you upload to that one ?
DFU or SWD ??

I t has some buttons : (Left) RST + K_UP - (Right) KD + ??? (bad silkscreen)
I tried RST + K_UP (thought upload) .. But it doesnt go into DFU mode.
Edit: Ahh K_UP = Wakeup


I'm lazy - SWD means read pin-doc :oops:

/Bingo

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 10:14 am
by Bingo600
407VE.png
407VE.png (57.37 KiB) Viewed 5390 times
-O2

Code: Select all

##########################################
Single Precision C Whetstone Benchmark
Calibrate
       0.10 Seconds          1   Passes (x 100)
       0.51 Seconds          5   Passes (x 100)
       2.57 Seconds         25   Passes (x 100)

Use 97  passes (x 100)

          Single Precision C/C++ Whetstone Benchmark
Loop content                  Result              MFLOPS      MOPS   Seconds

N1 floating point     -1.12475013732910156        81.327              0.023
N2 floating point     -1.12274742126464844        57.431              0.227
N3 if then else        1.00000000000000000                 167.325    0.060
N4 fixed point        12.00000000000000000                 315.000    0.097
N5 sin,cos etc.        0.49909299612045288                   1.292    6.246
N6 floating point      0.99999982118606567        59.255              0.883
N7 assignments         3.00000000000000000                  71.702    0.250
N8 exp,sqrt etc.       0.75110614299774170                   1.654    2.181

MWIPS                                             97.322              9.967

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 10:20 am
by Bingo600
F407ZE.png
F407ZE.png (57.3 KiB) Viewed 5389 times
F407ZE -O2

Code: Select all

##########################################
Single Precision C Whetstone Benchmark
Calibrate
       0.10 Seconds          1   Passes (x 100)
       0.51 Seconds          5   Passes (x 100)
       2.57 Seconds         25   Passes (x 100)

Use 97  passes (x 100)

          Single Precision C/C++ Whetstone Benchmark
Loop content                  Result              MFLOPS      MOPS   Seconds

N1 floating point     -1.12475013732910156        81.327              0.023
N2 floating point     -1.12274742126464844        57.685              0.226
N3 if then else        1.00000000000000000                 167.325    0.060
N4 fixed point        12.00000000000000000                 315.000    0.097
N5 sin,cos etc.        0.49909299612045288                   1.292    6.246
N6 floating point      0.99999982118606567        59.255              0.883
N7 assignments         3.00000000000000000                  71.990    0.249
N8 exp,sqrt etc.       0.75110614299774170                   1.654    2.182

MWIPS                                             97.332              9.966