Aceleração por GPU no PixInsight: configuração de CUDA e testes de desempenho
Este artigo foi organizado a partir de anotações feitas entre 2021 e 2024; algumas ferramentas, versões de CUDA e procedimentos de configuração já foram atualizados (em especial, o PixInsight passou a oferecer configuração com um clique nas suas versões mais recentes), então tenha em mente o contexto temporal durante a leitura.
Desde que processos baseados em redes neurais como remoção de estrelas, redução de ruído por IA e aguçamento por IA foram entrando aos poucos no fluxo de trabalho do PixInsight, “vale a pena acrescentar uma placa de vídeo ao computador de processamento” tornou-se uma pergunta bem prática. Este artigo reúne minha experiência de testes e de configuração com a aceleração por GPU ao longo destes últimos anos, incluindo por que usar uma GPU, como ativá-la, quanto tempo ela economiza e como as diferentes plataformas se distinguem.
Por que a aceleração por GPU é necessária
Atualmente, os processos do PixInsight que suportam aceleração por GPU são principalmente aqueles que se apoiam em cálculos de redes neurais: StarNet++, StarNet 2, StarXTerminator (SXT), NoiseXTerminator (NXT) e BlurXTerminator (BXT). Se você rodar esses processos apenas na CPU, os tempos de espera ficam muito consideráveis, sobretudo à medida que o tamanho da imagem cresce.
Um exemplo que deixa isso bem claro é a remoção de estrelas em lote: ao processar cometas com o método mais novo, é preciso remover as estrelas de cada quadro de cometa ainda não integrado, um a um, no estado linear. Por exemplo, com mais de duzentas imagens de 9 megapixels, usando uma RTX 3060 versão Laptop para acelerar, cada uma leva apenas cerca de 20 segundos; se você depender só da CPU, o tempo total vai fazer você questionar suas escolhas de vida.
Depois que você usa a aceleração por GPU, basicamente não dá mais para voltar atrás.
A primeira vez que ativei o CUDA com sucesso
No fim de 2021, depois de passar horas testando diferentes versões de NVIDIA CUDA, cuDNN e TensorFlow, finalmente consegui usar a GPU (NVIDIA RTX 3060) para ajudar na remoção de estrelas:
- o StarXTerminator levou apenas cerca de 15 segundos;
- o StarNet++, menos de 10 segundos;
para concluir a remoção de estrelas de um único quadro. Comparado à CPU sozinha, a diferença era enorme.

Como ativar: da configuração manual à instalação com um clique
O jeito antigo: colocar os arquivos manualmente
No início, ativar a aceleração por GPU significava baixar você mesmo as versões correspondentes de CUDA, cuDNN, TensorFlow e assim por diante e colocá-las nos lugares certos. A barreira de entrada não era baixa e, além disso, só se aplicava a usuários no Windows que tivessem o PixInsight instalado e uma placa de vídeo NVIDIA com núcleos CUDA. Usuários de placas de vídeo AMD (inclusive gráficos integrados) devem pular esta parte diretamente, e usuários de Linux precisam procurar por conta própria os equivalentes. Uma vez configurado, isso acelerava enormemente StarNet, StarNet++, SXT, NXT e BXT.
O incômodo era que, a cada atualização do PixInsight, muitas vezes era preciso recolocar esses arquivos, o que era fácil de esquecer.
O jeito atual: a configuração com um clique integrada ao PI
No início de 2024, a situação melhorou bastante: agora basta adicionar um repositório de atualização (repository) no PixInsight para poder usar diretamente a aceleração por GPU, sem qualquer instalação ou configuração adicional. Esse é o método fornecido no fórum do PixInsight por RC (Russell Croman), o autor da série XTerminator. Na época, esse recurso só valia para Windows, e a versão para Linux ainda estava em desenvolvimento; quanto ao macOS, ele nunca precisou desse tipo de configuração, para começo de conversa.
Como confirmar que a GPU está realmente calculando
Para saber se a GPU está pondo a mão na massa durante a remoção de estrelas ou a redução de ruído, no Windows 10/11: abra o Gerenciador de Tarefas, mude para a aba “GPU” e selecione a subaba “CUDA”. Se aparecer utilização nos núcleos CUDA, é porque a GPU está sendo usada (por exemplo, ao rodar o SXT, dá para ver os núcleos CUDA dispararem até 87% de utilização); se os núcleos CUDA não se mexem nada, então a GPU não está sendo aproveitada.

Testes de desempenho
CPU de ponta vs GPU de gama média-baixa
Muita gente pergunta: se a CPU for potente o bastante, será que ainda é preciso uma placa de vídeo? Coloquei uma CPU de ponta de consumo (AMD R9-7950X) contra uma placa de vídeo de gama média-baixa de consumo (RTX 3060 12G), com PI 1.8.9-1 e SXT 2.05 AI 11 lite como software:
- Primeira imagem, M1 (14.75MP): remoção de estrelas na CPU 1 minuto e 45 segundos; na GPU 10,2 segundos.
- Segunda imagem, Webb NGC 3372 (123MP): remoção de estrelas na CPU 12 minutos e 31 segundos; na GPU 1 minuto e 05 segundos.
Dá para perceber dois padrões: quanto maior a imagem, mais acentuado é o efeito da aceleração por GPU; e, mesmo colocando uma CPU de ponta contra uma GPU de gama média-baixa, a CPU leva pelo menos dez vezes mais tempo que a GPU para concluir o mesmo trabalho. Se a sua CPU não for um modelo de ponta, a diferença só aumenta. Por isso, sempre que o seu fluxo de trabalho exigir usar processos de IA repetidamente, recomendo enfaticamente adquirir ao menos uma placa de gama média-baixa da série RTX 30.

