This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hello,
I have TMDS64GPEVM evm board and i am using gnu v9.2.1.
I was trying to benchmark A53 SMP with dhrystones example.
There is table of result at the bottom of the link
i wondered how theese results calculated.
in dhry.c there is formula but result is not the same as i calculated.
*dhryPerSec = ( numThreads * numIterations * Mic_secs_Per_Second) / totalTime;
numThreads -> 1
numIterations -> 30000000
Mic_secs_Per_Second -> 1000000
totalTime -> 3112585 (for 1 thread)
as a result dhryPerSec gives me 1266 as link specified.
calculation by hand gives me 9,638,291.
i think there is overflow at ( numThreads * numIterations * Mic_secs_Per_Second).
the result of multiply should be stored in uint64_t.
it seem like stored in 32 bit int.
i am not sure, am i miscalculationg or something is wrong with example.
All A53's score about 3DMIPS/MHz with a modern compiler. We run the score in Linux and documented in the performance guide https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/latest/exports/docs/devices/AM64X/RT_Linux_Performance_Guide.html#dhrystone (looks like this release it is 2.9DMIPS/MHz, I see it vary from 2.90 to 3.05). This is part of the Linux filesystem, in /usr/bin/runDhrystone. This is what we run in nightly tests and is the base for what we document in the performance guide.
I was trying to benchmark A53 SMP with dhrystones example.
There is table of result at the bottom of the link
From the above it looks like you are trying to run A53 freeRTOS SMP? The link (https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/09_00_00_35/exports/docs/api_guide_am64x/SMP_FREERTOS_GUIDE.html ) is to an experimental demo of running freeRTOS SMP. The score looks like is not as good as one would expect for A53.
i think there is overflow at ( numThreads * numIterations * Mic_secs_Per_Second).
the result of multiply should be stored in uint64_t.
Using 32-bit unsigned integer looks like a bug to to me as well. Most implementations, including what you can see at https://github.com/Keith-S-Thompson/dhrystone and TI SDKs in Linux use a float type for this to avoid overflow. As a reminder the The Dhrystone benchmark itself is very old (from the 1980s) and without any official or certification body, so there is no golden reference.
I'll file a bug on the A53 demo Dhrystone in MCU+ SDK.
Pekka