GPU-versnelling in PixInsight: CUDA-configuratie en prestatiebenchmarks
Dit artikel is samengesteld uit notities die tussen 2021 en 2024 zijn gemaakt. Sommige tools, CUDA-versies en configuratiestappen zijn intussen bijgewerkt (met name ondersteunt PixInsight in zijn latere versies inmiddels een configuratie met één klik); houd bij het lezen dus rekening met de tijdscontext.
Sinds neurale-netwerkprocessen zoals sterren verwijderen, AI-ruisonderdrukking en AI-verscherping een voor een hun weg naar de PixInsight-workflow hebben gevonden, is “moet ik mijn bewerkingscomputer een videokaart geven” een heel praktische vraag geworden. In dit artikel bundel ik mijn test- en configuratie-ervaringen met GPU-versnelling van de afgelopen jaren, waaronder waarom u een GPU wilt, hoe u die inschakelt, hoeveel tijd het bespaart en hoe de verschillende platformen van elkaar verschillen.
Waarom u GPU-versnelling nodig hebt
De processen in PixInsight die op dit moment GPU-versnelling ondersteunen, zijn vooral degene die op neurale-netwerkberekeningen leunen: StarNet++, StarNet 2, StarXTerminator (SXT), NoiseXTerminator (NXT) en BlurXTerminator (BXT). Draait u deze processen alleen op de CPU, dan lopen de wachttijden flink op, vooral naarmate de beeldgrootte toeneemt.
Een voorbeeld dat het echt duidelijk maakt, is het verwijderen van sterren in batch: bij het verwerken van kometen met de nieuwere methode moet u in de lineaire toestand van elk nog niet geïntegreerd kometenframe afzonderlijk de sterren verwijderen. Bij ruim tweehonderd frames van 9 megapixel duurt dat met een RTX 3060 Laptop-versie ter versnelling maar zo’n 20 seconden per frame; vertrouwt u alleen op de CPU, dan doet de totale tijd u aan uw levenskeuzes twijfelen.
Zodra u GPU-versnelling eenmaal hebt gebruikt, is er eigenlijk geen weg meer terug.
De eerste keer dat ik CUDA succesvol inschakelde
Eind 2021, nadat ik uren had besteed aan het testen van verschillende versies van NVIDIA CUDA, cuDNN en TensorFlow, lukte het me eindelijk om de GPU (NVIDIA RTX 3060) in te zetten bij het verwijderen van sterren:
- StarXTerminator had maar ongeveer 15 seconden nodig;
- StarNet++ minder dan 10 seconden;
om de sterren uit één frame te verwijderen. Vergeleken met alleen de CPU was het verschil enorm.

Hoe u het inschakelt: van handmatige configuratie tot installatie met één klik
De vroegere aanpak: bestanden handmatig plaatsen
In de begindagen moest u om GPU-versnelling in te schakelen zelf de bijpassende versies van CUDA, cuDNN, TensorFlow enzovoort downloaden en op de juiste plek zetten. De drempel daarvoor was niet laag, en bovendien gold het alleen voor gebruikers op Windows met PixInsight geïnstalleerd en een NVIDIA-videokaart met CUDA-cores. Gebruikers van een AMD-videokaart (inclusief geïntegreerde graphics) slaan dit gerust helemaal over, en Linux-gebruikers moeten de equivalenten zelf naast elkaar leggen. Zodra het was ingesteld, kon het de uitvoeringssnelheid van StarNet, StarNet++, SXT, NXT en BXT aanzienlijk verhogen.
Het vervelende was dat u deze bestanden bij elke update van PixInsight vaak opnieuw moest plaatsen, iets wat u makkelijk vergat.
De huidige aanpak: PI’s ingebouwde configuratie met één klik
Begin 2024 was de situatie sterk verbeterd: nu voegt u in PixInsight alleen nog een update-repository toe en kunt u GPU-versnelling meteen gebruiken, zonder extra installatie of configuratie. Dit is de aanpak die RC (Russell Croman), de maker van de XTerminator-serie, op het PixInsight-forum heeft aangereikt. Op dat moment werkte deze functie alleen op Windows, terwijl de Linux-versie nog in ontwikkeling was; macOS had dit soort configuratie sowieso nooit nodig.
Hoe u controleert of de GPU echt aan het rekenen is
Wilt u weten of de GPU zijn steentje bijdraagt tijdens het verwijderen van sterren of het onderdrukken van ruis, doe dan op Windows 10/11 het volgende: open Taakbeheer, ga naar het tabblad “GPU” en kies de subweergave “CUDA”. Ziet u dat de CUDA-cores een belasting vertonen, dan wordt de GPU gebruikt (bij het draaien van SXT ziet u de CUDA-cores bijvoorbeeld tot 87% belasting schieten); vertonen de CUDA-cores helemaal geen activiteit, dan wordt de GPU niet aangesproken.

