Innovatív elgondolás nyert az AMD programozói versenyén

Az AMD még az elmúlt évben jelentette be programozói versenyét, melyen belül az OpenCL felületen kellett valami értékeset alkotni. A TopCoder közreműködésével megrendezett, 50 000 dolláros összdíjazású verseny két részből állt, azon belül is a sebességet és az innovációt értékelték. A sebesség kategóriája egyszerű volt, hiszen adott volt a feladat, és azt a lehető leggyorsabb kóddal kellett végrehajtani. Ennél sokkal izgalmasabb volt az innovációra kihegyezett forduló, hiszen amellett, hogy a cégek folyamatosan új ötletekkel állnak elő az OpenCL-re építkezve, igazán jó elképzelések akár otthon is születhetnek.

A verseny győztese David A. Richie lett, aki dar11031971 néven nevezett a Ghost Rider nevű alkalmazással, melynek alapötlete valóban innovatív. Biztos sokan érezték már, hogy az FPS és RPG játékok esetében az ellenfelek mesterséges intelligenciája vagy túl okos, vagy túl buta. A fejlesztők megpróbálják szimulálni a megfelelő viselkedést, de ez nem mindig sikerül tökéletesre. Nem beszélve arról, hogy a játékba helyezett álcázási lehetőségek sem mindig működnek, hiszen előfordulhat, hogy egy sűrű bokorban lapulva is észreveszi a gép a jelenlétünket, vagy rosszabb esetben fejbe is lövi virtuális karakterünket, ami bosszantó lehet, hiszen észrevehetetlenül rejtőztünk. A helyzet az, hogy a mesterséges intelligencia irányítása a gép részéről a jelenet szintjén működik, vagyis a gépi ellenfelek irányítása úgymond globális. A virtuális karakterek nem úgy látják a világot, ahogy a játékos, és a programot futtató gép konkrétan tudja, hogy hol vagyunk, vagyis jogosulatlan előnyhöz jut ebből a szempontból. Ez persze az adott motoron belül irányítva van, vagyis az ominózus „jogosulatlan előny” nem úgy értendő, hogy azt a rendszer szándékosan és kíméletlenül kihasználja. Az egész egy korrekt szimulációt valósítana meg, de ez olyan működési elvek mellett eleve lehetetlen, amikor egy virtuális ellenfél nem olyan információk alapján dönt az interakcióról, mint mondjuk a játékos. El lehet érni egy egészen jó szintet, ahol már hihetőnek tűnik, hogy a mesterséges intelligencia emberszerű, de időnként erősen hullámzó lesz a teljesítmény, vagyis vagy túl jól reagál a gép a jelenlétünkre, vagy észre sem vesz minket, holott egyértelműen fel kellett volna figyelnie ránk.

A Ghost Rider alapötlete lényegében azon alapul, hogy a gépi ellenfelek csak olyan információhoz jussanak, amilyenekhez mi jutunk a játék alatt, és a tájékozódásuk, illetve konkrétan a cselekedeteik is ez alapján legyen kalkulálva. Ennek megvalósítása elméletben eddig sem volt lehetetlen, hiszen lényegében annyinak kell történnie, hogy minden gépi karakter kap egy kamerát, amire ugyanúgy le kell számolni a grafikát, és az alapján tájékozódik a rendszer. A gond a számítási teljesítmény oldalán keletkezik, ugyanis a mai PC-k esetében a processzor felel a jelenet számításáért, míg a külső buszon kapcsolódó grafikus vezérlő tulajdonképpen csak azért van, hogy a felhasználó kapjon képi információt a világról, és reagálhasson arra. Sajnos elmondható, hogy minden gépi ellenfélnek képi információt számolni eléggé erőforrás-igényes, nem beszélve arról, hogy ezeket vissza kell küldeni a processzornak feldolgozásra. A felbontással persze lehet játszani, így ebből a szempontból a mozgatásra váró adatmennyiség nem mondható túlzottan soknak, de a külső busz olyan késleltetéssel dolgozik, ami nem tesz lehetővé túl sok kommunikációt a CPU és a GPU között. Pont ezért követik a fejlesztők a leképzésnél azt a szabályt, hogy a CPU egy irányban ad át információt a GPU-nak, amit a képkocka kiszámítása után megjelenít a kijelző. A rendszer tehát elméletben működhet, de a mai PC-k felépítése nem megfelelő az alkalmazására.

