Gyorsabb Merge Sort érkezik a Mesa 26.3 Vulkan driverekbe a jobb ray tracingért

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

A Morton-kód kulcsok olyan egy dimenziós egész értékek, amelyeket 3D pontok bináris koordinátáinak összefésülésével állítanak elő, hogy a térbeli adatokat egyetlen dimenzióba képezzék le. A Radeon RADV, az Intel ANV, a Turnip Adreno és a Lavapipe Mesa Vulkan driverek eddig ugyanarra a rendező függvényre támaszkodtak ezekhez a kulcsokhoz. Natalie Vock azonban hatékonysági problémákat talált a jelenlegi rendező kódban, ezért készített egy egyedi merge-sort algoritmust, amely kisebb adathalmazoknál jobb teljesítményt ígér. Emellett a vRAM-használat is hatékonyabb lehet.

Natalie Vock a három hónappal ezelőtti merge requestben így foglalta össze a munkáját:

„Egy egyedi merge-sort nagyobb problémaméreteknél valamivel rosszabb lesz, viszont apró problémáknál teljesen leiskolázza a radix sortot. A mergesort egyetlen dispatchen belül fut, köztes barrier nélkül, és szorosabban kapcsolódik a többi AS build kódhoz, így megspórolható egy VRAM-kör, amikor az rendezetlen kulcsokat kiírjuk, majd visszaolvassuk. Elég kicsi problémáknál (RADV esetén 512 elem alatt, 64-es subgroup mérettel) az összes kulcs előállítható és azonnal rendezhető a shared memóriában, anélkül hogy akár egyszer is VRAM-ot érintenénk (kivéve a rendezett adatok kiírását).”

Az új, egyedileg készített merge sort különösen a kis BVH-knál bizonyult gyorsabbnak, és kevesebb vRAM-körrel hatékonyabban működik.

Három hónapnyi tesztelés és felülvizsgálat után, miközben néhány hibát is kijavítottak, a múlt héten beolvasztották a kódot a Mesa 26.3-ba, így minden nyílt forráskódú Vulkan driver profitálhat belőle. Akiket érdekelnek a technikai részletek, itt találják.