2010. március 23., kedd

OpenCL valamint GT300/RV870

Most, hogy próbálom magam elhelyezni az OpenCL világában egyre több információt és nagyon profi módon összeállított anyagot lelek fel magyar nyelven is és ez igen nagy örömömre szolgál. Most egy levelet sikerült elcsípni a Google segítségével. Remélem nem haragszik meg a szerzője, hogy belinkelem. Szóval olvassuk csak mert nagyon érdekes...

Üdvözlet mindenkinek,
István mondta, hogy szóljak pár szót az én gumicicámról, név szerint az OpenCL-ről. Aki esetleg már ismeretes a fogalommal annak a bevezető nem fog sok újat mondani, de az új kártyákról érdemes elolvasni az ismertetőket.
Az OpenCL egy új GPGPU eljárás/programnyelv/keret ami az Apple szárnyai alatt látta meg a napvilágot. A kezdeményezés lényege hogy egy egységes keretet adjon a GPGPU fogalomnak, ami könnyen kezelhető és mindenek felett platform független (a Mac OSX alatt léteznek a legrégebb óta működő compilerek). A kezdeményezés olyannyira ígéretesnek bizonyult, hogy felsorakozott mögé mindenki, akit az IT világban érdemes lehet megemlíteni (a lista irdatlan hosszú, minden nagy névvel rajta). A fejlesztés illetve szabványok jóváhagyója a Khronos Group (www.khronos.org). Az új keretrendszer roppant rugalmas és kényelmes is, nagyon jól struktúrált programok írhatók benne ahol jól elkülöníthetők és szinkronizálhatók a CPU-n és a GPUn végzett számítások. A keret egy-két említésre méltó tulajdonsága: a device-okon (lett légyen az GPU vagy CPU vagy akármi) lefutó programkód C szabvány nyelven írandó/írható, OpenGL hívások engedélyezettek device-ról (ergo kirajzoláshoz nem kell CPU-ra visszatérni sem buffert cserélni a CPU-val), a device-on futó kód (ezentúl kernel) runtime fordul (jól megírt program CPU-n lekérdezi a device képességeit (shader szám, elérhető memória, stb.), ehhez mérten paraméterezi fel a kernelt, majd ezekre optimalizálva fordítja le a kódot az OpenCL compiler. Így a jól megírt program minden kártyán optimálisan futhat, de más előnyei is vannak (bár kellemetlenségeket is okoz, ez tény)). Jól láthatóan a vörösök és a zöldek is nagy erőbedobással dolgoznak a fejlesztői környezeteiken és elsősorban az OpenCL támogatás az ami bővül minden egyes újabb verziónál. Szerintem mindenképp érdemes legalább egy pillantást vetni az új keretre, és megfontolandónak tartom a nagyobb lélegzetvételű új projektek ebben a nyelvben történő elkezdését. A cross-platform jellege, a gyártófüggetlensége, az OpenGL-el nem titkolt házasítása, a jól strukturáltsága, a C nyelv ismertsége és az óriási támogatása miatt szerintem futótűzként fog elterjedni a használatban. Aki jól tud CUDA-ban programozni, annak nem lesz nagy was ist das elsajátítania, mert a nyelv szintaktikája és megközelítése javarészt a CUDA-ra hasonlít. A nyelv felépítésében az NVIDIA volt a domináns.

Hol tart az OpenCL most?

NVIDIA nem kis lépéselőnyben van ATi-val szemben. NVIDIA-nak már van Mac-Linux-Windows alá CPU-ra és GPU-ra fordító compilere olyan segédprogramokkal, amik a kernelek debuggolását és optimalizálását is elősegítik (egy apró kényelmetlensége, hogy a kernelt nehezebb debuggolni, mert runtime fordul, ezért a fordítási hibák nem a program többi része mellett dobnak fordulási hibát. Ha az ember használ valami bonyolultabb fejlesztői környezetet, ami teszem azt támogat változókövetést, stb. akkor ezeket a funkciókat nem lehet használni a kernel debuggolására, mert a host processzortól független a program futása. Ezekhez a problémákhoz nyújt segítséget a VisualProfiler nevezetű okosság zöld oldalon). ATi nemrég fogadtatta el a teljes CPU támogatást natív 64-bites műveletekkel és gőzerővel dolgozik a GPU-s compileren. Amint ezt a csúfos lemaradását behozza az ATi, a zöldek elkezdhetnek rettegni.

Milyenek lesznek az új generációs GPU-k?