Prestatiebenchmarks
High-end CPU vs. GPU uit het midden-lagere segment
Veel mensen vragen: als de CPU krachtig genoeg is, hebt u dan nog wel een videokaart nodig? Ik heb een high-end consumenten-CPU (AMD R9-7950X) laten aantreden tegen een consumentenvideokaart uit het midden-lagere segment (RTX 3060 12G), met als software PI 1.8.9-1 en SXT 2.05 AI 11 lite:
- Eerste beeld, M1 (14.75MP): sterren verwijderen op de CPU 1 minuut 45 seconden; op de GPU 10,2 seconden.
- Tweede beeld, Webb NGC 3372 (123MP): sterren verwijderen op de CPU 12 minuten 31 seconden; op de GPU 1 minuut 05 seconden.
Twee patronen springen eruit: hoe groter het beeld, hoe duidelijker het voordeel van GPU-versnelling; en zelfs als u een high-end CPU tegen een GPU uit het midden-lagere segment zet, heeft de CPU minstens tien keer zoveel tijd nodig als de GPU om dezelfde klus te klaren. Is uw CPU geen high-end model, dan wordt het gat alleen maar groter. Zolang uw workflow dus vereist dat u AI-processen herhaaldelijk gebruikt, raad ik u ten zeerste aan om minstens één videokaart uit de RTX 30-serie in het midden-lagere segment aan te schaffen.

Alleen al de CUDA-software bijwerken kan de snelheid bijna verdubbelen
Nog een verbluffende ontdekking. Iets meer dan een jaar geleden schakelde ik voor het eerst CUDA-versnelling in op mijn RTX 3060 Laptop-notebook, en ruim een jaar later, zonder ook maar één stuk rekenhardware te vervangen (een notebook valt sowieso niet op te waarderen), hertestte ik met hetzelfde beeld na alleen de betreffende software te hebben bijgewerkt, en de snelheid was bijna verdubbeld.
Neem als voorbeeld het verwijderen van sterren uit een beeld van 120 megapixel (PI 1.8.9-1, SXT 2.05 AI 11 lite, RTX 3060 Laptop 6GB):
- CUDA-configuratie één (CUDA 11.2.2, TensorFlow 2.6, cuDNN 8.2.1): ongeveer tweeënhalve minuut.
- CUDA-configuratie twee (CUDA 11.8, TensorFlow 2.9, cuDNN 8.7, ZLib DLL x64 1.2.3): slechts 1 minuut 20 seconden.
Dus, vrienden die CUDA vroeg hebben geïnstalleerd en sindsdien nooit meer hebben bijgewerkt: vergeet niet uw CUDA-software bij te werken. U kunt de combinatie van “configuratie twee” hierboven aanhouden, wat neerkomt op de helft aan prestaties die u gratis meepikt.

