TGTGInsightintelligence telegramLIVE / telegram public index
← Experimental chill
Experimental chill avatar

TGINSIGHT POST

Post #176

@experimentalchill

Experimental chill

Visualizzazioni12,600Numero di visualizzazioni
Pubblicato20 giu20/06/2022, 18:05
Contenuto del post

Contenuto

На дворе 2022 год Мы находим оптимизации в mem*/str* функциях на мажорных платформах в 20%, которые были доступны как лет 10 Да, это патч в glibc. В целом история такая: на x86 достаточно легко переходить из векторного кода в скалярный -- если есть вектор сравнения на gif, то на x86 есть PMOVMSKB инструкция, дающая скалярную маску На ARM такого нет, и все ломали голову как же так сделать. Даже в glibc инженеры Arm делали через 4 цикла и просаживая latency. Поизучав NEON SIMD, я нашёл инструкцию shrn -- shift right and narrow. На гифке представлен shift right and narrow на 4. Теперь у нас есть маска, не 16 битная, но хотя бы 64, с которой уже можно скалярно работать. Что произошло в итоге: 1. ZSTD на 5% 2. Хэштаблицы гугла на 3-8% 3. glibc на 10-20% для размеров <=128 4. ClickHouse -- string comparison and sorting на 15% 5. Через 2-3 недели ждите статью, да, это software optimization guide. 3 года назад я студентом увлёкся армами, а вот сейчас я буду писать гайды совместно с вендорами Mic drop