A Glibc matematikai kódja 4x jobb eredményt nyújtott AMD Zen processzorokon az FMA implementáció megváltoztatásával

A GNU C Library, vagyis a glibc legfrissebb master ágában nemrégiben megjelent egy fontos commit, amely eltávolítja az ldbl-96 fma implementációt a matematikai függvénykönyvtárból, mivel ez a verzió rosszabb teljesítményt mutat a modern x86 hardvereken. A változtatás eredményeként az ldbl-64 verziót használják helyette, ami jelentős gyorsulást hoz a számításokban. A fejlesztők tesztjei alapján AMD Zen 3 processzorokon x86_64 módban a throughput 4,06-szoros, a latency pedig négyszeres javulást mutat, míg i686 módban is 2,2-2,3-szoros gyorsulás érhető el.

A Glibc matematikai kódja 4x jobb eredményt nyújtott AMD Zen processzorokon az FMA implementáció megváltoztatásával

A teljesítménybeli indoklás és hatások

A döntés hátterében az áll, hogy az ldbl-96, amely 96 bites pontossággal végez belső számításokat, már nem előnyös a mai hardvereken, ahol a 64 bites ldbl-64 implementáció hatékonyabbnak bizonyult. A Zen 3 processzorokon végzett mérések során a master ágon mért értékekhez képest a javított verzió reciprokális throughput-ja x86_64-en 1176,22-ről 289,46-ra, i686-on pedig 1476,06-ról 636,87-re javult, míg a latency esetében hasonló arányú előrelépés látható. Ez a módosítás érinti a sysdeps/i386/i686/multiarch/s_fma.c és a sysdeps/ieee754/ldbl-96/s_fma.c fájlokat, ahol az utóbbit teljesen törölték, így a kód egyszerűbbé és gyorsabbá válik anélkül, hogy a pontosság romlana a gyakorlatban.

A változás jövőbeli hatásai

Ez a frissítés része lesz a Glibc 2.43 kiadásnak, amely 2026 februárjában várható, és további újdonságokat is hoz, mint például újabb CPU-k felismerése, az MSEAL függvény bevezetése, valamint egyéb teljesítményoptimalizálások. A glibc, mint széles körben használt libc implementáció, így még jobban illeszkedik a modern hardverekhez, javítva az alkalmazások teljesítményét Linux alapú rendszereken. A commit már elérhető a glibc git repositoryban.