Long primes- vilken CPU är snabbast?

Permalänk
Medlem

Long primes- vilken CPU är snabbast?

På rosettacode.org finns bla programmet long_primes.cpp.
Long_primes.cpp

De handlar om primtal(enkeltrådat). Mycket intressant är det om man byter från 32 till 64 bitar i RPi4 (prestanda ökar med en faktor 3).
Vem är snabbast av dessa på 64 bitar:
RPi4 på 1,5 GHz, Core i7-8700 på 4,3 GHz eller Goldmont Plus på 2,7 GHz?
Den första borde bli jumbo- normalt är 8700 4-5 ggr snabbare på varje tråd.
Även goldmont+ borde få stryk!

CPU optimering storlek tid (sek)
RPi4 ingen 64 000 4,1
RPi4 -O3 64 000 2,5
RPi4 ingen 128 000 15,3
RPi4 -O3 128 000 9,1
RPi4 ingen 256 000 57,7
RPi4 -O3 256 000 34,2

8700 ingen 64 000 2,3
8700 -O3 64 000 2,0
8700 ingen 128 000 8,5
8700 -O3 128 000 7,3
8700 ingen 256 000 31,9
8700 -O3 256 000 27,8

Goldmont+ ingen 64 000 2,6
Goldmont+ -O3 64 000 1,8
Goldmont+ ingen 128 000 9,6
Goldmont+ -O3 128 000 6,9
Goldmont+ ingen 256 000 36,9
Goldmont+ -O3 256 000 25,9

Varför blir det så här?
Ser vi på cache spelar säkert L2 och L3 in.
RPi4 har 1 M L2, 8700 har 256 kL2+12 m L3 och Goldmont+ har 4 M L2

Vore intressant att köra alla på 1,5 GHz- om det går?

RPi med 32 bitar är inte så imponerande:

CPU optimering storlek tid (sek)
RPi4 ingen 128 000 35,8
RPi4 -O3 128 000 30,8

Permalänk

Kolla på CPU simulatorer, de kan säkert hjälpa dig hitta svar på dina frågor. https://doi.org/10.1109/ACCESS.2019.2917698 läs den här t.ex. om du vill få en överblick över vilka sorts simulatorer det finns. Eftersom de simulerar CPUer så kan du ändra storleken på de olika cache nivåerna och se hur det ändrar prestandan osv.

Permalänk
Medlem
Skrivet av pine-orange:

Kolla på CPU simulatorer, de kan säkert hjälpa dig hitta svar på dina frågor. https://doi.org/10.1109/ACCESS.2019.2917698 läs den här t.ex. om du vill få en överblick över vilka sorts simulatorer det finns. Eftersom de simulerar CPUer så kan du ändra storleken på de olika cache nivåerna och se hur det ändrar prestandan osv.

Tack för länken!
Kanske är det lättast i detta fall att använda ett program Valgrind för Linux. Där finns ett verktyg Cachegrind som borde avslöja en del.
Valgrind manual