Accelerazione GPU in PixInsight: configurazione di CUDA e benchmark di prestazioni
Questo articolo è tratto da appunti presi tra il 2021 e il 2024. Alcuni strumenti, versioni di CUDA e procedure di configurazione sono stati nel frattempo aggiornati (in particolare, PixInsight nelle sue versioni più recenti supporta ormai la configurazione con un solo clic), perciò tenga presente il contesto temporale durante la lettura.
Da quando processi basati su reti neurali come la rimozione delle stelle, la riduzione del rumore con IA e la nitidezza con IA hanno via via fatto il loro ingresso nel flusso di lavoro di PixInsight, «conviene aggiungere una scheda grafica al computer per l’elaborazione?» è diventata una domanda molto concreta. Questo articolo raccoglie la mia esperienza di questi anni in fatto di test sul campo e configurazione dell’accelerazione GPU: perché usare una GPU, come attivarla, quanto tempo fa risparmiare e in che cosa differiscono le varie piattaforme.
Perché serve l’accelerazione GPU
I processi che attualmente supportano l’accelerazione GPU in PixInsight sono soprattutto quelli che fanno largo uso del calcolo con reti neurali: StarNet++, StarNet 2, StarXTerminator (SXT), NoiseXTerminator (NXT) e BlurXTerminator (BXT). Se si eseguono questi processi solo sulla CPU, i tempi di attesa diventano molto considerevoli, soprattutto man mano che le dimensioni dell’immagine crescono.
Un esempio che si fa sentire davvero è la rimozione delle stelle in batch: quando si elaborano le comete con il metodo nuovo, occorre rimuovere le stelle, in stato lineare, da ogni singola immagine della cometa non ancora integrata, una a una. Per esempio, con oltre duecento immagini da 9 megapixel, usando una versione RTX 3060 Laptop per l’accelerazione, ciascuna richiede solo una ventina di secondi; se ci si affida unicamente alla CPU, quel tempo totale Le farà mettere in dubbio le Sue scelte di vita.
Una volta provata l’accelerazione GPU, difficilmente si torna indietro.
La prima volta che sono riuscito ad attivare CUDA
Alla fine del 2021, dopo aver passato diverse ore a testare versioni differenti di NVIDIA CUDA, cuDNN e TensorFlow, sono finalmente riuscito a usare la GPU (NVIDIA RTX 3060) per assistere la rimozione delle stelle:
- StarXTerminator richiedeva solo circa 15 secondi;
- StarNet++ meno di 10 secondi;
per completare la rimozione delle stelle da un singolo frame. Rispetto alla sola CPU, la differenza era enorme.

Come attivarla: dalla configurazione manuale all’installazione con un solo clic
Il metodo di un tempo: collocare i file a mano
Agli inizi, per attivare l’accelerazione GPU bisognava scaricare da sé le versioni corrispondenti di CUDA, cuDNN, TensorFlow e altri file e collocarli nella posizione giusta. Questo processo non aveva una soglia d’ingresso bassa e, per giunta, valeva solo per gli utenti su Windows che avessero PixInsight installato e una scheda grafica NVIDIA dotata di core CUDA. Gli utenti di schede grafiche AMD (grafica integrata compresa) possono saltarlo direttamente, mentre gli utenti Linux devono ricavarsi da soli le corrispondenze di riferimento. A configurazione completata, si poteva aumentare notevolmente la velocità di esecuzione di StarNet, StarNet++, SXT, NXT e BXT.
La seccatura era che, a ogni aggiornamento di PixInsight, spesso occorreva ricollocare questi file, cosa facile da dimenticare.
Il metodo attuale: la configurazione con un solo clic integrata in PI
All’inizio del 2024 la situazione è migliorata nettamente: adesso basta aggiungere un repository di aggiornamento in PixInsight per poter usare direttamente l’accelerazione GPU, senza bisogno di installazioni o configurazioni aggiuntive. È il metodo messo a disposizione sul forum di PixInsight da RC (Russell Croman), autore della serie XTerminator. All’epoca questa funzione valeva solo per Windows, mentre la versione per Linux era ancora in sviluppo; quanto a macOS, non ha mai avuto bisogno di questo tipo di configurazione.
Come verificare che la GPU stia davvero calcolando
Per sapere se la GPU dà il suo contributo durante la rimozione delle stelle o la riduzione del rumore, su Windows 10/11: apra Gestione attività, passi alla scheda «GPU» e selezioni la sotto-scheda «CUDA»; se vede comparire una percentuale d’uso sui core CUDA, significa che la GPU è impiegata (per esempio, eseguendo SXT si può vedere i core CUDA schizzare all’87% di utilizzo); se i core CUDA non si muovono affatto, allora la GPU non viene sfruttata.

Benchmark di prestazioni
CPU di fascia alta vs GPU di fascia medio-bassa
In molti chiedono: se la CPU è abbastanza potente, serve davvero una scheda grafica? Ho messo a confronto una CPU consumer di fascia alta (AMD R9-7950X) con una scheda grafica consumer di fascia medio-bassa (RTX 3060 12G), con PI 1.8.9-1 e SXT 2.05 AI 11 lite come software:
- Prima immagine, M1 (14.75MP): rimozione delle stelle su CPU 1 minuto e 45 secondi; su GPU 10,2 secondi.
- Seconda immagine, Webb NGC 3372 (123MP): rimozione delle stelle su CPU 12 minuti e 31 secondi; su GPU 1 minuto e 05 secondi.
Se ne ricavano due regolarità: più grande è l’immagine, più marcato è l’effetto dell’accelerazione GPU; e, anche mettendo una CPU di fascia alta contro una GPU di fascia medio-bassa, la CPU impiega almeno dieci volte il tempo della GPU per portare a termine lo stesso lavoro. Se la Sua CPU non è un modello di fascia alta, il divario non fa che allargarsi. Perciò, ogni volta che il Suo flusso di lavoro richiede di usare ripetutamente processi di IA, consiglio caldamente di procurarsi almeno una scheda di fascia medio-bassa della serie RTX 30.

