Векторизация в C++: от ассемблерных вставок к переносимой производительности со std::simd
Подробнее о конференции C++ Russia: https://jrg.su/nbdpQS — — Скачать презентацию с сайта — https://jrg.su/qzX49M Хватит ли вам терпения копировать код, заменяя _mm256 на _mm512? Надоело гадать, справится ли автовекторизатор с вашим циклом? Разработка векторизованного кода действительно долго была головной болью и требовала продвинутых знаний от инженера. Последнее время помимо SSE и AVX становятся популярны векторные расширения ARM (NEON, SVE) и RISC-V (RVV). Помимо отличного от x86 набора команд, в других архитектурах появляются альтернативные программные модели векторных сопроцессоров, что означает невозможность создания переносимого решения традиционными методами. Развенчаем миф о необходимости жертвовать абстракцией ради производительности. Детально разберем эволюцию от ассемблерных вставок до std::simd и рассмотрим, как заставить один и тот же алгоритм идеально работать и на x86 с AVX2, и на RISC-V с RVV, и на ARM с SVE.
Название:
Векторизация в C++: от ассемблерных вставок к переносимой производительности со std::simd
Категория:
Разное