Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: jklouda 21. 06. 2010, 02:59:00

Název: Jak provádět paralelní výpočty na GPU
Přispěvatel: jklouda 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.
Název: Re: programování GPGPU
Přispěvatel: jimik 21. 06. 2010, 09:20:51
napr. tu http://developer.amd.com/gpu/ATIStreamSDK/Pages/default.aspx (http://developer.amd.com/gpu/ATIStreamSDK/Pages/default.aspx) v 'examples' v SDK je vypis najdeneho hardveru. zatial este OpenCL 1.0
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: Jaroslav Klouda 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.
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: stilett 21. 06. 2010, 21:53:45
Požadavek na univerzalitu poměrně zužuje výběr:

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?
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: Jaroslav Klouda 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 ?  ::)
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: jimik 22. 06. 2010, 08:01:47
ano, tie dva jadra(alebo sa to tvari ako viac jadier ?) Core2 Duo pomocou OpenCL
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: stilett 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.
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: Jaroslav Klouda 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.
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: Jaroslav Klouda 22. 06. 2010, 16:56:40
ještě přikládám hw konfiguraci
(http://img690.imageshack.us/img690/7236/x700.th.jpg) (http://img690.imageshack.us/i/x700.jpg/)
(http://img31.imageshack.us/img31/9643/sempron.th.jpg) (http://img31.imageshack.us/i/sempron.jpg/)
(http://img532.imageshack.us/img532/1417/atix1950.th.jpg) (http://img532.imageshack.us/i/atix1950.jpg/)
(http://img823.imageshack.us/img823/7549/core2duo.th.jpg) (http://img823.imageshack.us/i/core2duo.jpg/)
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: stilett 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.
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: stilett 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".
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: Jaroslav Klouda 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í ?
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: OpenSource 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.
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: jimik 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 ;-)
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: stilett 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.
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: Jaroslav Klouda 23. 06. 2010, 15:39:34
Tak jsem zvažoval že si nějakou tu graf. kartu pořídím. Doporučíte mi nějakou konkrétní graf. která by byla vhodná pro tento účel? zašel bych si pro ni.
Líbí se mi třeba Sapphire HD 5670 Ultimate, abych se vešel tak nějak do 3tisic. ;)
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: stilett 23. 06. 2010, 21:08:16
V konkrétních typech karet se neorientuji, kdo se v tom má vyznat - udržet krok s výrobci. Karta vypadá nabitá technologiemi. Trochu mně znepokojuje poznámka "OpenCL compliant driver and SDK release scheduled for later in 2010". V tom seznamu u SDK je uvedena, tak nevím, co si o tom myslet.
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: Jaroslav Klouda 23. 06. 2010, 22:08:39
Prý by mělo mít vliv i single x double precision. Beru to tak že mi výsledek výpočtu vyjde o něco přesněji. Jde o to jak moc se liší výsledky zpracování na jednoduché a dvojité přesnosti. Která karta tedy zpracuje výsledek rychleji a která s přesnějším výsledkem? :oops:
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: Jaroslav Klouda 25. 06. 2010, 15:33:56
Když zapojím  HD 5770 a 1950Pro do Crosfire budou vypočty probíhat rychleji a nebo přesněji?
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: stilett 26. 06. 2010, 07:48:25
To jsem nikdy nezkoušel, ale stačil pohled do FAQ přiloženým k SDK:
Citace
OpenCL applications can explicitly invoke separate compute kernels on multiple compatible GPUs in a single system. The partitioning of the algorithm to multiple parallel compute kernels must be done by the developer. It is recommended that ATI CrossFire be turned off in most system configurations so that ATI Stream applications can access all available GPUs in the system.
ATI CrossFire technology allows multiple AMD GPUs to work together on a single graphicsrendering tasks. This method does not apply to ATI Stream computational tasks because it is not compatible with the compute model used for ATI Stream applications.
Čili CrossFire to nepodporuje, je potřeba ho vypnout a aplikace pak můžete pro běh na více GPU naprogramovat ručně.
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: jose 26. 06. 2010, 23:36:59
to je bakalářka?  :D Na Felu?
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: Jaroslav Klouda 10. 07. 2010, 13:16:48
graf. kartu už mám je to HD 5770, takže pro můj účel bude stačit. Teďka bych chtěl přejít k řešení toho programu. Jaký paralelní algoritmus zvolit pro srovnání rychlosti výpočtu CPU a GPU ?
Název: Re: Jak provádět paralelní výpočty na GPU
Přispěvatel: Jaroslav Klouda 22. 08. 2010, 16:58:14
Jakým způsobem by se daly pomocí GPGPU řešit výpočty na paralelních systémech ? Např. jak by se programovala aplikace, která využívá knihovny MPI v počítačovém clusteru ? Pokud vím tak zatím existuje řešení jen pro jeden počítačový systém.  :-\