Programovat GPU bude možné i v Pythonu. Podporu dostává framework CUDA

19. 3. 2013

Sdílet

 Autor: Redakce

Použití GPU k obecným výpočtům je na stole již několik let, nicméně stále se nedá říci, že by zmasovělo, byť by nás o tom zástupci firem Nvidia a AMD rádi přesvědčili. Zapřažení grafik do náročných úloh se stále zasekává na programátorech – napsat takovou aplikaci totiž zůstává obtížnou (a tudíž často i drahou) záležitostí. V tomto ohledu by se ale věci mohly pohnout k lepšímu – Nvidia totiž oznámila, že k jazykům, v nichž bude možno psát programy pro GPGPU framework CUDA, přibude populární Python. Ten je přitom považován za jednu z nejpřístupnějších a snadno použitelných cest, jak programovat.

Python se stane čtvrtým z hlavních programovacích jazyků podporovaným skrz framework CUDA (po C, C++ a Fortranu). Nejde o zcela oficiální iniciativu Nvidie, místo toho se úkolu coby partner chopila firma Continuum Analytics. Ta vytvořila překladač pojmenovaný NumbaPro, který zdrojové kódy v Pythonu zkompiluje do kódu CUDA. To znamená, že úlohy pro grafické karty (případně jimi vyzbrojené výpočetní klastry) bude přímo možné psát v Pythonu. Nvidia celou věc sama zaštiťuje, takže NumbaPro bude plnohodnotnou součástí ekosystému CUDA. Tím se také bude odlišovat od starších projektů, které se pokoušejí framework CUDA s Pythonem skloubit (wrapper PyCUDA, či akcelerovaná knihovna Theano).

Podpora Pythonu v CUDA

NumbaPro bude zřejmě dostupný coby součást Pythonového prostředí Anaconda, které Continuum Analytics dodává, respektive asi jeho placeného doplňku Anaconda Accelerate. Zatímco Python je velmi populární v oblasti svobodného softwaru, NumbaPro bude dle všeho komerční záležitostí. Zdá se mimochodem, že je sám postaven nad překladačem LLVM, který mu slouží jako tlumočník do kódu CUDA. LLVM nicméně není šířeno s licencí GPL či podobnou, takže je dovoleno ho používat i v uzavřených projektech.

LLVM v propojení s frameworkem CUDA

Python je jazykem s velkým rozšířením a oblibou. Není sice nízkoúrovňový jako C nebo C++ (což jsou tradiční volby pro programy vyžadující vysoký výkon), o to je však přívětivější a přístupnější pro programátora (a odtud také nepochybně pramení jeho popularita). Lze v něm vytvořit kód pro určitou úlohu relativně snadno a rychle, zároveň však má mnoho knihoven, o něž se složitější program může opřít. Například vědeckému pracovníkovi, který potřebuje zadat výpočetnímu klastru či superpočítači úkoly k řešení, jeho použití velmi usnadní práci.

 

bitcoin_skoleni

Python je sice skutečně jednou ze snadnějších cest jak programovat, nicméně psaní GPGPU programů se díky němu přes noc určitě nestane záležitostí, kterou zvládnou i děti (nebo jak se někdy vtipkuje, cvičené opice). Čipy GPU mají jednoduše své zvláštnosti a slabá místa, se kterými se budou muset větší softwarové projekty dál prát. Na druhou stranu, u úloh, které se z většiny sestávají z aritmetiky (například vědecké výpočty), se o vyladění většiny algoritmů mohou postarat optimalizované matematické knihovny. V takových případech by skutečně mohl Python umožnit rychlé psaní potřebného kódu, aniž by tím použitelnost příliš trpěla.

Zdroj: AnandTech, Nvidia