SIMD и ручная векторизация (доп. семинар для первого курса по языку C и алгоритмам)

3 Просмотры

Специальные выпуски о комбинаторике. Дополнительный семинар, когда сессия уже (почти) сдана, а семестр ещё далеко -- самое время поговорить об отвлече...

Дата загрузки:2022-05-12T23:25:11+0000

Издатель
Специальные выпуски о комбинаторике.

Дополнительный семинар, когда сессия уже (почти) сдана, а семестр ещё далеко -- самое время поговорить об отвлеченных вещах. Например о векторизации.

Мы рассмотрим базовую поддержку векторных инструкций современными процессорами, эффект векторизации на производительность простых примеров, а дальше пойдём к более сложным примерам.

В частности -- к сортирующим сетям.

Лектор: Константин Владимиров
Дата лекции: 2 мая 2022 года
Съёмка: Евгений Богданов.
Звук: Юлий Тарасов.

Слайды ко всем лекциям по комбинаторике: https://sourceforge.net/projects/cpp-lects-rus/files/combinatorics
Исходный код к лекции: https://github.com/tilir/c-graduate/tree/master/simd
Задачник для первого курса: http://olymp1.vdi.mipt.ru

Timeline:
00:00 Векторные возможности CPU
07:50 Хедера для интринсиков и методы работы с ними
14:53 Распечатка, сохранение и загрузка регистров
24:42 Простая арифметика
29:00 Первый пример: find
36:16 Больше интринсиков и blend
42:00 Второй пример: argmin
57:14 Перестановки
01:00:17 Третий пример: copy_if_less
01:13:12 Сортирующие сети
01:22:16 Битонические последовательности
01:32:38 Сортировка внутри векторного регистра
01:37:25 Вращения и сдвиги
01:43:12 Медианные фильтры и завершение

Errata:
* Тут пока пусто
Категория
Изучаем компьютер
Комментариев нет.