Доклад

Векторизация в C++: от ассемблерных вставок к переносимой производительности со std::simd

Хватит ли вам терпения копировать код, заменяя _mm256 на _mm512? Надоело гадать, справится ли автовекторизатор с вашим циклом? Разработка векторизованного кода действительно долго была головной болью и требовала продвинутых знаний от инженера.

Последнее время помимо SSE и AVX становятся популярны векторные расширения ARM (NEON, SVE) и RISC-V (RVV). Помимо отличного от x86 набора команд, в других архитектурах появляются альтернативные программные модели векторных сопроцессоров, что означает невозможность создания переносимого решения традиционными методами.

Развенчаем миф о необходимости жертвовать абстракцией ради производительности. Детально разберем эволюцию от ассемблерных вставок до std::simd и рассмотрим, как заставить один и тот же алгоритм идеально работать и на x86 с AVX2, и на RISC-V с RVV, и на ARM с SVE.

Спикеры

Доклады