Itt jön elő az integráció, mint kitörési lehetőség. Egy IGP-vel rendelkező processzor eleve tartalmaz egy grafikus vezérlőt, mely dedikált GPU mellett általában nem dolgozik semmit. Ez az egység befogható lenne a gépi ellenfeleknek szánt képi információk számítására. Mivel ebből a felhasználó semmit sem lát, így lényegében nem kell elképesztően jó precizitással, illetve magas felbontással dolgozni. Csupán arra kellenek ezek az extra képkockák, hogy a mesterséges intelligencia olyan körülmények mellett tájékozódjon, ahogyan azt a felhasználó teszi. Ezzel már sokkal közelebb kerültünk az emberi reakciók szimulálásához. A Ghost Rider alkalmazást persze implementálni kell a játék motorjába, így ebből a szempontból még nem láthatjuk az eredményét, de az alábbi videó bemutatja, hogy hogyan is működne belül a rendszer.

Az FPS szerepét a Crysis demója töltötte be, és a Ghost Rider alkalmazás a frame bufferből szerezte a képeket. Ez nem a normális működés, csupán egy példa, hogy miképp dolgozik a rendszer. Látható, hogy az OpenCL-ben írt program a képet egyedi jellemzők alapján azonosítja be, amelyeket a pontok szimbolizálnak. A piros pontok a már kivont jellemzők, míg a zöldek az elbírálás alatt állók. Lényegében a gép itt úgy tájékozódhat, hogy a játékos, illetve a többi gépi ellenfél megváltoztatja a kép egyedi jellemzőit, amit a mesterséges intelligencia kiértékelhet, és megfelelő módon reagálhat rá. A rendszer ezen belül tanítható is. Kimenthetők olyan adatok, amit a később a program beazonosíthat. Látható a videóban, hogy készül egy montain nevű viszonyítási pont, ami egy elmentett állapotot jelent. Ezután ezt a helyet az alkalmazás mindig be tudja azonosítani az egyedi jellemzők alapján, amelyeket ezúttal a kék pontok szimbolizálnak.

A hardver oldalán a működés lényegében úgy néz ki, hogy a dedikált GPU ugyanazon dolgozik, amin eddig, vagyis a játékost látja el képi információkkal. Ám ezelőtt a CPU az IGP leképzési képességeit, illetve a magas általános számítási kapacitást kihasználva kiértékelheti a gépi ellenfelek teendőit úgy, hogy a mesterséges intelligencia olyan adatokat kap a világról, amilyet a játékos. Az integrációnak hála a szükséges kommunikáció is elég gyors lesz, hiszen az összeköttetést biztosító busz a lapkán belül található, vagyis pár ns-os késleltetésről van szó, ami nagyságrendi előrelépés a PCI Express késleltetéséhez viszonyítva.

A Ghost Rider lehetőségeit figyelembe véve talán nem meglepő, hogy David A. Richie kapta a 20 000 dolláros fődíjat, de a második helyezettként befutó elgondolás sem rossz, mely egy újabb lépés a kiterjesztett valóság felé. A dobogón végzett még egy olyan algoritmus, ami a videós adatokkal dolgozó felügyeleti szerveknek lehet előnyös. Az egyes objektumok felismerésének lehetőségét az árnyékok jelentősen rontják, így azokat előbb el kell tüntetni az adott képkockáról. Erre készült az OpenCL-t használó algoritmus, mely a GPU-k erejét kamatoztatja. A dobogóról lecsúszott az X-Ray generátor, de a szimuláció tudományos célra kellően érdekes, így ennek a programnak a fejlesztője is részesült némi anyagi segítségben a projekt folytatásához.

  • Kapcsolódó cégek:
  • AMD

Előzmények

Hirdetés