Jak provádět paralelní výpočty na GPU

jklouda

Jak provádět paralelní výpočty na GPU
« kdy: 21. 06. 2010, 02:59:00 »
Našel by se někdo kdo by mi mohl poradit kudy vede cesta k řešení těchto příkladů popř. odkázat na nějaké specializované fórum zabývající se touto problematikou ? Něco málo vím o technologích CUDA, ATI Stream, OpenCL a DirectCompute ale netuším kterou technologii zvolit, pro efektivní řešení. Díky.

Pro vhodné paralelizovatelné numerické výpočty vytvořit program, který bude výpočty realizovat přes vícejádrový CPU a přes GPU a porovnat rychlosti výpočtů a vhodnost použití různých technologií. Analyzovat vliv frekvence GPU a počtu výpočtových jednotek.

Vytvořit aplikaci, která na základně vhodných numerických výpočtů bude umožňovat porovnání výpočtového výkonu různých grafických karet (benchmark). Aplikace vypíše také typ GPU, frekvenci a počet výpočtových jednotek.
« Poslední změna: 21. 06. 2010, 11:09:28 od Petr Krčmář »


jimik

Re: programování GPGPU
« Odpověď #1 kdy: 21. 06. 2010, 09:20:51 »
napr. tu http://developer.amd.com/gpu/ATIStreamSDK/Pages/default.aspx v 'examples' v SDK je vypis najdeneho hardveru. zatial este OpenCL 1.0

Re: Jak provádět paralelní výpočty na GPU
« Odpověď #2 kdy: 21. 06. 2010, 20:29:42 »
Také bych se přikláněl k řešení pomocí OpenCL, existuje nějaké vývojové prostředí pro tuto technologii ve kterém by se daly tyto příklady naprogramovat? Nainstaloval jsem si OpenCLStudio, které po mě žádalo instalaci SDK a drivery pro moji grafickou kartu, jenže moje grafika není touto technologií podporována. Hledám spíše něco univerzálního, co by nebylo přímo závyslé na použitém grafickém akcelerátoru.

stilett

Re: Jak provádět paralelní výpočty na GPU
« Odpověď #3 kdy: 21. 06. 2010, 21:53:45 »
Požadavek na univerzalitu poměrně zužuje výběr:
  • CUDA - jen pro NVIDIA
  • ATI FireStream - jen ATI
  • DirectCompute - umí použít obě předešlé technologie, ale je jen pro Windows

Takže nejlépe z toho vyjde OpenCL. Obecné výpočty na GPU prostě některé starší karty nepodporují.
Jakou kartu máte? Nestálo by za úvahu si nějakou schopnou pořídit?

Re: Jak provádět paralelní výpočty na GPU
« Odpověď #4 kdy: 21. 06. 2010, 23:34:49 »
desktop: grafika: ATI Radeon X1950 PRO (256MB)
procesor:Intel Core2 Duo E6750 2,66GHz

notebook: grafila: ATI mobility Radeon X700 (128 MB)
procesor: Mobile AMD Sempron LV, 1800 MHz (9 x 200) 3000+

Myslíte že by se z toho dalo něco pro výpočty použít ?  ::)


jimik

Re: Jak provádět paralelní výpočty na GPU
« Odpověď #5 kdy: 22. 06. 2010, 08:01:47 »
ano, tie dva jadra(alebo sa to tvari ako viac jadier ?) Core2 Duo pomocou OpenCL

stilett

Re: Jak provádět paralelní výpočty na GPU
« Odpověď #6 kdy: 22. 06. 2010, 09:06:52 »
Je to tak, jak napsal jimik. Bohužel vaše grafické karty jsou ATI a patří k těm starším, takže smůla.

Na té stránce, na kterou jste sám odkazoval, je seznam podporovaných GPU od ATI/AMD - http://developer.amd.com/gpu/ATIStreamSDK/Pages/default.aspx#two.

Ale právě díky univerzalitě OpenCL, můžete použít i CPU s podporou SSE 3. Zkuste začít dělat s OpenCL a během toho si kupte do desktopu nějakou novou kartu, která to podporuje.

Re: Jak provádět paralelní výpočty na GPU
« Odpověď #7 kdy: 22. 06. 2010, 16:19:37 »
budu se tedy muset poohlédnout po nějaké novější ATi, ale zatím bych výpočty chtěl vyzkoušet na CPU, jak to tedy realizuji ? Na stránkách OpenCL jsem našel pouze hlavičkové soubory, ale bude potřeba nějaké vývojové prostředí, které podporuje OpenCL.

