Видеолекции курса Параллельное программирование

Видеолекции курса Параллельное программирование.

Лектор: Евгений Калишенко.

В курсе будет рассказано про

  • многопоточное программирование на примере
    • С++: 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. Введение.

  1. Мотивация к применению параллельных вычислений
  2. Закон Амдала
  3. Общий взгляд на высокопроизводительные системы начиная от расширений SSE, через многоядерность к узлам кластеров
  4. Обзор технологий многопоточного программирования
    • Posix threads
    • Java threads, Boost threads
    • OpenMP
    • Intel TBB
    • Java.util.concurrent
    • Fork/Join Framework


Посмотреть видео на сайте Лекториума

Дополнительные материалы


Скачать: Презентация

Лекция 2. Корректная работа с потоками.

  1. Механизм запуска потока
  2. Корректное завершение потоков
  3. Сравнение различных потоков (POSIX, boost, java)
  4. Обработка исключений


Посмотреть видео на сайте Лекториума

Лекция 3. Примитивы синхронизации.

  1. Необходимость синхронизации: гонки данных
  2. Реализация примитивов синхронизации: алгоритмы Петерсона и Лампорта
  3. Виды мьютексов: рекурсивные/нерекурсивные, читатели/писатели…
  4. Корректные захват/освобождение примитивов
  5. CAS-операции и атомики


Посмотреть видео на сайте Лекториума

Дополнительные материалы


Скачать: Презентация

Лекция 4. Примитивы синхронизации — 2.

  1. Condition variables: использование wait/notify
  2. Алгоритмы синхронизации: грубая, тонкая


Посмотреть видео на сайте Лекториума

Скачать: Презентация

Лекция 5. Алгоритмы синхронизации.

  1. Алгоритмы синхронизации: оптимистичная, неблокирующая
  2. Классы алгоритмов: lock-free, wait-free
  3. Пулы потоков


Посмотреть видео на сайте Лекториума

Скачать: Презентация

Лекция 6. Ошибки || программирования.

  1. Гонки данных (Data Race)
  2. Взаимная блокировка (Deadlock)
  3. Блокировки при fork многопоточных программ
  4. Инверсия приоритетов


Посмотреть видео на сайте Лекториума

Лекция 7. Атомарные снимки регистров.

  1. SWMR-регистры
  2. Lock-free snapshot
  3. Wait-free snapshot


Посмотреть видео на сайте Лекториума

Лекция 8. OpenMP и Intel TBB.

  1. Обзор OpenMP: параллельные секции, области видимости переменных, ограничения
  2. Обзор Intel TBB: алгоритмы, аллокаторы, деревья задач, планирование


Посмотреть видео на сайте Лекториума

Скачать: Презентация

Лекция 9. Шаблоны || программирования.

  • Структурные шаблоны
    1. Декомпозиция по задачам
    2. Геометрическая декомпозиция
    3. Recursive Data
    4. Pipeline
  • Некоторые программные структуры
    1. Parallel loops
    2. Boss/Worker
  • Разное
    1. Double check
    2. Local Serializer


Посмотреть видео на сайте Лекториума

Скачать: Презентация

Лекция 10. Кластерные вычисления.

  • История и назначение стандарта
  • Обмен сообщениями
    1. С блокировкой
    2. Без блокировки
    3. Отложенные запросы на взаимодействие
    4. Тупиковые ситуации (deadlock)
  • Взаимодействие процессов
    1. Группы и коммуникаторы
    2. Операции коллективного взаимодействия процессов
    3. Редукция
    4. Виртуальные топологии
  • Средства анализа производительности


Посмотреть видео на сайте Лекториума

Скачать: Презентация

Лекция 11. Map/Reduce — теория и практика.

  • Идея Map/Reduce
  • Hadoop
    1. Обзор архитектуры
    2. Примеры задач
    3. Детали реализации
    4. Популярные расширения
  • Другие реализации M/R: достоинства и недостатки
    1. Проблемы Hadoop
    2. Spark
    3. Disco
  • Дополнительно
    1. Что не надо использовать для построения M/R приложений
    2. Отказоустойчивость M/R приложений


Скачать: Презентация

Продолжение следует…

Дополнительные материалы:
Сайт курса.
Видеолекции курса Параллельное программирование (2012).
Видеолекции курса Архитектура ЭВМ и основы ОС (2013).
Курс Параллельное программирование в ЗНУ. Лектор: Бувайло Дмитрий Павлович.

Автор: Roman Brovko