In het artikel Professioneel benchmarken (c’t 9/2020, p.66) gebruiken jullie de tool Flops. Hoe kan ik controleren of mijn processor-prestaties ook maximaal zijn?
De tool Flops, die verkrijgbaar is voor Windows en voor Linux, meet de floatingpoint-prestaties van desktop-, laptop- en serverprocessors met verschillende moderne instructiesetuitbreidingen zoals AVX (Advanced Vector Extensions) en FMA3 (Fused multiply-add met drie operators). Typisch worden bij cpu’s de prestaties vergeleken op basis van double-precision met 64-bit (FP64, Double Precision/ DP) in de eenheid Flops (Floating Point Operations Per Second).
Floating point performance berekenen
Die waarde kan worden geverifieerd omdat de maximale floatingpoint-performance van een cpu eenvoudig kan worden berekend. De formule daarvoor is: aantal processorkernen × klokfrequentie in GHz × cpu-instructies per klokcyclus = rekenkracht in gigaflops. Het aantal kernen verwijst naar de fysieke kernen – SMT en Hyperthreading worden niet meegeteld. De kloksnelheid van moderne cpu’s is echter niet zo eenvoudig te bepalen omdat die kan schommelen door de turbo, waarbij de processor-prestaties maximaal zijn, maar die ook afhankelijk van de belasting van de verwerkingseenheden en het beschikbare TDP kan variëren.
Tools zoals CPU-Z en HWInfo64 tonen de actuele kloksnelheid, en de weergave van Taakbeheer van Windows 10 is daar niet betrouwbaar genoeg voor. Bij een Ryzen 9 3900X met twaalf cores kwam de kloksnelheid bij volle belasting met AVX2/FMA3 ongeveer op 4,15 GHz uit.
Processor architectuur
Het aantal instructies per klokcyclus bepaalt de architectuur: de twee 256 bit brede FMA-eenheden van een Zen 2-kern kunnen elk twee operations uitvoeren, wat resulteert in een totaal van 16 FP64-bewerkingen per klokcyclus. Die waarde geldt ook voor Intels Core i-4000 tot Core i-10000 serie desktop- en laptop-cpu’s, en voor de Core i-1000G Ice Lake mobiele processors. Die laatste hebben slechts één FMA-unit, maar die kan via AVX-512 twee keer zo brede instructies uitvoeren. De Core X-cpu’s halen met twee van dergelijke eenheden 32 flops per klokcyclus. Ryzen-processors uit de eerste twee generaties (Zen, Zen+) halen slechts 8 FP64-operaties.
Door de 12 kernen van de Ryzen 3900X te vermenigvuldigen met 4,15 GHz-kloksnelheid en 16 bewerkingen per klokcyclus, kom je op 796,8 GFlops uit, wat vrij dicht in de buurt komt van onze meting van 788 miljard floatingpoint-operations per seconde.
(Deze tekst is eerder verschenen in c’t 1-2/2021, p.140)
Wil je op de hoogte blijven van het laatste IT-nieuws en de nieuwste online-artikelen? Meld je dan hier aan voor onze nieuwsbrief: