本站提供正體中文版。切換到正體中文本站提供简体中文版。切换到简体中文This site is available in English.View in Englishこのサイトには日本語版があります。日本語で表示이 사이트는 한국어로도 제공됩니다.한국어로 보기Diese Website ist auch auf Deutsch verfügbar.Auf Deutsch ansehenEste sitio web también está disponible en español.Ver en españolQuesto sito è disponibile anche in italiano.Visualizza in italianoCe site est également disponible en français.Afficher en françaisEste site também está disponível em português.Ver em portuguêsDeze website is ook beschikbaar in het Nederlands.In het Nederlands bekijkenЭтот сайт также доступен на русском языке.Смотреть на русскомयह वेबसाइट हिन्दी में भी उपलब्ध है।हिन्दी में देखेंهذا الموقع متاح أيضًا باللغة العربية.عرض بالعربيةSitus ini juga tersedia dalam bahasa Indonesia.Lihat dalam bahasa IndonesiaBu site Türkçe olarak da mevcut.Türkçe görüntüleTa strona jest dostępna także po polsku.Wyświetl po polskuTrang web này cũng có phiên bản tiếng Việt.Xem bằng tiếng Việtاین وب‌سایت به فارسی هم در دسترس است.مشاهده به فارسیЦей сайт також доступний українською.Переглянути українськоюEz az oldal magyarul is elérhető.Megtekintés magyarulAcest site este disponibil și în limba română.Vizualizare în românăเว็บไซต์นี้มีเวอร์ชันภาษาไทยดูเป็นภาษาไทย

Akcelerace GPU v programu PixInsight: nastavení CUDA a reálné testy výkonu

Nástroje a hardware2021.12Starší poznámky

Tento článek vychází z poznámek z let 2021 až 2024; některé nástroje, verze CUDA i postup nastavení se od té doby změnily (zejména pozdější verze PixInsight už podporují nastavení jedním kliknutím), takže při čtení berte v úvahu časový kontext.

Od té doby, co do pracovního postupu v programu PixInsight postupně vstoupily neuronové procesy jako odstranění hvězd, AI odšumování a AI zostření, se otázka „vyplatí se do počítače na zpracování přidat grafickou kartu?“ stala velmi praktickou. V tomto článku shrnuji své zkušenosti z posledních let s testováním a nastavením akcelerace GPU: proč GPU používat, jak ji zapnout, kolik času to ušetří a v čem se jednotlivé platformy liší.

Proč je akcelerace GPU potřeba

Procesy, které v programu PixInsight dnes podporují akceleraci GPU, jsou hlavně ty, které jsou náročné na výpočty neuronových sítí: StarNet++, StarNet 2, StarXTerminator (SXT), NoiseXTerminator (NXT), BlurXTerminator (BXT). Pokud tyto procesy běží jen na CPU, zejména u větších snímků, čekání se stává velmi citelným.

Velmi názorným příkladem je dávkové odstranění hvězd: při zpracování komet novou metodou je potřeba v lineárním stavu odstranit hvězdy z každého ještě nesloženého snímku komety zvlášť. Například u více než 200 snímků s 9 megapixely, s akcelerací na RTX 3060 Laptop, trvá jeden snímek zhruba 20 s; při spoléhání se jen na CPU vás celkový čas přiměje pochybovat o vlastních životních rozhodnutích.

Jakmile jednou vyzkoušíte akceleraci GPU, už se asi nebudete chtít vrátit zpátky.

Jak jsem poprvé úspěšně zapnul CUDA

Koncem roku 2021 jsem po několika hodinách testování různých verzí NVIDIA CUDA, cuDNN a TensorFlow konečně dokázal zapojit GPU (NVIDIA RTX 3060) do odstraňování hvězd:

  • StarXTerminator jen asi 15 s;
  • StarNet++ necelých 10 s;

a to stačilo na dokončení odstranění hvězd z jednoho snímku. Ve srovnání s čistým CPU byl rozdíl velmi výrazný.

Snímek obrazovky z prvního úspěšného zapnutí akcelerace CUDA pro odstranění hvězd na RTX 3060

Jak ji zapnout: od ručního nastavení po instalaci jedním kliknutím

Dřívější postup: ruční umístění souborů