Re: Jak provádět paralelní výpočty na GPU
« Odpověď #8 kdy: 22. 06. 2010, 16:56:40 »
ještě přikládám hw konfiguraci





stilett

Re: Jak provádět paralelní výpočty na GPU
« Odpověď #9 kdy: 22. 06. 2010, 18:08:16 »
Potřebujete nějakou implementaci OpenCL. Nerad bych vypadal, že se opakuji, ale opět zde musím uvést odkaz http://developer.amd.com/gpu/ATIStreamSDK/Pages/default.aspx

Je to ATI Stream SDK. Ten obsahuje vše potřebné. Jsou tam přibalené i příklady. Verzi pro Linux mám vyzkoušenou (stačí rozbalit, udělat link na knihovnu s ovladačem OpenCL, jedním příkazem přeložit ukázkové programy a mohu zkoušet). Konkrétní postup záleží na tom, jestli to budete používat v Linuxu nebo ve Windows. V Linuxu potřebujete GCC, ve Windows Visual Studio.
Mezi ukázkovými příklady je i program CLInfo, který by vám měl vypsat seznam všech podporovaných zařízení v systému - měl by tam být vidět ten Core 2 Duo.

P.S. OpenCL můžete používat i na kartách NVIDIA.

stilett

Re: Jak provádět paralelní výpočty na GPU
« Odpověď #10 kdy: 22. 06. 2010, 18:13:23 »
Zapomněl jsem dodat, že je poměrně užitečné přečíst si odkazy na uvedené stránce, zejména pak "Introductory Tutorial to OpenCL".

Re: Jak provádět paralelní výpočty na GPU
« Odpověď #11 kdy: 23. 06. 2010, 01:01:51 »
Dobře, ale jaké by bylo tedy prozatimní řešení OpenCL v provozu pouze na CPU, GPU není asi nemůžu zatím řešit pokud na to nemám patříčné vybavení. S jakým výpojovým prostředím pracovat popř. jak provázat Visual Studio s OpenCL pokud neexistuje jiné řešení ?

OpenSource

Re: Jak provádět paralelní výpočty na GPU
« Odpověď #12 kdy: 23. 06. 2010, 03:26:17 »
Možná by Vám poradily lépe na www.zive.cz, mám takové tušení že jste si spletl forum?
Předpokládám že až dokončíte svůj program bude z něj ...ware.

jimik

Re: Jak provádět paralelní výpočty na GPU
« Odpověď #13 kdy: 23. 06. 2010, 07:26:43 »
naco vyvojove prostredie? ides robit vypocty, nie naklikat okna. to sdk vlastne iba rozbalis a nieco nalinkujes, presny navod je pri tom. editor aky chces, gcc. ked pochpis par veci, potom aj debuger. zabudni na delphi a neviem ake studia ;-)

stilett

Re: Jak provádět paralelní výpočty na GPU
« Odpověď #14 kdy: 23. 06. 2010, 08:11:27 »
To SDK, které vám radím, umožňuje pouštět OpenCL programy na CPU s podporou SSE3. To podle screenshotů, které jste přiložil, zahrnuje CPU v obou vašich počítačích. To znamená, že programy si můžete napsat už teď, půjdou spustit, jen jejich výkon nebude úžasný. Potom se žádnou nebo malinkou úpravou je můžete nechat počítat na grafické kartě, až si ji pořídíte.

Ohledně integrace do Visual Studia. Mám to vyzkoušené pouze v Linuxu, kde se integrace do vývojového prostředí neřeší, stačí mít překladač GCC (má ho nainstalovaný každý, kdo se zajímá o věci jako výpočty na GPU). Jsou tam připravené ukázkové programy. Jejich zdrojový kód si můžete upravit v libovolném textovém editoru a pro překlad stačí napsat "make". Tím chci říci, že nevím, co si od integrace do Visual Studia slibujete. Můžete samozřejmě zdrojové kódy editovat ve Visual Studiu a nechat ho, aby vám spouštělo ten makefile na kliknutí. Je dokonce možné, že instalátor toho SDK pro Windows provede integraci do Visual Studia automaticky, ale důrazně doporučuji pochopit, jak to funguje a ne ve stylu "já vždycky kliknu na F9 a ono se to udělá".

Prostě zkuste si buď linuxovou nebo windows verzi nainstalovat a uvidíte.