Aceleración por GPU en PixInsight: configuración de CUDA y pruebas de rendimiento
Este artículo está recopilado a partir de notas tomadas entre 2021 y 2024. Algunas herramientas, versiones de CUDA y procesos de configuración se han actualizado desde entonces (en particular, PixInsight ya admite en sus versiones más recientes la configuración con un solo clic), así que ten presente el contexto temporal mientras lees.
Desde que procesos basados en redes neuronales como la eliminación de estrellas, la reducción de ruido con IA y el enfoque con IA fueron entrando poco a poco en el flujo de trabajo de PixInsight, «¿debería ponerle una tarjeta gráfica a la computadora de procesado?» se ha convertido en una pregunta muy práctica. Este artículo recopila mi experiencia de estos últimos años en pruebas y configuración de la aceleración por GPU: por qué querrías una GPU, cómo activarla, cuánto tiempo ahorra y en qué se diferencian las distintas plataformas.
Por qué se necesita la aceleración por GPU
Los procesos que actualmente admiten aceleración por GPU en PixInsight son sobre todo los que dependen del cálculo con redes neuronales: StarNet++, StarNet 2, StarXTerminator (SXT), NoiseXTerminator (NXT) y BlurXTerminator (BXT). Si ejecutas estos procesos solo con la CPU, los tiempos de espera se vuelven enormes, sobre todo cuando el tamaño de la imagen crece.
Un ejemplo que se nota de verdad es la eliminación de estrellas por lotes: al procesar cometas con el método nuevo, hay que eliminar las estrellas, en estado lineal, de cada una de las imágenes del cometa que todavía no se han integrado, una por una. Por ejemplo, con más de doscientas imágenes de 9 megapíxeles, usando una versión RTX 3060 Laptop para acelerar, cada una tarda solo unos 20 segundos; si te apoyas únicamente en la CPU, ese tiempo total te hará dudar de tus decisiones de vida.
Una vez que has usado la aceleración por GPU, es básicamente imposible volver atrás.
La primera vez que activé CUDA con éxito
A finales de 2021, tras pasar varias horas probando distintas versiones de NVIDIA CUDA, cuDNN y TensorFlow, por fin conseguí usar la GPU (NVIDIA RTX 3060) para ayudar con la eliminación de estrellas:
- StarXTerminator necesitaba solo unos 15 segundos;
- StarNet++ menos de 10 segundos;
para terminar la eliminación de estrellas de una sola imagen. Comparado con la CPU sola, la diferencia era enorme.

Cómo activarla: de la configuración manual a la instalación con un solo clic
El método de antaño: colocar los archivos a mano
En los primeros tiempos, activar la aceleración por GPU implicaba descargar tú mismo las versiones correspondientes de CUDA, cuDNN, TensorFlow, etc., y colocarlas en el lugar correcto. Este proceso no tenía una barrera de entrada baja y, además, solo servía para usuarios de Windows que tuvieran PixInsight instalado y una tarjeta gráfica NVIDIA con núcleos CUDA. Los usuarios de tarjetas gráficas AMD (incluida la gráfica integrada) que se lo salten directamente, y los usuarios de Linux tendrán que buscar por su cuenta las equivalencias. Una vez configurado, aumentaba enormemente la velocidad de ejecución de StarNet, StarNet++, SXT, NXT y BXT.
Lo molesto era que, cada vez que actualizabas PixInsight, a menudo tenías que volver a colocar estos archivos, lo cual era fácil de olvidar.
El método actual: la configuración con un solo clic integrada en PI
A comienzos de 2024, la situación mejoró enormemente: ahora basta con añadir un repositorio de actualizaciones (repository) en PixInsight para poder usar directamente la aceleración por GPU, sin necesidad de instalación ni configuración adicionales. Este es el método que ofrece RC (Russell Croman), autor de la serie XTerminator, en el foro de PixInsight. En aquel momento esta función solo servía para Windows, y la versión para Linux todavía estaba en desarrollo; en cuanto a macOS, nunca necesitó este tipo de configuración de por sí.
Cómo confirmar que la GPU realmente está haciendo los cálculos
Para saber si la GPU está aportando durante la eliminación de estrellas o la reducción de ruido, en Windows 10/11: abre el Administrador de tareas, cambia a la pestaña «GPU» y selecciona la subpestaña «CUDA»; si ves que aparece un porcentaje de uso en los núcleos CUDA, significa que se está usando la GPU (por ejemplo, al ejecutar SXT puedes ver cómo los núcleos CUDA se disparan al 87 % de uso); si los núcleos CUDA no se mueven en absoluto, es que no se está aprovechando la GPU.

Pruebas de rendimiento
CPU de gama alta vs. GPU de gama media-baja
Mucha gente pregunta: si la CPU es lo bastante potente, ¿hace falta siquiera una tarjeta gráfica? Enfrenté una CPU de gama alta de consumo (AMD R9-7950X) contra una tarjeta gráfica de gama media-baja de consumo (RTX 3060 12G), con PI 1.8.9-1 y SXT 2.05 AI 11 lite como software:
- Primera imagen, M1 (14.75MP): eliminación de estrellas con CPU, 1 minuto 45 segundos; con GPU, 10,2 segundos.
- Segunda imagen, Webb NGC 3372 (123MP): eliminación de estrellas con CPU, 12 minutos 31 segundos; con GPU, 1 minuto 05 segundos.
Se pueden ver dos regularidades: cuanto mayor es el tamaño de la imagen, más notorio es el efecto de la aceleración por GPU; y, aun enfrentando una CPU de gama alta a una GPU de gama media-baja, la CPU necesita al menos diez veces más tiempo que la GPU para terminar el mismo trabajo. Si tu CPU no es un modelo de gama alta, la diferencia solo será mayor. Por eso, siempre que tu flujo de trabajo requiera usar procesos de IA de forma repetida, recomiendo encarecidamente hacerse al menos con una tarjeta gráfica de gama media-baja de la serie RTX 30.

