cpprussia C++ Russia 2020 СПб (11.11.2020 — 14.11.2020)

SIMD. Производительность, за которую вы уже заплатили

img

В прошлом году Ашот рассказывал, как ускорять обработку данных на видеокартах, а в этом сделает то же самое, но не выводя данные из регистров процессора.

В прошлом году Ашот рассказывал о способах программирования для видеокарт. Они могут обсчитать большую data-parallel задачу существенно быстрее центрального процессора, но их едва ли можно назвать универсальным решением. Когда данные приходят маленькими пакетами или задача имеет суб-линейную сложность, их слишком долго пересылать по PCI-E шине.

Что делать? Использовать SIMD-инструкции. Они есть в большинстве современных процессоров и вы уже заплатили за их наличие высокую цену. В железе появились большие регистры, раздулся CISC-RISC транслятор, да и планировщик задач стал сложнее…​ А компиляторы так и не научились самостоятельно подставлять сложные инструкции. Значит, будем писать руками!

Ашот расскажет о ключевых правилах использования векторизованных инструкций, покажет несколько примеров оптимизаций и «анти-оптимизаций», с которыми ему пришлось столкнуться при работе над <a href="https://unum.xyz">Unum</a>.