PixInsight'ta GPU hızlandırma: CUDA kurulumu ve gerçek performans testleri
Bu yazı 2021 ile 2024 yılları arasında tuttuğum notlardan derlenmiştir. Bazı araçlar, CUDA sürümleri ve kurulum adımları o zamandan bu yana güncellendi (özellikle sonraki PixInsight sürümleri artık tek tıkla yapılandırmayı destekliyor), bu yüzden okurken zaman bağlamını göz önünde bulundurun.
Yıldız çıkarma, yapay zekâ ile gürültü azaltma ve yapay zekâ ile keskinleştirme gibi sinir ağı tabanlı işlemler birbiri ardına PixInsight’ın iş akışına girdiğinden beri, “görüntü işleme bilgisayarıma bir ekran kartı ekleyeyim mi” sorusu çok somut bir mesele hâline geldi. Bu yazıda GPU hızlandırma konusunda son birkaç yılda yaptığım ölçümleri ve kurulum deneyimlerimi derliyorum: neden GPU gerekir, nasıl etkinleştirilir, ne kadar zaman kazandırır ve platformlar arasında ne gibi farklar vardır.
Neden GPU hızlandırma gerekir
PixInsight’ta şu anda GPU hızlandırmayı destekleyen işlemler, esas olarak sinir ağı hesaplamasına yaslananlardır: StarNet++, StarNet 2, StarXTerminator (SXT), NoiseXTerminator (NXT), BlurXTerminator (BXT). Bu işlemleri yalnızca CPU ile çalıştırırsanız, özellikle görüntü boyutu büyüdükçe bekleme süresi hayli kabarır.
Etkisi en çok hissedilen örneklerden biri toplu yıldız çıkarmadır: kuyruklu yıldızları yeni yöntemle işlerken, doğrusal durumdayken henüz entegrasyona girmemiş her kuyruklu yıldız karesinden yıldızları tek tek çıkarmanız gerekir. Örneğin 9 megapikselli iki yüz küsur karede, RTX 3060 Laptop sürümüyle hızlandırıldığında tek kare yalnızca 20 saniye kadar sürüyor; işi tamamen CPU’ya bırakırsanız toplam süre size hayatınızı sorgulatır.
GPU hızlandırmayı bir kez tattıktan sonra artık geri dönemezsiniz.
CUDA’yı ilk kez başarıyla etkinleştirdiğimde
2021’in sonunda, NVIDIA CUDA, cuDNN ve TensorFlow’un farklı sürümlerini saatlerce denedikten sonra, sonunda yıldız çıkarmada GPU’dan (NVIDIA RTX 3060) yardım almayı başardım:
- StarXTerminator yalnızca yaklaşık 15 saniye;
- StarNet++ 10 saniyenin altında;
sürede tek bir karenin yıldızlarını çıkarabiliyordu. Yalnızca CPU’ya kıyasla fark çok belirgindi.

Nasıl etkinleştirilir: elle yapılandırmadan tek tıkla kuruluma
Eski yöntem: dosyaları elle yerleştirmek
Eskiden GPU hızlandırmayı etkinleştirmek için uygun sürümdeki CUDA, cuDNN, TensorFlow gibi dosyaları kendiniz indirip doğru konumlara yerleştirmeniz gerekiyordu. Bu sürecin eşiği düşük değildi ve yalnızca Windows kullanan, bilgisayarında PixInsight kurulu olan ve CUDA çekirdeği bulunan bir NVIDIA ekran kartına sahip kullanıcılar için geçerliydi. AMD ekran kartı (dahili grafik dâhil) kullananlar burayı doğrudan atlasın; Linux kullananlar ise karşılıklarını kendileri eşleştirmek zorunda. Yapılandırma tamamlandığında StarNet, StarNet++, SXT, NXT ve BXT’nin çalışma hızı büyük ölçüde artıyordu.
İşin can sıkıcı yanı, PixInsight’ı her güncellediğinizde bu dosyaları çoğu zaman yeniden yerleştirmek gerekmesi ve bunun kolayca unutulmasıydı.
Bugünkü yöntem: PI programının dahili tek tıkla yapılandırması
2024 yılının başına gelindiğinde durum epeyce düzeldi — artık PixInsight içinde bir güncelleme deposu (repository) eklemeniz yeterli; ek kurulum ve yapılandırmaya gerek kalmadan GPU hızlandırmayı doğrudan kullanabiliyorsunuz. Bu, XTerminator serisinin yazarı RC’nin (Russell Croman) PixInsight forumunda paylaştığı yöntem. O sırada bu özellik yalnızca Windows için geçerliydi, Linux sürümü hâlâ geliştiriliyordu; Mac işletim sistemine gelince, orada zaten baştan beri böyle bir yapılandırmaya gerek yok.
GPU’nun gerçekten hesap yaptığından nasıl emin olunur
Yıldız çıkarma ya da gürültü azaltma sırasında GPU’nun güç verip vermediğini öğrenmek isterseniz, Windows 10/11’de şunu yapın: Görev Yöneticisi’ni (Task Manager) açın, “GPU” sayfasına geçin ve “CUDA” alt sayfasını seçin. CUDA çekirdeklerinde bir kullanım oranı görünüyorsa GPU kullanılıyor demektir (örneğin SXT çalışırken CUDA çekirdeklerinin %87 kullanım oranına fırladığını görebilirsiniz); CUDA çekirdekleri hiç kıpırdamıyorsa GPU hiç devreye girmemiş demektir.

