Чему вы научитесь
- Понимать, что такое SIMD и когда векторизация действительно ускоряет код
- Работать с регистрами xmm и ymm, учитывать выравнивание данных и кэш
- Ориентироваться в семействах расширений (SSE, SSE2, AVX, AVX2) и собирать программы с их использованием
- Загружать, сохранять и выполнять скалярную и упакованную арифметику с числами с плавающей точкой
- Выполнять горизонтальные операции, сравнение и преобразование типов
- Управлять точностью вычислений и использовать математические инструкции
- Работать с упакованными целыми числами: арифметика, умножение, сдвиги, логические операции
- Использовать сравнение, маскирование, сбор и разбор данных (gather/scatter)
- Переставлять и компоновать данные внутри регистров: shuffle, unpack, blend
- Переходить на трёхоперандный синтаксис AVX и работать с 256-битными регистрами, включая broadcast
О курсе
Третий курс линейки об ассемблере x86-64: векторные вычисления через SSE и AVX/AVX2 — регистры xmm/ymm, работа с числами с плавающей точкой и целыми числами, перестановки данных и переход к трёхоперандному синтаксису AVX.
Для кого этот курс
Тем, кто прошёл курсы «Основы» и «Продвинутый уровень» линейки и хочет разобраться в векторных вычислениях
Разработчикам высокопроизводительных приложений — обработка изображений, аудио, численные расчёты, где важна скорость вычислений
Тем, кто пишет или читает код с использованием интринсиков SIMD в C/C++ и хочет понимать, что происходит на уровне инструкций
Всем, кто интересуется низкоуровневой оптимизацией и хочет добавить SIMD в свой набор инструментов осознанно, а не по шаблону
Начальные требования
- Уверенное владение материалом курсов «Основы» и «Продвинутый уровень» линейки — особенно темами памяти, выравнивания и оптимизации из курса 2
- Процессор с поддержкой SSE/AVX2 (у большинства современных x86-64 процессоров она есть) — требования уточняются в разделе о сборке и запуске
- Специальных знаний линейной алгебры не требуется, хотя знакомство с векторами/матрицами облегчит понимание некоторых примеров
Преподаватели курса
Как проходит обучение
Формат курса такой же, как у предыдущих: теория и практика в каждом уроке. Особенность в том, что почти каждая тема сопровождается сравнением скалярного и векторного варианта одного и того же кода — так нагляднее видно, что именно даёт SIMD и какой ценой. Курс завершается разделом о том, когда векторизация не помогает, и мини-проектом, где нужно самостоятельно решить, какие части кода стоит векторизовать.
Сертификат
Успешно завершив курс, вы получите сертификат от платформы Stepik. Уже 4 учеников получили сертификат.
Что вы получите
- Понимание принципов SIMD и практический навык работы с регистрами xmm/ymm
- Умение писать векторизованный код для чисел с плавающей точкой и целых чисел на SSE и AVX/AVX2
- Навык перестановки и компоновки данных внутри регистров (shuffle, unpack, blend)
- Критическое понимание того, когда векторизация оправдана, а когда нет
- Завершённый мини-проект с применением векторных вычислений в портфолио
- Сертификат о прохождении курса