Видеолекции курса Параллельное программирование.
Лектор: Евгений Калишенко.
В курсе будет рассказано про
- многопоточное программирование на примере
- С++: POSIX threads, Boost, OpenMP, Intell TBB и
- Java: threads, java.util.concurrent, Fork/Join framewok
- теорию параллельных вычислений: алгоритмы консенсуса, атомарные регистры, lock-free и wait-free алгоритмы, шаблоны || программирования
- вычислительные кластеры (на примере MPI)
- другие способы повышения производительности (транзакционная память, асинхронный ввод/вывод…)
Репозиторий: http://code.google.com/p/hpcource
Лекция 1. Введение.
- Мотивация к применению параллельных вычислений
- Закон Амдала
- Общий взгляд на высокопроизводительные системы начиная от расширений SSE, через многоядерность к узлам кластеров
- Обзор технологий многопоточного программирования
- Posix threads
- Java threads, Boost threads
- OpenMP
- Intel TBB
- Java.util.concurrent
- Fork/Join Framework
Посмотреть видео на сайте Лекториума
Скачать: Презентация
Лекция 2. Корректная работа с потоками.
- Механизм запуска потока
- Корректное завершение потоков
- Сравнение различных потоков (POSIX, boost, java)
- Обработка исключений
Посмотреть видео на сайте Лекториума
Лекция 3. Примитивы синхронизации.
- Необходимость синхронизации: гонки данных
- Реализация примитивов синхронизации: алгоритмы Петерсона и Лампорта
- Виды мьютексов: рекурсивные/нерекурсивные, читатели/писатели…
- Корректные захват/освобождение примитивов
- CAS-операции и атомики
Посмотреть видео на сайте Лекториума
Скачать: Презентация
Лекция 4. Примитивы синхронизации — 2.
- Condition variables: использование wait/notify
- Алгоритмы синхронизации: грубая, тонкая
Посмотреть видео на сайте Лекториума
Скачать: Презентация
Лекция 5. Алгоритмы синхронизации.
- Алгоритмы синхронизации: оптимистичная, неблокирующая
- Классы алгоритмов: lock-free, wait-free
- Пулы потоков
Посмотреть видео на сайте Лекториума
Скачать: Презентация
Лекция 6. Ошибки || программирования.
- Гонки данных (Data Race)
- Взаимная блокировка (Deadlock)
- Блокировки при fork многопоточных программ
- Инверсия приоритетов
Посмотреть видео на сайте Лекториума
Лекция 7. Атомарные снимки регистров.
- SWMR-регистры
- Lock-free snapshot
- Wait-free snapshot
Посмотреть видео на сайте Лекториума
Лекция 8. OpenMP и Intel TBB.
- Обзор OpenMP: параллельные секции, области видимости переменных, ограничения
- Обзор Intel TBB: алгоритмы, аллокаторы, деревья задач, планирование
Посмотреть видео на сайте Лекториума
Скачать: Презентация
Лекция 9. Шаблоны || программирования.
- Структурные шаблоны
- Декомпозиция по задачам
- Геометрическая декомпозиция
- Recursive Data
- Pipeline
- Некоторые программные структуры
- Parallel loops
- Boss/Worker
- Разное
- Double check
- Local Serializer
Посмотреть видео на сайте Лекториума
Скачать: Презентация
Лекция 10. Кластерные вычисления.
- История и назначение стандарта
- Обмен сообщениями
- С блокировкой
- Без блокировки
- Отложенные запросы на взаимодействие
- Тупиковые ситуации (deadlock)
- Взаимодействие процессов
- Группы и коммуникаторы
- Операции коллективного взаимодействия процессов
- Редукция
- Виртуальные топологии
- Средства анализа производительности
Посмотреть видео на сайте Лекториума
Скачать: Презентация
Лекция 11. Map/Reduce — теория и практика.
- Идея Map/Reduce
- Hadoop
- Обзор архитектуры
- Примеры задач
- Детали реализации
- Популярные расширения
- Другие реализации M/R: достоинства и недостатки
- Проблемы Hadoop
- Spark
- Disco
- Дополнительно
- Что не надо использовать для построения M/R приложений
- Отказоустойчивость M/R приложений
Скачать: Презентация
Продолжение следует…
Дополнительные материалы:
Сайт курса.
Видеолекции курса Параллельное программирование (2012).
Видеолекции курса Архитектура ЭВМ и основы ОС (2013).
Курс Параллельное программирование в ЗНУ. Лектор: Бувайло Дмитрий Павлович.
Автор: Roman Brovko