Page 5 of 10

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 12:25 pm
by Bingo600
ST Core - F411@96MHz , ART enabled , -O3

Code: Select all

##########################################
Single Precision C Whetstone Benchmark
Calibrate
       0.15 Seconds          1   Passes (x 100)
       0.75 Seconds          5   Passes (x 100)
       3.76 Seconds         25   Passes (x 100)

Use 66  passes (x 100)

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

N1 floating point     -1.12475013732910156        48.000              0.026
N2 floating point     -1.12274742126464844        36.807              0.241
N3 if then else        1.00000000000000000                   0.000    0.000
N4 fixed point        12.00000000000000000                 205.842    0.101
N5 sin,cos etc.        0.49909299612045288                   0.923    5.947
N6 floating point      0.99999982118606567        33.873              1.051
N7 assignments         3.00000000000000000                  47.831    0.255
N8 exp,sqrt etc.       0.75110614299774170                   1.069    2.296

MWIPS                                             66.550              9.917


-O2

Code: Select all

##########################################
Single Precision C Whetstone Benchmark
Calibrate
       0.15 Seconds          1   Passes (x 100)
       0.77 Seconds          5   Passes (x 100)
       3.85 Seconds         25   Passes (x 100)

Use 64  passes (x 100)

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

N1 floating point     -1.12475013732910156        46.545              0.026
N2 floating point     -1.12274742126464844        33.340              0.258
N3 if then else        1.00000000000000000                  96.000    0.069
N4 fixed point        12.00000000000000000                 180.001    0.112
N5 sin,cos etc.        0.49909299612045288                   0.915    5.817
N6 floating point      0.99999982118606567        33.878              1.019
N7 assignments         3.00000000000000000                  41.210    0.287
N8 exp,sqrt etc.       0.75110614299774170                   1.051    2.265

MWIPS                                             64.952              9.853

-Os

Code: Select all

##########################################
Single Precision C Whetstone Benchmark
Calibrate
       0.22 Seconds          1   Passes (x 100)
       1.09 Seconds          5   Passes (x 100)
       5.44 Seconds         25   Passes (x 100)

Use 45  passes (x 100)

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

N1 floating point     -1.12475013732910156        45.236              0.019
N2 floating point     -1.12274742126464844        33.231              0.182
N3 if then else        1.00000000000000000                  48.015    0.097
N4 fixed point        12.00000000000000000                 144.642    0.098
N5 sin,cos etc.        0.49909299612045288                   0.905    4.138
N6 floating point      0.99999982118606567         9.594              2.530
N7 assignments         3.00000000000000000                   8.468    0.982
N8 exp,sqrt etc.       0.75110614299774170                   0.954    1.754

MWIPS                                             45.918              9.800



Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 12:26 pm
by Pito
I do not understand that piece of code.
Simply enable the ART and that's it.

The Chrom-ART is not available on all devices - but that is about DMA blobs manipulation.

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 12:28 pm
by Bingo600
To me it seems like "Really old F4, pre revZ" doesn't have ART

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 12:33 pm
by Pito
So with the ART enabled you got lower numbers??
There is an issue somewhere..

It looks like the ART function is reversed :)

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 12:36 pm
by Bingo600
Pito wrote: Sun Jan 26, 2020 12:33 pm So with the ART enabled you got lower numbers??
There is an issue somewhere..

It looks like the ART function is reversed :)
I goofed (erased the -O3 nubers) ... You read the -O2 numbers , read again :oops:
Will do -Os now
-Os done

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 12:43 pm
by Pito
It looks to me the STM experts have to look at it. With ART enabled the 411 shows 2x lower MWIPS.
:?

There could be a doublecheck - to run it with libmable core - ag123 did above and posted the code, even the print is a crap at least you may to see the 3 MFLOPS and final MWIPS.
It could be there is a bug in gcc settings vs. HAL - ART/FPU/..

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 1:41 pm
by Bingo600
Naah ...

The F411@84MHz - No ART is here
viewtopic.php?p=899#p899

The 100 MWIP was with the old whetstone (ag123) (unreliable)
viewtopic.php?p=885#p885

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 1:47 pm
by Bingo600
See further down

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 2:07 pm
by fpiSTM
@Bingo600

The blackpill F411 is ongoing by the community.
For the ART, well, I guess you could easily enable it using HAL/LL or direct access register.

Re: dhrystone and whetstone benchmarks

Posted: Sun Jan 26, 2020 2:08 pm
by Bingo600
fpiSTM wrote: Sun Jan 26, 2020 2:07 pm @Bingo600

The blackpill F411 is ongoing by the community.
What does that mean ??
That the ST core won't support it ?

I just got it to work
F411CE.png
F411CE.png (63.62 KiB) Viewed 5410 times

Code: Select all

##########################################
Single Precision C Whetstone Benchmark
Calibrate
       0.15 Seconds          1   Passes (x 100)
       0.77 Seconds          5   Passes (x 100)
       3.85 Seconds         25   Passes (x 100)

Use 64  passes (x 100)

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

N1 floating point     -1.12475013732910156        46.545              0.026
N2 floating point     -1.12274742126464844        33.340              0.258
N3 if then else        1.00000000000000000                  96.000    0.069
N4 fixed point        12.00000000000000000                 180.001    0.112
N5 sin,cos etc.        0.49909299612045288                   0.915    5.817
N6 floating point      0.99999982118606567        33.878              1.019
N7 assignments         3.00000000000000000                  41.210    0.287
N8 exp,sqrt etc.       0.75110614299774170                   1.051    2.265

MWIPS                                             64.952              9.853


The attached archive , contains a patch against current git-master (for boards.txt)
The new boards.txt - Goes in the .arduino15/packages/STM32/hardware/stm32/1.8.0 - directory
And the new PILL_F411XX - Goes in the .arduino15/packages/STM32/hardware/stm32/1.8.0/variants directory

Strangely the git -diff didn't pickup the new variant directory , but my git experience isn't that advanced

/Bingo