Performans ölçümleri
Üst seviye CPU vs orta-alt seviye GPU
Çoğu kişi şunu sorar: CPU yeterince güçlüyse ekran kartına gerek kalmaz mı? Tüketici sınıfı üst seviye bir CPU’yu (AMD R9-7950X) tüketici sınıfı orta-alt seviye bir ekran kartıyla (RTX 3060 12G) karşı karşıya getirdim; yazılım olarak PI 1.8.9-1 ve SXT 2.05 AI 11 lite kullandım:
- Birinci görüntü, M1 (14.75MP): CPU ile yıldız çıkarma 1 dakika 45 saniye; GPU ile yıldız çıkarma 10,2 saniye.
- İkinci görüntü, Webb NGC 3372 (123MP): CPU ile yıldız çıkarma 12 dakika 31 saniye; GPU ile yıldız çıkarma 1 dakika 05 saniye.
Buradan iki kural görülüyor: görüntü boyutu büyüdükçe GPU hızlandırmanın etkisi daha da belirginleşiyor; ayrıca üst seviye bir CPU’yu orta-alt seviye bir GPU ile karşı karşıya getirseniz bile, CPU aynı işi bitirmek için GPU’nun en az on katı süreye ihtiyaç duyuyor. CPU’nuz üst seviye bir model değilse aradaki fark yalnızca büyür. Bu yüzden, iş akışınızda yapay zekâ tabanlı işlemleri tekrar tekrar kullanmanız gerekiyorsa, en azından orta-alt seviye bir RTX 30 serisi ekran kartı edinmenizi şiddetle tavsiye ederim.

Yalnızca CUDA yazılımını güncelleyerek hız neredeyse ikiye katlanabiliyor
Şaşırtıcı bir keşif daha var. Bir yılı aşkın süre önce RTX 3060 Laptop dizüstü bilgisayarımda ilk kez CUDA hızlandırmayı etkinleştirmiştim; bir yıldan biraz fazla süre sonra, hiçbir hesaplama donanımını değiştirmeden (zaten dizüstü bilgisayarda değiştiremezsiniz) yalnızca ilgili yazılımları güncelleyip aynı görüntüyle yeniden ölçtüğümde, hızın neredeyse ikiye katlandığını gördüm.
120 megapiksellik bir görüntünün yıldızlarını çıkarmayı örnek alalım (PI 1.8.9-1, SXT 2.05 AI 11 lite, RTX 3060 Laptop 6GB):
- CUDA yapılandırması bir (CUDA 11.2.2, TensorFlow 2.6, cuDNN 8.2.1): yaklaşık 2,5 dakika.
- CUDA yapılandırması iki (CUDA 11.8, TensorFlow 2.9, cuDNN 8.7, ZLib DLL x64 1.2.3): yalnızca 1 dakika 20 saniye.
Yani CUDA’yı erken dönemde kurup sonrasında hiç güncellemeyen arkadaşlar, CUDA yazılımını güncellemeyi unutmayın; yukarıdaki “yapılandırma iki” bileşimini örnek alabilirsiniz — performansın yarısını bedavaya toplamak gibi bir şey.

