Pull to refresh
4K+
4
Артём Дмитриев@a_eridani

User

3
Rating
Send message

a[mask] = f(a[mask]) на NEON. compress вместо blend

Level of difficultyHard
Reading time11 min
Reach and readers6K

Блендинг считает функцию для всех элементов и сохраняет только нужные. Для дешевых функций это оптимально, но на pow проигрывает в несколько раз. Можно сжать подходящие элементы, посчитать только их и разжать обратно. Разбираемся, где граница, и делаем адаптивный алгоритм.

Читать далее

Stream compaction на NEON. Векторизуем copy_if

Level of difficultyMedium
Reading time7 min
Reach and readers7.4K

Как разогнать copy_if на NEON в 30+ раз без единой ветки в горячем цикле — эмулируем compress инструкцию, которой в NEON нет, через table lookup и немного битовой магии.

Читать далее

Information

Rating
1,550-th
Registered
Activity

Specialization

Системный инженер