AlphaDev zrychlilo třídění v knihovně C++ LLVM až o 70 %

9. 6. 2023

Sdílet

Binární kód Autor: Depositphotos

Standardní knihovna C++ v LLVM používá pro třídění čísel uint32, uint64 a float ručně optimalizované funkce v assembleru sort3, sort4 a sort5. Skupina umělé inteligence DeepMind v Google chtěla stávající implementaci urychlit a pojala úlohu jako hru. Skóre je latence a délka třídící funkce v assembleru a úkolem je najít nejmenší skóre. Samozřejmě je nutné také kontrolovat správnost sestaveného algoritmu.

Ve výsledku dokázal AlphaDev snížit latenci až o 70 % jak bylo naměřeno na Skylake, Zen2 i ARMv8. Největší zrychlení je pro délky 3–5, ale i velmi dlouhá třídění jsou rychlejší o zhruba 1–2 %, protože se v nich používají ta krátká třídění. Zrychlení se dosáhlo jednak jinými instrukcemi v assmbleru, ale i změnou logiky viz druhý obrázek. Více detailů najdete v článku v prestižním časopise Nature. Zdrojové kódy jsou na GitHubu.

(zdroj: arstechnica)

Autor: Deepmind, Google
Autor: Deepmind, Google
Našli jste v článku chybu?

Autor zprávičky

První linux nainstaloval kolem roku 1994 a u něj zůstal. Později vystudoval fyziku a získal doktorát.