Megpróbálom az eddigi jól-rosszul palástolt vörös partiságomat leplezve objektíven tálalni a tényeket. Az NVIDIA GT300 kódú lapkája egy nem titkoltan GPGPU-ra épített chip. A zöldek ha félhivatalosan is, de bedobták a törülközőt az asztali szegmensbe szánt kártyákkal, elmondásuk szerint nem látnak már benne akkora piacot, és elsősorban az ipari felhasználás és az általános számításokra szeretnének koncentrálni. Az új kártyájuk DX11 alatt nyújtotta teljesítményt nem tartják olyan fontosnak. (Ez valószínűleg azért van, mert a 4xxx Radeon széria nagyon csúnyán elkente a GT2xx kártyák száját, és az ATi aggresszív árpolitikája ellehetetlenítette az NVIDIA-t a piacon. A korábbi 25%os piaci részesedésről 50% fölé emelkedett az ATi egyetlen év alatt. A vörösök megoldásai rendre felülmúlták ár/teljesítmény arányban a zöldekét. Az NVIDIA ilyen módon szeretne új piacon egyeduralkodóvá válni, ami teljesen érthető és logikus lépés.) Hardverben viszont nem kis lemaradással küszködik az NVIDIA, november végére saccolják az első GT300as kártya startját, ekkorra a vörösök már a Radeon 5870X2 kártyával fognak jelentkezni, aminek már a nevét is csak félve merem kimondani. A vörös tábor két hete dobta piacra az első RV870-es lapkával ellátott kártyájukat, a Radeon 5870-et és a kistestvérét, az 5850-et. Ezek nem titkoltan DX11re lettek bedrótozva, és ezzel érzésem szerint végleg megpecsételődött az NVIDIA sorsa a játékpiacon. A napvilágot látott tesztek azt bizonyítják, hogy az 5870 ereje DX11 támogatás nélkül is 85-90%-át hozza a korábbi kétmagos megoldásoknak (4870X2 és a GTX295), ami figyelemreméltó teljesítmény. Az NVIDIA új megoldása is várhatóan hasonló eredményt fog nyújtani, bár ez a DX11 hardveres elhanyagolása miatt (A DX11 legnagyobb újítását, a tesszalátor egységet nem implementálják, hanem a CUDA magok fogják emulálni) nem lesz ennyire látványos a játék teszteken. Az új üdvöskékről most is elmondható az a különbség, ami mindig is megvolt: a zöld kártyák memória, memória sávszélesség és textúrázó egység gazdagok, és ezt a jó tulajdonságukat a megszokottnál jobban erősítették, míg a vörösök annyira Shader processzor gazdagok, amennyire azt nem szégyellték (és textúrázó egységből is rápakoltak azért annyit, amennyi a korábbi generációs GTX295-ön van, csak hogy ne érje szó a ház elejét). Alább áljék pár hasznos link az érdeklődőknek, akik a kártyák újításairól szeretnének informálódni (rövidített verzió a linkek után):
Röviden a Fermi nevű GT300-as kártya egy nagyon memóriagazdag, gyorsítótáraiban bővebb, memóriasávszélben nagyobb megoldás lesz, mint a Cypress névre keresztelt 5870, és legnagyobb előnye ebben rejlik. A CUDA magokhoz rendelt cache 64kByte, szemben a Cypress 32kByte-jával. A CUDA magok csoportjaihoz rendelt L2 cache is figyelemreméltó méretű (768kByte), de ezt nehéz összemérni a Global Data Share-rel a Shaderek között, mert az egy 64kByte-os gyorsító tár a VRAMhoz. Az RV870 előnyei pedig a brutális számítási kapacitás (1600 shader proceszor egy magon. Egy db shader képességei a prohardveres oldalról olvashatók le) és talán a legfontosabb, hogy natív 64 bites felépítésűek a shaderek (A GT300 egy 32 bites architektúra, így következő generációváltásig biztos nem lesz fejlődés ilyen téren), ergo nem lassulnak a számítások fele tempóra 64 bites műveletek mellett. Az RV870-et a maga szerény 2,7 TFLOPS teljesítményével ha szembeállítjuk a beígért GT300 650 GFLOPS (64 bit) illetve 1,3 TFLOPS (32bit) teljesítményével, akkor azt hiszem elfogultság nélkül állíthatom hogy bármily szomorú is, annak ellenére hogy az NVIDIA kifejezetten az ipari és kutatási szegmenst akarja megcélozni a kártyáival, az ATi megoldások nagyon erősen meg fogják szorongatni őket (ha csuklóból nem verik el), különösen ha számításba vesszük azt is, hogy az ATi elsősorban az otthoni felhasználáshoz mérten fogja beárazni a kártyáit, nem pedig az ipari szegmenshez mérten. Objektivitásomat megtartva addig, hogy lenyeljek egy nagyon frappáns cikket (csak hogy miért vagyok vörös párti), véleményem szerint november-december tájára biztosra veszem hogy elkészül az ATi-s OpenCL compiler GPU-ra, és az akkor kijövő Radeon 5870X2, a maga előrelátható 5 TFLOPS-os 64 bites számítási kapacitásával félelmetes lesz. Én hobbi és napi szinten otthon vagyok a témában, onnan ez a tájékozottság. Ezután az ismertető után engem kár kérdezni, hogy milyengépet lenne érdemes venni. (Noha konkrét ötleteim azért vannak)
Nagy Máté Ferenc
2009. Okt. 8., Cs, 11:59:45 CEST

0 megjegyzés :

Megjegyzés küldése