Desktopversie vs. notebookversie van de videokaart
Ik had toevallig zowel een RTX 3060 12G als een RTX 3060 Laptop 6G bij de hand. De tijden voor het verwijderen van sterren onder dezelfde softwareversie:
- RTX 3060 12G: 1 minuut 4 seconden;
- RTX 3060 Laptop 6G: 1 minuut 20 seconden.
Beide gebruiken dezelfde chip; de enige verschillen zitten in de geheugencapaciteit en het vermogensontwerp van de desktop- versus notebookversie, waardoor de tijden voor het verwijderen van sterren dicht bij elkaar liggen. Wat prijs-kwaliteitverhouding betreft is een gaminglaptop met een NVIDIA-kaart (destijds voor rond de 30.000 Taiwanese dollar) een behoorlijk voordelige keuze.

Zelfs een oude mining-kaart maakt verschil
Thuis heb ik een oude computer die ongeveer vier jaar geleden is samengesteld (AMD R5-3600) en waarvan de oorspronkelijke videokaart (R9-270) het einde van zijn levensduur naderde. Ik heb online een mining-kaart op de kop getikt voor minder dan 3.000 Taiwanese dollar — een NVIDIA GTX 1660s — en op de machine het verwijderen van sterren getest op een fullframebeeld (ongeveer 60 megapixel):
- alleen CPU: 5 minuten 40 seconden;
- GPU: 51 seconden;
een tijdsverschil van ongeveer 6,6 keer. Ook al heeft de 1660s maar iets meer dan 1.400 CUDA-cores, de bespaarde tijd is nog altijd aanzienlijk. Zolang u bewerkingen als het verwijderen van sterren, AI-ruisonderdrukking en AI-verscherping herhaaldelijk uitvoert, is GPU-versnelling een investering die de moeite waard is.

De verschillen tussen de platformen
De ondersteuning voor de vraag of AI-processen GPU-versnelling kunnen gebruiken, verschilt per besturingssysteem en hardware. Ik heb de situatie voor de drie platformen Windows, Mac en Linux op een rij gezet (een deel van de Mac-testresultaten is aangeleverd door een medeliefhebber):
- Windows + NVIDIA: zodra het is ingesteld, kunt u CUDA aanroepen om SXT, BXT, NXT en StarNet allemaal met de GPU te versnellen.
- Macs met Apple Silicon (zoals M1/M1 Ultra): BXT en NXT roepen zonder enige configuratie automatisch Metal aan voor GPU-versnelling; SXT gebruikt bij uitvoering slechts een deel van de CPU-resources en spreekt de GPU niet aan; wat StarNet 2 betreft, moet u overschakelen naar de experimentele versie op de officiële website (alleen met CLI-modus via de opdrachtregel) om GPU-versnelling met succes te kunnen gebruiken.
- Macs met Intel-processor: StarNet kan alleen de CPU gebruiken; SXT, BXT en NXT kunnen daarentegen GPU-versnelling gebruiken, en dat werkt zelfs met een GPU van AMD.
Op het Apple Silicon-platform ondersteunen processen als SXT GPU-versnelling native, waardoor hun prestaties ongeveer gelijk opgaan met “Windows + NVIDIA CUDA-versnelling”. Wat het Linux-systeem op de pc betreft, ook dat kan de GPU aanroepen om de berekeningen te versnellen.

Samenvatting
Terugkijkend op de veranderingen van de afgelopen jaren: GPU-versnelling is gegaan van een hardcore configuratie waarbij “u uren kwijt bent aan het bij elkaar zoeken van CUDA-versies” naar “PI regelt het ingebouwd met één klik”; er kunnen steeds meer processen worden versneld, en zelfs een oude mining-kaart van een paar honderd Taiwanese dollar kan een versnelling van meerdere keren opleveren. Leunt uw workflow zwaar op AI-processen, dan is een NVIDIA-videokaart uit het midden-lagere segment (of een Mac met Apple Silicon) welhaast onmisbaar.