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

RU / День 2 / 17:15 / Зал 2

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

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

Он расскажет о ключевых правилах использования векторизованных инструкций, покажет несколько примеров оптимизаций и «анти-оптимизаций», с которыми ему пришлось столкнуться при работе над Unum.