V raných dobách bylo pro zapnutí akcelerace GPU potřeba stáhnout si odpovídající verze souborů CUDA, cuDNN, TensorFlow a podobně a umístit je na správná místa. Vstupní práh tohoto postupu nebyl nízký a navíc platil jen pro uživatele Windows, kteří mají v počítači nainstalovaný PixInsight a grafickou kartu NVIDIA s jádry CUDA. Uživatelé grafických karet AMD (včetně integrované grafiky) mohou tuto část klidně přeskočit, uživatelé Linuxu si musí najít vlastní obdobný postup. Po dokončení nastavení se výrazně zrychlí běh StarNet, StarNet++, SXT, NXT a BXT.

Nepříjemné bylo, že při každé aktualizaci programu PixInsight bylo často potřeba tyto soubory umístit znovu, což se snadno zapomínalo.

Současný postup: vestavěné nastavení PI jedním kliknutím

Na začátku roku 2024 se situace výrazně zlepšila – teď stačí do programu PixInsight přidat repozitář aktualizací (repository) a akceleraci GPU lze rovnou používat bez dalšího instalování a nastavování. Jde o postup, který na fóru PixInsight nabídl RC (Russell Croman), autor série XTerminator. V té době tato funkce fungovala jen ve Windows, verze pro Linux se ještě vyvíjela; operační systém Mac takové nastavení odjakživa nepotřeboval.

Jak ověřit, že GPU opravdu počítá

Pokud chcete zjistit, zda GPU při odstraňování hvězd nebo odšumování skutečně pracuje, ve Windows 10/11 postupujte takto: otevřete Správce úloh, přepněte na kartu „GPU“ a zvolte podkartu „CUDA“; pokud u jader CUDA vidíte nějaké vytížení, znamená to, že se GPU používá (například při spuštění SXT můžete vidět, jak vytížení jader CUDA vyskočí na 87 %); pokud jádra CUDA nevykazují vůbec žádnou aktivitu, znamená to, že se GPU nevyužívá.

Ověření vytížení GPU na podkartě CUDA ve Správci úloh Schéma průběhu zpracování na GPU Schéma základní architektury CUDA

Reálné testy výkonu

Vysoce výkonný CPU vs. GPU nižší/střední třídy

Hodně lidí se ptá: když je CPU dost výkonný, je grafická karta vůbec potřeba? Porovnal jsem spotřebitelský vysoce výkonný CPU (AMD R9-7950X) proti spotřebitelské grafické kartě nižší/střední třídy (RTX 3060 12G), software PI 1.8.9-1, SXT 2.05 AI 11 lite:

  • První sada snímků M1 (14,75 Mpx): odstranění hvězd na CPU 1 min 45 s; na GPU 10,2 s.
  • Druhá sada snímků Webb NGC 3372 (123 Mpx): odstranění hvězd na CPU 12 min 31 s; na GPU 1 min 05 s.

Z toho jsou vidět dvě pravidelnosti: čím větší snímek, tím výraznější je efekt akcelerace GPU; a i při srovnání vysoce výkonného CPU s GPU nižší/střední třídy potřebuje CPU na stejnou práci minimálně desetkrát více času než GPU. Pokud váš CPU není špičkový model, bude rozdíl jen větší. Proto, pokud ve vašem pracovním postupu opakovaně používáte procesy s AI, velmi doporučuji pořídit si alespoň grafickou kartu nižší/střední třídy řady RTX 30.

Srovnání doby odstranění hvězd: vysoce výkonný CPU proti GPU nižší/střední třídy

Pouhá aktualizace softwaru CUDA zrychlí zpracování téměř dvakrát

Je tu ještě jedno překvapivé zjištění. Asi před rokem a něco jsem poprvé zapnul akceleraci CUDA na notebooku s RTX 3060 Laptop; o něco více než rok později, aniž bych vyměnil jakýkoli výpočetní hardware (notebook stejně vyměnit nešel), jsem pouze aktualizoval příslušný software a se stejnými snímky provedl nové měření – rychlost se přitom zvýšila téměř na dvojnásobek.

Na příkladu odstranění hvězd ze snímku o 120 megapixelech (PI 1.8.9-1, SXT 2.05 AI 11 lite, RTX 3060 Laptop 6GB):

  • Konfigurace CUDA 1 (CUDA 11.2.2, TensorFlow 2.6, cuDNN 8.2.1): asi 2,5 min.
  • Konfigurace CUDA 2 (CUDA 11.8, TensorFlow 2.9, cuDNN 8.7, ZLib DLL x64 1.2.3): jen 1 min 20 s.