Só de atualizar o software CUDA já dá para quase dobrar a velocidade
Há ainda uma descoberta surpreendente. Há pouco mais de um ano, ativei pela primeira vez a aceleração CUDA no meu notebook equipado com uma RTX 3060 Laptop e, pouco mais de um ano depois, sem ter trocado nenhum componente de cálculo (um notebook não dá para atualizar mesmo), refiz a medição com a mesma imagem depois de simplesmente atualizar o software correspondente, e a velocidade tinha quase dobrado.
Tomando como exemplo a remoção de estrelas em uma imagem de 120 megapixels (PI 1.8.9-1, SXT 2.05 AI 11 lite, RTX 3060 Laptop 6GB):
- Configuração CUDA um (CUDA 11.2.2, TensorFlow 2.6, cuDNN 8.2.1): cerca de dois minutos e meio.
- Configuração CUDA dois (CUDA 11.8, TensorFlow 2.9, cuDNN 8.7, ZLib DLL x64 1.2.3): apenas 1 minuto e 20 segundos.
Portanto, os amigos que instalaram o CUDA no início e nunca mais o atualizaram, não se esqueçam de atualizar o software CUDA; vocês podem se inspirar na combinação da “configuração dois” acima, o que equivale a ganhar metade do desempenho de graça.

Placa de vídeo versão desktop vs versão notebook
Eu tinha justamente em mãos duas placas, uma RTX 3060 12G e uma RTX 3060 Laptop 6G. Os tempos de remoção de estrelas sob a mesma versão de software:
- RTX 3060 12G: 1 minuto e 4 segundos;
- RTX 3060 Laptop 6G: 1 minuto e 20 segundos.
As duas usam o mesmo chip; as únicas diferenças estão na capacidade de memória e no design de consumo das versões desktop e notebook, de modo que os tempos de remoção de estrelas ficam próximos. Em termos de custo-benefício, um notebook gamer equipado com uma placa NVIDIA (na época, a um preço de cerca de 30.000 dólares taiwaneses) é uma escolha bastante vantajosa.

Até uma velha placa de mineração faz diferença
Em casa tenho um computador antigo montado há cerca de quatro anos (AMD R5-3600), cuja placa de vídeo original (R9-270) já se aproximava do fim da vida útil. Consegui na internet uma placa de mineração por menos de 3.000 dólares taiwaneses — uma NVIDIA GTX 1660s — e testei nela a remoção de estrelas em uma imagem full-frame (cerca de 60 megapixels):
- só CPU: 5 minutos e 40 segundos;
- GPU: 51 segundos;
ou seja, uma diferença de tempo de cerca de 6,6 vezes. Mesmo que a 1660s tenha apenas pouco mais de 1.400 núcleos CUDA, o tempo economizado ainda é bem expressivo. Contanto que você execute repetidamente operações como remoção de estrelas, redução de ruído por IA e aguçamento por IA, a aceleração por GPU é um investimento que vale a pena.

As diferenças entre as plataformas
Conforme o sistema operacional e o hardware, o suporte à possibilidade de os processos de IA usarem aceleração por GPU não é uniforme. Reuni a situação das três plataformas Windows, Mac e Linux (parte dos resultados dos testes em Mac foi fornecida por um colega entusiasta):
- Windows + NVIDIA: uma vez configurado, você pode acionar o CUDA para acelerar por GPU todos os SXT, BXT, NXT e StarNet.
- Macs com Apple Silicon (como M1 / M1 Ultra): BXT e NXT acionam automaticamente o Metal para aceleração por GPU sem qualquer configuração; o SXT, ao ser executado, ocupa apenas parte dos recursos da CPU e não aproveita a GPU; quanto ao StarNet 2, é preciso passar para a versão experimental disponível no site oficial (apenas em modo de linha de comando CLI) para conseguir usar a aceleração por GPU.
- Macs com processador Intel: o StarNet só pode usar a CPU; SXT, BXT e NXT, por sua vez, podem usar aceleração por GPU, e isso funciona mesmo com uma GPU da AMD.
Na plataforma Apple Silicon, processos como o SXT suportam nativamente a aceleração por GPU, de modo que seu desempenho fica mais ou menos em pé de igualdade com o de “Windows + aceleração CUDA da NVIDIA”. Quanto ao sistema Linux em PC, ele também pode acionar a GPU para acelerar os cálculos.

Conclusão
Olhando para as mudanças destes últimos anos: a aceleração por GPU passou de uma configuração hardcore em que “era preciso gastar horas para fazer coincidir as versões de CUDA” para um “o PI resolve tudo embutido com um clique”; os processos que dá para acelerar são cada vez mais numerosos, e até uma velha placa de mineração de algumas centenas de dólares taiwaneses pode trazer uma aceleração de várias vezes. Se o seu fluxo de trabalho depende fortemente de processos de IA, uma placa de vídeo NVIDIA de gama média-baixa (ou um Mac com Apple Silicon) é praticamente indispensável.