Brutális sebességnövekedés a Metal API-val az iOS 9-ben!

Ez a cikk legalább 1 éve frissült utoljára. A benne szereplő információk a megjelenés idején pontosak voltak, de mára elavultak lehetnek.

Az Apple a WWDC keynote közepén mutatta be a Metalt, ami nem sok említést kapott. Mindössze egy játékot láttunk, ami gyönyörűen futott egy iPaden.

Screen Shot 2015-06-15 at 19.30.27

A helyzet ennél sokkal “drámaibb”. Az Apple egy olyan lehetőséget adott a fejlesztők kezébe, amivel remekül kihasználhatják az A7 és újabb processzorokat és a hozzájuk tartozó GPU-kat. A7-es van egyébként az iPhone 5s-ben, az iPad mini második generációjában, illetve az iPad Air-ben, A8 az iPhone 6-ban és 6 Plus-ban, A8X pedig az iPad Air 2-ben. Lényegében az iPhone 5s-től kezdve az összes iPhone-tulajdonos ki tudja majd használni a Metal adta lehetőségeket.

Az egyik kedvenc portálom, az anandtech.com a GFXBench nevű alkalmazással tesztelte a jelenlegi eszközökön a Metalt, és összehasonlította a jelenlegi OpenGL-es megoldással. Ekkora sebességnövekedést anno a 64bites átállásnál láttunk: Dupla szóhossz, dupla sebesség – mire képes a 64 bites Apple A7?

cOVER2_678x452

A Metal API segítségével a fejlesztő könnyedén és közvetlenül hozzáfér a GPU-hoz, és ez rengeteget számít. Jelenleg ha az OpenGL-t használjuk, és ki akarunk számíttatni valamit a GPU-val, akkor ahhoz a CPU-n keresztül tudunk hozzáférni. Tehát ha például egy almát akarunk lerajzoltatni, akkor a CPU-nak megmondjuk, hogy mit csináljon a GPU-val. Ez két okból sem előnyös: egyrészt ha mindennek keresztül kell mennie a CPU-n is, az sokkal lassabb, mintha közvetlenül a grafikus processzornak küldenénk az adatokat. A másik probléma az, hogy ha mindkét processzor folyamatosan dolgozik rajzolás közben, akkor fölöslegesen terheljük a CPU-t, ahelyett, hogy csak a GPU-t használnánk.

A Metal API-val többé nem kell a CPU-t használni, hanem elég csak a GPU-t meghívnunk egy számítás erejéig. Ez egyébként önmagában nem lenne lehetséges, nem véletlen frissítette az Apple a saját processzorait, lásd A7, A8, A8X. Ezekben van egy speciális rész, ami a processzor és a grafikus egység közötti kommunikációt hivatott megkönnyíteni.

A népszerű többplatformos grafikus API-k (például OpenGL, DirectX, stb.) használatakor a processzor az idő egy jelentős részét a GPU fölé írt absztrakciós kódban tölti. Az Apple-nek azonban nincs szüksége ilyen absztrakciós rétegekre, hiszen kezükben tartják a hardvergyártást, és olyan, saját tervezésű CPU-kat (és adott esetben GPU-kat) tehetnek a Mac, iPhone és iPad készülékekbe, amilyet csak szeretnének.

Röviden ennyi a lényeg, nézzük ezt meg számokban:

74172

Azt hiszem jól látszik a különbség: ha rengeteg (több ezer) egyszerű objektumot rajzoltatunk ki, akkor a Metal használata legalább háromszoros sebességnövekedéshez vezet (azaz a leglassab, Metalt használó kód is háromszor gyorsabb, mint a leggyorsabb OpenGL-es). Ha ráadásul ugyanazon a készüléken futó kódnak a sebességnövekedését figyeljük, akkor láthatjuk, hogy például az iPad Air 2 esetében több, mint négyszeres gyorsulást ért el a Metal.

Azt is meg kell említeni viszont, hogy amennyiben nem kifejezetten a nagyon gyakori renderelésre megyünk rá, akkor a Metal nem eredményez drasztikus gyorsulást (bár pár százalékot így is javít az eredményeken):

74164

74166

Ezek még érdekelhetnek:


Írd le a véleményedet! (Moderációs elveinket ide kattintva olvashatod.)

Hozzászólás írásához be kell jelentkezned!