So ware op Intel-cpu's analyseren
Welke programma’s maken er eigenlijk gebruik van de moderne processorfuncties en meerdere cpu-kernen? Met de ontwikkeltool VTune Amplifier kun je dat zonder enige programmeerervaring makkelijk zelf testen.
Populaire processors als de AMD Ryzen en Intel Core i halen hun maximale rekenkracht alleen als de software de vector-units van de cpukernen gebruikt. Om die te kunnen gebruiken, hebben de processorfabrikanten de x86-instructieset uitgebreid met de Advanced Vector Extension (AVE). Die doorontwikkeling van de 128-bit brede SSEinstructies (Streaming SIMD Extensions) versnelt het verwerken van grote datahoeveelheden zoals bij het renderen van 3D-scènes, bij wetenschappelijke berekeningen zoals het zoeken naar priemgetallen of bij video-encoding.
Intel heeft zijn processors sinds de tweede Core i-generatie Sandy Bridge uit 2011 uitgerust met AVX-eenheden. AMD volgde meteen in hetzelfde jaar met de FX-processors Bulldozer. Die en alle daar
opvolgende processors kunnen 256 bit brede instructies in een klokcyclus uitvoeren. Bij Intel Core i-4000 (Haswell) en AMD A-9000 (Carrizo) volgde een paar jaar later AVX2. De databreedte is daarbij onveranderd gebleven, maar naast de floatingpointoperaties zijn nu ook de meeste integer-instructies 256-bit en er werden ook FMA-operaties (Fused Multiply-Add) ingevoerd.
Met AVX-512 verdubbelde de performance in vergelijking met AVX2. Die units zitten tot nu toe echter alleen in de high-end desktopprocessors Core X (Skylake X), de serverchips Xeon SP (Skylake-SP en Cascade Lake-SP) en de nagelnieuwe mobiele processors Core i-10000 (Ice Lake U) met 10nmtechniek.
VTUNE AMPLIFIER INSTELLEN
In de meeste desktop-pc’s en notebooks zitten dus processors die minstens AVX ondersteunen. In de praktijk gebruikt echter slechts een klein deel van de programma’s die instructies. Met VTune Amplifier kun je achterhalen welke software die vectorinstructies gebruikt en zo ja, voor welk deel. Intel stelt die analysetool beschikbaar voor softwareontwikkelaars, zodat zij bottlenecks in hun software makkelijker kunnen vinden.
De tool meet bovendien de geheugendoorvoersnelheid van de onderzochte programma’s en hoeveel cpu-kernen er tijdens het uitvoeren eigenlijk belast werden.
We hebben onze tests onder Windows 10 gedaan. De huidige versie van VTune Amplifier 2019 Version 4 is amper 700 MB groot. De software zelf is gratis, maar voor het downloaden vraagt Intel wel naar een naam en e-mailadres. Het programma neemt geïnstalleerd op de systeemschijf ongeveer 1,4 GB in beslag.
Voor de echt grote logbestanden, die tijdens het analyseren worden aangemaakt en blijven groeien, moet je wel voldoende ruimte inplannen. Afhankelijk van het onderzochte programma kan de analysetool per seconde bijvoorbeeld 1 tot 15 MB aan data wegschrijven.
VTune Amplifier gaat uit van een processor van Intel. Je kunt de tool bij een AMD-cpu wel installeren, maar dan zal hij maar beperkt werken. De voor dit artikel relevante functie HPC Performance Characterization is bij de Ryzen-processors niet beschikbaar, dus hebben we onze metingen gedaan
op een van onze pc-bouwvoorstellen uit c’t 3 van dit jaar met een Core i-9600K [1].
Na het starten moet je eerst het verzamelen van data aanpassen bij ‘Configure Analysis’. Omdat het te onderzoeken programma op dezelfde computer draait als VTune Amplifier, is bij het keuzeveld ‘WHERE’ ‘Local Host’ de juiste optie. Daarnaast kun je bijvoorbeeld ook de performance afvangen van Linux-software via een remote verbinding via SSH met een andere computer.
VTune Amplifier biedt onder het punt ‘ HOW’ de mogelijkheid verschillende accenten voor de analyse in te stellen. Daarbij kun je bijvoorbeeld onderzoeken hoe goed bepaalde software van multi-threading profiteert of hoe sterk de geheugeninterface dan wel de GPU belast wordt. We hebben HPC Performance Characterization gebruikt, wat er onder meer uitsluitsel over geeft welke moderne instructiesetuitbreidingen zoals AVX en AVX2 gebruikt worden.
Je hebt twee verschillende mogelijkheden om het te onderzoeken programma te selecteren: aan de ene kant kun je bij ‘WHAT’ met behulp van de optie ‘Launch Application’ aangeven welke applicatie gestart moet worden, en als alternatief kun je al draaiende programma’s monitoren door het opgeven van de proces-ID (PID). Dat identificatienummer kun je vinden bij het Taakbeheer van Windows op het tabblad Details. Dat is vooral handig als je alleen maar bepaalde acties wilt bekijken en daarbij dan niet tegelijk ook het hele starten van het programma wilt meenemen.
Met een druk op de startknop in VTune Amplifier begint de meetsessie. Die eindigt automatisch als het onderzochte programma afgesloten wordt of de vooraf ingestelde logbestandslimiet van 1000 MB wordt overschreden. Je kunt het loggen natuurlijk ook handmatig stoppen in VTune Amplifier.
WEINIG AVX, DES TE MEER SSE
Het analyseren gebeurt vervolgens automatisch. In het overzicht levert VTune Amplifier de belangrijkste kengetallen zoals de logduur, de behaalde performance in GFLOP’s bij single- en double-precision floatingpoint-operaties, cpu-belasting, geheugensnelheid en een overzicht van welke vectoreenheden van de cpu zoals SSE, SSE2 en AVX daadwerkelijk gebuikt werden. Op het tabblad ‘Bottom-up’ kom je dan bij de details: daar laat VTune Amplifier die informatie dan voor elke afzonderlijke functieaanroep zien.
Bij sommige programma’s hebben we dat als voorbeeld onderzocht. Ideale voorbeelden daarvan zijn de hoog geoptimaliseerde benchmark- en belastingprogramma’s als Flops en Prime95, die onder volledige belasting bijna tot aan de 100 procent AVX2- en FMA-instructies gebruiken. Bij renderingprogramma’s als Blender 2.79b, Cinema 4D en de daarvan afgeleide benchmark Cinebench R20 bedraagt het AVX-aandeel ongeveer 20 procent. De videoconverter Handbrake, de fotosoftware DXO en de browsers Chrome, Edge en Firefox gebruiken AVX slechts in kleine doseringen, net zoals 3D-games als Assassin’s Creed Odyssey en Metro Exodus. In plaats daarvan gebruiken zij overwegend de oudere instructiesetuitbreidingen als SSE en SSE2. Shooters zoals Playerunknown’s Battlegrounds (PUBG) en de videoplayers ‘Films en tv’ en VLC beperken zich daarbij tot SSE2.
Bij software voor desktopcomputers is het percentage van programma’s dat hoog geoptimaliseerde AVX-code gebruikt nog erg te overzien. Het wordt nog voornamelijk gebruikt door veeleisende professionele applicaties als rendering of HPC-taken, die bovendien goed te parallelliseren zijn en profiteren van veel kernen.
De software-ontwikkelaars verdienen echter ook enige krediet: de meeste office-applicaties verwerken bijvoorbeeld in verhouding maar weinig datahoeveelheden. Dan is de extra moeite die gedaan moet worden om met AVX daarbij hier en daar een paar milliseconden op de rekentijd te winnen niet lonend. Bovendien is het een doel van ontwikkelaars om hun programma’s op zoveel mogelijk systemen onbeperkt te kunnen laten draaien.
Bij goedkope processors uit de series Celeron en Pentium Gold wordt AVX door Intel nog steeds uitgeschakeld, ook al zijn de rekenunits daarvoor wel aanwezig. Met VTune Amplifier kun je zelf echter binnen een paar minuten uitproberen hoe het er voorstaat met de door jou gebruikte programma’s en games.