Basta aggiornare il software CUDA per raddoppiare quasi la velocità
C’è poi un’altra scoperta sorprendente. Circa un anno e mezzo fa ho attivato per la prima volta l’accelerazione CUDA sul mio notebook con RTX 3060 Laptop e, poco più di un anno dopo, senza aver cambiato alcun componente hardware di calcolo (del resto un notebook non si può aggiornare), ho rimisurato con la stessa immagine dopo aver semplicemente aggiornato il software relativo, e la velocità era quasi raddoppiata.
Prendiamo come esempio la rimozione delle stelle da un’immagine da 120 megapixel (PI 1.8.9-1, SXT 2.05 AI 11 lite, RTX 3060 Laptop 6GB):
- Configurazione CUDA uno (CUDA 11.2.2, TensorFlow 2.6, cuDNN 8.2.1): circa due minuti e mezzo.
- Configurazione CUDA due (CUDA 11.8, TensorFlow 2.9, cuDNN 8.7, ZLib DLL x64 1.2.3): appena 1 minuto e 20 secondi.
Perciò, chi ha installato CUDA agli inizi e da allora non l’ha più aggiornato non dimentichi di aggiornare il proprio software CUDA: può fare riferimento alla combinazione della «configurazione due» qui sopra, il che equivale a raccogliere gratis metà delle prestazioni.

Scheda grafica versione desktop vs versione notebook
Avevo sottomano proprio le due schede, una RTX 3060 12G e una RTX 3060 Laptop 6G. I tempi di rimozione delle stelle con la stessa versione del software:
- RTX 3060 12G: 1 minuto e 4 secondi;
- RTX 3060 Laptop 6G: 1 minuto e 20 secondi.
Le due usano lo stesso chip; le uniche differenze stanno nella capacità di memoria e nel progetto dei consumi delle versioni desktop e notebook, perciò i tempi di rimozione delle stelle si discostano poco. Quanto al rapporto qualità-prezzo, un notebook da gaming equipaggiato con una scheda NVIDIA (all’epoca a un prezzo di circa 30.000 dollari taiwanesi) è una scelta piuttosto conveniente.

Persino una vecchia scheda da mining si fa sentire
A casa ho un vecchio computer assemblato circa quattro anni fa (AMD R5-3600), la cui scheda grafica originale (R9-270) era ormai prossima al termine della sua vita utile. Ho rimediato in rete una scheda da mining per meno di 3.000 dollari taiwanesi—una NVIDIA GTX 1660s—e ci ho testato la rimozione delle stelle su un’immagine full frame (circa 60 megapixel):
- Solo CPU: 5 minuti e 40 secondi;
- GPU: 51 secondi;
una differenza di tempo di circa 6,6 volte. Anche se la 1660s ha solo poco più di 1.400 core CUDA, il tempo risparmiato resta comunque notevole. Ogni volta che si eseguono ripetutamente operazioni come la rimozione delle stelle, la riduzione del rumore con IA e la nitidezza con IA, l’accelerazione GPU è un investimento che vale davvero la pena.

Le differenze tra le piattaforme
A seconda del sistema operativo e dell’hardware, il supporto alla possibilità che i processi di IA usino l’accelerazione GPU non è uniforme. Ho raccolto la situazione delle tre piattaforme Windows, Mac e Linux (parte dei risultati dei test su Mac è stata fornita da un compagno di hobby):
- Windows + NVIDIA: una volta configurato, si può richiamare CUDA per accelerare via GPU l’intero insieme di SXT, BXT, NXT e StarNet.
- Mac con Apple Silicon (come M1/M1 Ultra): BXT e NXT richiamano automaticamente Metal per l’accelerazione GPU senza alcuna configurazione; SXT, in esecuzione, occupa solo una parte delle risorse della CPU e non sfrutta la GPU; quanto a StarNet 2, occorre passare alla versione sperimentale presente sul sito ufficiale (solo in modalità a riga di comando CLI) per riuscire a usare l’accelerazione GPU.
- Mac con Intel: StarNet può usare solo la CPU; SXT, BXT e NXT possono invece usare l’accelerazione GPU, e ciò funziona anche con una GPU AMD.
Sulla piattaforma Apple Silicon, processi come SXT supportano nativamente l’accelerazione GPU, perciò le loro prestazioni sono all’incirca alla pari con «Windows + accelerazione CUDA di NVIDIA». Quanto al sistema Linux su PC, anch’esso può richiamare la GPU per accelerare il calcolo.

In sintesi
Ripensando ai cambiamenti di questi anni: l’accelerazione GPU è passata da una configurazione hardcore in cui «bisognava dedicare diverse ore a far combaciare le versioni di CUDA» a un «PI la risolve di serie con un solo clic»; i processi accelerabili sono sempre di più e persino una vecchia scheda da mining da poche centinaia di dollari taiwanesi può portare un aumento di velocità di diverse volte. Se il Suo flusso di lavoro dipende pesantemente dai processi di IA, una scheda grafica NVIDIA di fascia medio-bassa (oppure un Mac con Apple Silicon) è pressoché indispensabile.