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)

