High-Performance FP16 General Matrix Multiplication on NVIDIA Ada Lovelace via CUTLASS and WMMA: A Benchmark and Pipeline-Depth Analysis
Dit artikel benchmarkt de FP16 GEMM-prestaties op NVIDIA's Ada Lovelace RTX 4060 over cuBLAS, CUTLASS en aangepaste WMMA-implementaties, waarbij wordt onthuld dat een pipeline-diepte van drie met specifieke tile-geometrie 52,7% van de piekdoorvoer bereikt en aantoont dat de druk op het gedeelde geheugen, in plaats van de pipeline-diepte, de primaire bottleneck is die verdere optimalisatie beperkt.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je voor dat je een supersnelle keuken hebt (een GPU) met een team van gespecialiseerde chefs die Tensor Cores worden genoemd. Deze chefs zijn ongelooflijk snel in het hakken en mengen van ingrediënten (matrixvermenigvuldiging) voor een gigantisch feestmaal (deep learning). De keuken op de nieuwe "Ada Lovelace"-kookplaat (een RTX 4060 grafische kaart) is theoretisch in staat om 60,55 TFLOPS te serveren (dat is 60,55 biljoen rekenoperaties per seconde).
Maar er is een addertje onder het gras: alleen omdat de chefs zó snel kunnen hakken, betekent niet dat ze ook daadwerkelijk zo snel hakken. Ze moeten vaak wachten tot de ingrediënten uit de voorraadkast worden geleverd.
Het Grote Experiment: Hoe houd je de chefs bezig
De onderzoekers wilden ontdekken wat de beste manier is om de keuken te organiseren, zodat de chefs nooit stoppen met hakken. Ze testten drie verschillende manieren om de keuken te laten draaien:
- De Black Box (cuBLAS): Een kant-en-klaar, gesloten recept van NVIDIA dat meestal goed werkt, maar waarbij je de details niet kunt aanpassen.
- Het Open Blauwdruk (CUTLASS): Een flexibele, open-source toolkit waarmee je je eigen keukenindeling vanaf nul kunt bouwen.
- De DIY-aanpak (WMMA): Een op maat gemaakte keuken waarin je elke beweging van de chefs zelf controleert, maar die veel moeilijker te bouwen is.
Ze stelden een enorme kookuitdaging op met ingrediënten van de grootte 8192 × 8192 en testten verschillende "pipeline-dieptes". Denk bij pipeline-diepte aan het aantal ingrediënten-trays dat de keuken gereed houdt.
- Pipeline-diepte 2: Slechts 2 trays gereed.
- Pipeline-diepte 3: 3 trays gereed.
- Pipeline-diepte 4: 4 trays gereed.
De algemene wijsheid (en een simpel wiskundig model) suggereerde dat meer trays = meer snelheid. De logica was: "Als we meer trays hebben, zullen de chefs nooit zonder ingrediënten komen te zitten, dus zullen ze sneller werken."
De Verrassing: Meer is niet altijd Beter
De onderzoekers maten de snelheid, en dit is wat ze vonden:
- Diepte 2: De keuken draaide op 25,6 TFLOPS. De chefs stonden te veel rond te hangen te wachten.
- Diepte 3: De keuken versnelde naar 31,9 TFLOPS (wat 52,7% is van het theoretisch maximum). Dit was het ideale punt (the sweet spot)!
- Diepte 4: De keuken werd zelfs langzamer naar 31,1 TFLOPS.
Dit is de belangrijkste bevinding: Het toevoegen van een vierde tray hielp niet; het maakte het juist slechter. Het simpele wiskundige model voorspelde dat de snelheid naar 35,4 TFLOPS zou springen, maar dat gebeurde niet. Het model zat er 13,8% naast.
Waarom werkte het toevoegen van een tray averechts?
Het paper legt uit dat de keuken beperkte ruimte heeft. Toen ze de 4e tray toevoegden (waardoor het gebruik van het "Shared Memory" toenam naar 96 KB), dwong dit de keuken om het aantal kookteams (threadblocks) die tegelijkertijd konden werken te verminderen.
- Met 3 trays kon de keuken 2 teams van chefs op elke kookplaat passen.
- Met 4 trays kon de keuken slechts 1 team passen.
Hoewel de ene groep chefs meer ingrediënten had, moesten ze langer wachten omdat er minder teams waren om in te wisselen wanneer één team even vastliep. De keuken werd "overvol" met ingrediënten maar "leeg" aan werkers. De onderzoekers maten dat de occupancy (hoeveel teams er werken) daalde, en dat de chefs meer "registers" (hun persoonlijke notitieblokjes) moesten gebruiken, wat hen ook vertraagde.
De Winnaars en Verliezers
- De Winnaar: De CUTLASS toolkit met 3 trays en een specifieke tile-grootte van 256 × 128. Deze bereikte 31,9 TFLOPS. Dit was zo goed dat het de standaard "Black Box" (cuBLAS) met een piepklein, bijna onmeetbaar verschil van 1,3% versloeg (de auteurs zeggen dat dit waarschijnlijk gewoon ruis is, maar het bewijst dat de open blauwdruk de gesloten versie kan evenaren).
- De DIY Runner-up: De op maat gemaakte WMMA kernel (de volledig DIY-keuken) haalde 25,1 TFLOPS op een iets kleinere test. Deze was langzamer omdat het geen gebruik maakte van de slimme "double buffering"-trucs om het leveren van ingrediënten tegelijkertijd met het koken te laten overlappen.
- De Verliezer: Het idee dat "meer pipeline-diepte altijd beter is." Het paper sluit dit specif kind voor deze specifieke hardware expliciet uit.
Hoe zeker zijn ze?
De auteurs zijn zeer zelfverzekerd over deze cijfers omdat ze ze direct op de hardware hebben gemeten door de test 10 keer uit te voeren en de resultaten te middelen. Ze hebben zelfs hun wiskunde gecontroleerd tegenover een ingebouwde NVIDIA-tool (de profiler) en ontdekten dat hun aangepaste code er perfect mee overeenkwam.
Ze geven echter ook toe dat ze een paar dingen niet hebben bewezen:
- Ze hebben alleen één specifieke probleemgrootte getest (8192). Ze weten niet of de regel "3 trays is het beste" ook geldt voor kleinere of vreemd gevormde problemen.
- Ze konden geen pipeline-dieptes hoger dan 4 testen omdat de keuken simpelweg de ruimte tekortkwam (geheugen).
- Ze moesten hun tests op Windows uitvoeren, waar een driver-foutje ervoor zorgde dat ze hun aangepaste code en de standaard code niet in exact dezelfde run konden vergelijken (hoewel ze dit wel in aparte runs deden).
De Conclusie
Als je het meeste uit een consumentengrafische kaart zoals de RTX 4060 wilt halen voor wiskundig zware taken, voeg dan niet zomaar steeds meer buffers toe. Er is een "Goldilocks"-zone (het perfecte midden). In dit geval was 3 fasen van voorbereiding perfect. Naar 4 fasen gaan maakte de keuken te krap, waardoor iedereen vertraagde. Wanneer je te gul bent met geheugen, krijg je 31,1 TFLOPS.
De onderzoekers hebben al hun code als open-source vrijgegeven, zodat iedereen kan proberen een eigen keuken te bouwen en kan kijken of ze het record van 31,9 TFLOPS kunnen verbreken. Ze suggereren dat toekomstig werk zich moet richten op andere probleemgroottes en Linux moet gebruiken voor nog schonere data, maar voor nu hebben ze aangetoond dat 31,9 TFLOPS de huidige piek is voor deze setup, en dat 31,1 TFLOPS is wat er gebeurt als je te hebzuchtig bent met geheugen.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.