Masaüstü sürümü vs dizüstü sürümü ekran kartı
Elimde tam da RTX 3060 12G ve RTX 3060 Laptop 6G olmak üzere iki kart vardı; aynı yazılım sürümü altında yıldız çıkarma süreleri:
- RTX 3060 12G: 1 dakika 4 saniye;
- RTX 3060 Laptop 6G: 1 dakika 20 saniye.
İkisinin yongası aynı; fark yalnızca bellek kapasitesinde ve masaüstü/dizüstü sürümlerinin güç tasarımında olduğu için yıldız çıkarma süreleri birbirine yakın. Fiyat/performans açısından bakılırsa, NVIDIA ekran kartlı bir oyuncu dizüstü bilgisayarı (o zamanki fiyatı yaklaşık 30.000 Tayvan doları) oldukça hesaplı bir seçenek sayılır.

Eski bir madenci kartı bile fark yaratıyor
Evde yaklaşık dört yıl önce topladığım eski bir bilgisayar var (AMD R5-3600); asıl ekran kartı (R9-270) ömrünün sonuna yaklaşmıştı. İnternetten 3.000 Tayvan dolarını bulmayan bir madenci kartı — NVIDIA GTX 1660s — kaptım ve makineye takıp tam kare (full frame) bir görüntüde (yaklaşık 60 megapiksel) yıldız çıkarmayı test ettim:
- Yalnızca CPU: 5 dakika 40 saniye;
- GPU: 51 saniye;
yani süre farkı yaklaşık 6,6 kat. 1660s’in CUDA çekirdeği sayısı yalnızca bin dört yüz küsur olsa da, kazanılan süre yine de çok belirgin. Yıldız çıkarma, yapay zekâ ile gürültü azaltma ve yapay zekâ ile keskinleştirme gibi işlemleri tekrar tekrar çalıştırıyorsanız, GPU hızlandırma gerçekten değerli bir yatırımdır.

Platformlar arasındaki farklar
Farklı işletim sistemleri ve donanımlar, yapay zekâ tabanlı işlemlerin GPU hızlandırmayı kullanıp kullanamayacağı konusunda aynı desteği vermiyor. Windows, Mac ve Linux olmak üzere üç platformun durumunu derledim (Mac test sonuçlarının bir kısmını bir meraklı dostumuz sağladı):
- Windows + NVIDIA: yapılandırma bir kez tamamlandığında, CUDA çağrılarak SXT, BXT, NXT ve StarNet’in tamamı GPU ile hızlandırılabiliyor.
- Apple Silicon işlemcili Mac (M1 / M1 Ultra gibi): BXT ve NXT hiçbir ayar gerektirmeden otomatik olarak Metal’i çağırıp GPU hızlandırma kullanıyor; SXT çalışırken yalnızca CPU kaynaklarının bir kısmını kullanıyor, GPU’ya hiç dokunmuyor; StarNet 2’ye gelince, GPU hızlandırmayı başarıyla kullanabilmek için resmî sitedeki deneysel sürüme (yalnızca komut satırı CLI kipinde) geçmek gerekiyor.
- Intel işlemcili Mac: StarNet yalnızca CPU kullanabiliyor; SXT, BXT ve NXT ise GPU hızlandırma kullanabiliyor, üstelik AMD GPU ile bile çalışıyor.
Apple Silicon platformunda SXT gibi işlemler GPU hızlandırmayı yerel olarak desteklediğinden, performansları “Windows + NVIDIA CUDA hızlandırması” ile aşağı yukarı başa baş. PC üzerindeki Linux sistemine gelince, orada da aynı şekilde hesaplamayı hızlandırmak için GPU çağrılabiliyor.

Özet
Son birkaç yılın değişimine dönüp bakınca: GPU hızlandırma, “CUDA sürümlerini birbirine uydurmak için saatler harcadığınız” çetin bir yapılandırmadan “PI içinde tek tıkla halledilen” bir işe dönüştü; hızlandırılabilen işlemlerin sayısı giderek artıyor, üstelik ucuza alınabilen eski bir madenci kartı bile kat kat hızlanma sağlayabiliyor. İş akışınız yapay zekâ tabanlı işlemlere ağır biçimde dayanıyorsa, orta-alt seviye bir NVIDIA ekran kartı (ya da Apple Silicon işlemcili bir Mac) neredeyse zorunlu.