Kritikus fontosságú kiterjesztéssel egészült ki a Vulkan API

A VK_EXT_subgroup_size_control lehetővé teszi a subgroup operációk hatékonyabb használatát.

A Khronos Group az előző év tavaszán jelentette be a Vulkan API 1.1-es verzióját, amelynek az egyik legnagyobb újításának a subgroup operációk számítottak. Ezt a képességet már használja is a World War Z, de a jövőben csak terjedni fog, mivel az év végén érkező Doom Eternal című játék, id Tech 7 videojáték-motorja is épít rá. Érkezett azonban egy új, 1.1.116-os Vulkan verzió, amely pont az említett funkciót bővíti egy VK_EXT_subgroup_size_control nevű kiterjesztésen keresztül.

Hirdetés

Mint ismeretes, a The Khronos Group, az eredeti specifikációk kiadásakor a subgroup méretét fix adattal határozta meg. Ezt az alkalmazás mindig lekérdezi az adott gyártó Vulkan implementációjából, és ennek megfelelően történik majd meg az úgynevezett invocationök kezelése. Ezek valószínűleg idegennek hangzanak, de valójában nincs másról szó, mint amit a Microsoft is bevezetett a shader modell 6.0 esetében, csak a redmondi óriáscég a subgroup helyett a wave, míg az invocation helyett a lane szót használja, de a lényeg ugyanaz, a működés hátteréről pedig az alábbi cikkben írtunk.

Ami viszont különbözött a Microsoft koncepciójában, hogy a shader modell 6.0 már a kezdetektől képes volt lekérdezni, hogy minimum és maximum mennyi lane lehet egy wave-ben. Erre a legtöbb hardver implementációja ugyanazt a számot adta vissza, tehát a program oldalán elég volt a minimum értékkel dolgozni, viszont a Radeon RX 5700 sorozat személyében megérkezett az első fejlesztés, amely már képes több módban is üzemelni, így az egy wave-ben kezelhető lane-ek minimum és maximum száma eltér. A shader modell 6.0 tehát erre fel van készítve, de a Vulkan API-n belül a subgroup koncepció csak egy paramétert tudott beolvasni. A friss kiterjesztéssel azonban már ez a rendszer is egy minimum és egy maximum adatot kér, ami a legtöbb grafikus vezérlőn belül még mindig meg fog egyezni, de a Radeon RX 5700 sorozatnál már nem, így ezeknél a hardvereknél több optimalizálási lehetőség adódik majd.

Maga a kiterjesztés olyan besorolású, amit nem kötelező támogatni, viszont nem is gyártóspecifikus, vagyis ahogy jönnek az újabb, kvázi többféle feldolgozási módot kínáló hardverek, úgy lesz egyre több értelme a létezésének. A működés jellege miatt egyébként már most is megéri erre optimalizálni. Ugyan ennek haszna egyelőre csak a Radeon RX 5700 sorozaton belül van, de ha érkezik egy újabb, hasonló képességű GPU, akkor az automatikusan képes előnyt kovácsolni abból, hogy az adott program a subgroup mérete szempontjából különböző minimum és maximum értéket olvas ki, és ezt megfelelően kezeli is.

A VK_EXT_subgroup_size_control kifejlesztésében egyébként az AMD, a Broadcom, az Electronic Arts, a Google, az Intel, az NVIDIA és a Qualcomm vállalt részt.

Azóta történt

Előzmények