Solo con actualizar el software de CUDA se puede casi duplicar la velocidad
Hay otro descubrimiento asombroso. Hace algo más de un año activé por primera vez la aceleración CUDA en mi computadora portátil con una RTX 3060 Laptop, y algo más de un año después, sin haber cambiado ningún hardware de cálculo en absoluto (de todos modos, una computadora portátil no se puede ampliar), volví a medir con la misma imagen tras actualizar únicamente el software correspondiente, y la velocidad había aumentado casi al doble.
Tomemos como ejemplo la eliminación de estrellas de una imagen de 120 megapíxeles (PI 1.8.9-1, SXT 2.05 AI 11 lite, RTX 3060 Laptop 6GB):
- Configuración de CUDA uno (CUDA 11.2.2, TensorFlow 2.6, cuDNN 8.2.1): unos dos minutos y medio.
- Configuración de CUDA dos (CUDA 11.8, TensorFlow 2.9, cuDNN 8.7, ZLib DLL x64 1.2.3): solo 1 minuto 20 segundos.
Así que, quienes instalaron CUDA en su momento y no lo han vuelto a actualizar desde entonces, no olviden actualizar su software de CUDA; pueden guiarse por la combinación de la «configuración dos» de arriba, que es como conseguir gratis la mitad del rendimiento.

Tarjeta gráfica de sobremesa vs. de portátil
Justo tenía a mano las dos tarjetas, una RTX 3060 12G y una RTX 3060 Laptop 6G. Los tiempos de eliminación de estrellas con la misma versión de software:
- RTX 3060 12G: 1 minuto 4 segundos;
- RTX 3060 Laptop 6G: 1 minuto 20 segundos.
Ambas usan el mismo chip; la única diferencia está en la capacidad de memoria y en el diseño de consumo de las versiones de sobremesa y de portátil, así que los tiempos de eliminación de estrellas se parecen bastante. En cuanto a la relación calidad-precio, un portátil gaming equipado con una tarjeta NVIDIA (que por entonces costaba unos 30.000 dólares taiwaneses) resulta una opción bastante conveniente.

Hasta una vieja tarjeta de minería se nota
En casa tengo una computadora vieja montada hace unos cuatro años (AMD R5-3600), cuya tarjeta gráfica original (R9-270) se acercaba al final de su vida útil. Conseguí por internet una tarjeta de minería por menos de 3.000 dólares taiwaneses —una NVIDIA GTX 1660s— y probé en ella la eliminación de estrellas de una imagen de fotograma completo (unos 60 megapíxeles):
- Solo CPU: 5 minutos 40 segundos;
- GPU: 51 segundos;
una diferencia de unas 6,6 veces. Aunque la 1660s tiene solo algo más de 1.400 núcleos CUDA, el tiempo ahorrado sigue siendo muy notable. Siempre que ejecutes de forma repetida operaciones como la eliminación de estrellas, la reducción de ruido con IA y el enfoque con IA, la aceleración por GPU es una inversión que vale mucho la pena.

Las diferencias entre plataformas
El soporte para que los procesos de IA puedan usar aceleración por GPU no es uniforme entre distintos sistemas operativos y hardware. He recopilado la situación de las tres plataformas Windows, Mac y Linux (parte de los resultados de las pruebas en Mac los proporcionó un compañero de afición):
- Windows + NVIDIA: una vez configurado, puedes invocar CUDA para acelerar por GPU SXT, BXT, NXT y StarNet en su totalidad.
- Macs con Apple Silicon (como M1 / M1 Ultra): BXT y NXT invocan Metal automáticamente para la aceleración por GPU sin ninguna configuración; SXT, al ejecutarse, solo ocupa parte de los recursos de la CPU y no aprovecha la GPU; en cuanto a StarNet 2, hay que cambiar a la versión experimental que está en el sitio web oficial (que solo tiene modo de línea de comandos, CLI) para poder usar con éxito la aceleración por GPU.
- Macs con Intel: StarNet solo puede usar la CPU; SXT, BXT y NXT sí pueden usar aceleración por GPU, y funciona incluso con una GPU de AMD.
En la plataforma Apple Silicon, procesos como SXT admiten de forma nativa la aceleración por GPU, así que su rendimiento está más o menos a la par con «Windows + aceleración CUDA de NVIDIA». Y en cuanto al sistema Linux en un PC, también puede invocar la GPU para acelerar el cálculo.

Resumen
Mirando en retrospectiva los cambios de estos últimos años: la aceleración por GPU ha pasado de una configuración hardcore en la que «hay que dedicar varias horas a cuadrar versiones de CUDA» a un «PI lo resuelve de fábrica con un solo clic»; cada vez hay más procesos que se pueden acelerar, y hasta una vieja tarjeta de minería de apenas unos cientos de dólares taiwaneses puede aportar una aceleración de varias veces. Si tu flujo de trabajo depende mucho de los procesos de IA, una tarjeta gráfica NVIDIA de gama media-baja (o un Mac con Apple Silicon) es prácticamente imprescindible.