SIMD (Ассемблер NASM Linux x86-64)

Третий курс линейки об ассемблере x86-64: векторные вычисления через SSE и AVX/AVX2 — регистры xmm/ymm, работа с числами с плавающей точкой и целыми числами, перестановки данных и переход к трёхоперандному синтаксису AVX.
Средний уровень
Часть
2 программ →
Сертификат Stepik

Чему вы научитесь

  • Понимать, что такое SIMD и когда векторизация действительно ускоряет код
  • Работать с регистрами xmm и ymm, учитывать выравнивание данных и кэш
  • Ориентироваться в семействах расширений (SSE, SSE2, AVX, AVX2) и собирать программы с их использованием
  • Загружать, сохранять и выполнять скалярную и упакованную арифметику с числами с плавающей точкой
  • Выполнять горизонтальные операции, сравнение и преобразование типов
  • Управлять точностью вычислений и использовать математические инструкции
  • Работать с упакованными целыми числами: арифметика, умножение, сдвиги, логические операции
  • Использовать сравнение, маскирование, сбор и разбор данных (gather/scatter)
  • Переставлять и компоновать данные внутри регистров: shuffle, unpack, blend
  • Переходить на трёхоперандный синтаксис AVX и работать с 256-битными регистрами, включая broadcast

Для кого этот курс

Тем, кто прошёл курсы «Основы» и «Продвинутый уровень» линейки и хочет разобраться в векторных вычислениях Разработчикам высокопроизводительных приложений — обработка изображений, аудио, численные расчёты, где важна скорость вычислений Тем, кто пишет или читает код с использованием интринсиков SIMD в C/C++ и хочет понимать, что происходит на уровне инструкций Всем, кто интересуется низкоуровневой оптимизацией и хочет добавить SIMD в свой набор инструментов осознанно, а не по шаблону

Начальные требования

  • Уверенное владение материалом курсов «Основы» и «Продвинутый уровень» линейки — особенно темами памяти, выравнивания и оптимизации из курса 2
  • Процессор с поддержкой SSE/AVX2 (у большинства современных x86-64 процессоров она есть) — требования уточняются в разделе о сборке и запуске
  • Специальных знаний линейной алгебры не требуется, хотя знакомство с векторами/матрицами облегчит понимание некоторых примеров

Наши преподаватели

Как проходит обучение

Формат курса такой же, как у предыдущих: теория и практика в каждом уроке. Особенность в том, что почти каждая тема сопровождается сравнением скалярного и векторного варианта одного и того же кода — так нагляднее видно, что именно даёт SIMD и какой ценой. Курс завершается разделом о том, когда векторизация не помогает, и мини-проектом, где нужно самостоятельно решить, какие части кода стоит векторизовать.

Программа курса

загружаем...
Certificate

Сертификат

Сертификат Stepik

Отзывы прошедших курс

5
из 5
из 2 отзывов
2 отзыва
загружаем...

Входит в 2 программы

  •    
     
     
  •    
     
     

Что вы получаете

  • Понимание принципов SIMD и практический навык работы с регистрами xmm/ymm
  • Умение писать векторизованный код для чисел с плавающей точкой и целых чисел на SSE и AVX/AVX2
  • Навык перестановки и компоновки данных внутри регистров (shuffle, unpack, blend)
  • Критическое понимание того, когда векторизация оправдана, а когда нет
  • Завершённый мини-проект с применением векторных вычислений в портфолио
  • Сертификат о прохождении курса

Сколько стоит обучение

Price: 790 
Вы попробовали и поняли, что вам сейчас не подходит этот курс? Ничего страшного, мы вернём вам деньги в течение 30-ти дней после покупки.

Часто задаваемые вопросы

Расскажите о курсе друзьям

Price: 790