Pokud jste tedy CUDA nainstalovali dřív a od té doby ji už neaktualizovali, nezapomeňte software CUDA aktualizovat – můžete se řídit výše uvedenou kombinací „konfigurace 2“, což je jako byste zdarma získali polovinu výkonu navíc.

Srovnání doby odstranění hvězd před a po aktualizaci softwaru CUDA Rozdíl v době zpracování mezi různými verzemi CUDA

Desktopová vs. notebooková grafická karta

Zrovna mám k dispozici dvě karty – RTX 3060 12G a RTX 3060 Laptop 6G. Doba odstranění hvězd při stejné verzi softwaru:

  • RTX 3060 12G: 1 min 4 s;
  • RTX 3060 Laptop 6G: 1 min 20 s.

Obě mají stejný čip, rozdíl je jen v kapacitě paměti a v návrhu spotřeby desktopové/notebookové verze, takže doba odstranění hvězd se liší jen málo. Z hlediska poměru cena/výkon je herní notebook s grafickou kartou NVIDIA (tehdy za cenu kolem 30 000 NT$) poměrně výhodnou volbou.

Srovnání doby odstranění hvězd: desktopová proti notebookové verzi RTX 3060

I stará těžařská karta udělá rozdíl

Doma mám starý počítač sestavený asi před čtyřmi lety (AMD R5-3600), jehož původní grafická karta (R9-270) se blížila konci životnosti. Na internetu jsem sehnal těžařskou kartu za necelých 3000 NT$ – NVIDIA GTX 1660s – a otestoval na ní odstranění hvězd ze snímku v plném formátu (asi 60 megapixelů):

  • čistě CPU: 5 min 40 s;
  • GPU: 51 s;

Rozdíl v čase je asi 6,6násobný. I když má 1660s jen něco přes 1400 jader CUDA, ušetřený čas je stále velmi výrazný. Pokud budete opakovaně provádět takové operace, jako je odstranění hvězd, AI odšumování a AI zostření, je akcelerace GPU velmi hodnotnou investicí.

Srovnání doby odstranění hvězd s akcelerací GPU na GTX 1660s

Rozdíly mezi platformami

Podpora toho, zda mohou procesy AI využívat akceleraci GPU, se liší podle operačního systému i hardwaru. Shrnul jsem situaci na třech platformách – Windows, Mac a Linux (část výsledků testů na Macu poskytl jeden z kolegů z oboru):

  • Windows + NVIDIA: stačí to nastavit a lze zavolat CUDA pro akceleraci GPU u SXT, BXT, NXT i StarNet – u všech.
  • Mac s Apple Silicon (např. M1 / M1 Ultra): BXT a NXT bez jakéhokoli nastavení automaticky zavolají Metal a využijí akceleraci GPU; SXT při běhu zabere jen část zdrojů CPU a GPU nevyužije; u StarNet 2 je nutné přejít na experimentální verzi z oficiálního webu (dostupná jen v režimu příkazového řádku CLI), aby se akcelerace GPU dala úspěšně použít.
  • Mac s procesorem Intel: StarNet umí použít jen CPU; SXT, BXT a NXT naopak mohou využívat akceleraci GPU, a to i s GPU od AMD.

Na platformě Apple Silicon mají procesy jako SXT nativní podporu akcelerace GPU, takže jejich výkon je zhruba srovnatelný s „Windows + akcelerace CUDA od NVIDIA“. Pokud jde o systém Linux na PC, i tam lze zavolat GPU k akceleraci výpočtů.

Výsledky testů, zda procesy AI mohou na jednotlivých platformách využívat akceleraci GPU

Shrnutí

Když se ohlédnu za změnami posledních let: akcelerace GPU prošla cestou od hardcorového nastavování, kdy „bylo potřeba věnovat hodiny hledání správné verze CUDA“, až po stav, kdy „to PI vyřeší vestavěně jedním kliknutím“; procesů, které lze akcelerovat, přibývá a i stará těžařská karta za pár stovek NT$ dokáže přinést několikanásobné zrychlení. Pokud váš pracovní postup silně závisí na procesech s AI, je grafická karta NVIDIA nižší/střední třídy (nebo Mac s Apple Silicon) téměř nezbytností.