Javítja a defragmentációs lehetőségeket az AMD VMA

A Vulkan API-hoz tervezett Vulkan Memory Allocator 2.2-es verziója komolyan megkönnyítheti a memória menedzselését.

Az AMD még az előző év nyarán állt elő a Vulkan Memory Allocator (VMA) függvénykönyvtárral, amely kifejezetten azokat a fejlesztőket célozta, akiknek az új explicit API alacsonyabb szintű elérése inkább teher, mint előny. Ennek az oka az lehet, hogy a Vulkan API-ra írt alkalmazásnál mindent előre meg kell mondani, ezáltal lekezelni az egyes olyan szituációkat, amelyeket a korábbi API-knál kezelt a meghajtó. Tipikusan a memóriaallokáció és az erőforrások kreálása hathat bonyolultnak a Direct3D 11 és OpenGL API-khoz viszonyítva, mivel az egész alkalmazás működéséhez rengeteg olyan kódot kell a programba írni, amelyek önmagukban nem csinálnak semmit, csak a programozó munkáját segítik a különböző automatizálásokkal, végeredményben viszont ez biztosítja a teljesítményt.

Az AMD VMA gyorsan kapott egy 2.0-s változatot, amely bevezette a defragmentációt. Ez azért volt fontos, mert az allokációk létrehozása és törlése folyamatosan zajlik a  memóriában, és egy idő után a fedélzeti tár eléggé töredezetté válik. Mondhatni az allokációk között amolyan lyukak keletkeznek, ahova nem feltétlenül fér be egy új allokáció. Ezek problémát jelentenek, mert így a felhasználható videomemória mennyisége folyamatosan csökken, elvégre hiába van például összeadva viszonylag sok memóriakapacitás szabadon, ha ezek nem alkotnak egy egybefüggő, allokálható területet. A defragmentációval az egyes allokációk egymásra tolhatók, hogy aztán a szabad memóriaterület egybefüggően legyen hozzáférhető és ezzel allokálható. A funkció viszont csak az úgynevezett HOST_VISIBLE memóriatípusnál volt használható, illetve ha a defragmentált területen vannak pufferek és képobjektumok, akkor ezeket ki kellett törölni, majd újra létre kellett hozni és újra be kellett kötni.

A VMA 2.2 alapvető célja a defragmentáció jelentős javítása, így az új függvénykönyvtár már nem csak HOST_VISIBLE, hanem DEVICE_ LOCAL memóriatípus mellett is bevethető, sőt, még a rendszermemória HOST_VISIBLE részére is alkalmazható. A jelentős áttervezés miatt a régi interfész elavult, de végeredményben ez hasznos, mivel így a fejlesztők majdnem kész rendszert kapnak, amelyen belül csak igen minimális módosítások lehetnek szükségesek.

További lényeges újítás még a létrehozott allokációk átméretezésének lehetősége, illetve az úgynevezett buddy algoritmusok támogatása az egyedi memóriatárakhoz.

Az alábbi GitHub oldalon elérhető VMA legújabb verziója. Az AMD szokás szerint várja a fejlesztői visszajelzéseket, valamint maga a függvénykönyvtár továbbra is gyártótól független, így akármilyen grafikus vezérlővel üzemképes, illetve a nyílt forráskód is megmaradt, tehát tetszőlegesen módosítható.

  • Kapcsolódó cégek:
  • AMD

Azóta történt

Előzmények

Hirdetés