Видеолекции курса Параллельное программирование.
Лектор: Евгений Калишенко.
Лекция 1. Введение.
- Мотивация к применению параллельных вычислений
- Закон Амдала
- Обзор технологий || программирования: posix threads, Java threads, boost threads, OpenMP, Intel TBB, Java.util.concurrent
- Общий взгляд на высокопроизводительные системы начиная от расширений SSE, через многоядерность к узлам кластеров
Посмотреть видео на сайте Лекториума
Дополнительные материалы
Скачать: Презентация
Лекция 2. Параллелизм.
- Отличия процессов и потоков
- Необходимость синхронизации: гонки данных
- Приоритеты потоков
- Примитивы синхронизации POSIX: мьютексы, условные переменные
Посмотреть видео на сайте Лекториума
Дополнительные материалы
Скачать: Презентация
Лекция 3. Основы программирования потоков.
- Boost-потоки
- Корректное завершение потоков: cancellation points, InterruptedException
- Сравнение синтаксиса: POSIX, Boost, Java
- Реализация примитивов синхронизации: алгоритмы Петерсона и Лампорта
Посмотреть видео на сайте Лекториума
Дополнительные материалы
Скачать: Использовались материалы Романа Елизарова
Лекция 4. Синхронизация.
- Корректный захват и освобождение примитивов через замки (locks)
- Атомики, Read/Write мьютексы: когда нужно использовать, а когда излишне
- Ограничения на реализацию потокобезопасных контейнеров
- Альтернативный подход: Software transactional memory
Посмотреть видео на сайте Лекториума
Дополнительные материалы
Скачать: Использовались материалы Романа Елизарова
Лекция 5. Виды синхронизации.
- Разные виды мьютексов
- CAS-операции: реализация AtomicInteger, futex
- Виды алгоритмов реализации потокобезопасных контейнеров
Посмотреть видео на сайте Лекториума
Дополнительные материалы
Скачать: Презентация
Лекция 6. Поиск ошибок и анализ производительности. OpenMP.
- Средства профилирования и поиска ошибок: valgrind
- Сложные ошибки синхронизации: fork в || приложениях, публикация стековых данных, ABA
- Стандарт OpenMP
Посмотреть видео на сайте Лекториума
Дополнительные материалы
Скачать: Презентация (использовались материалы Сергея Киреева, ИВМиМГ СО РАН)
Лекция 7. Intel TBB и java.util.concurrent.
- Обзор Intel TBB: алгоритмы, аллокаторы, деревья задач, планирование
- TLS (Thread Local Storage)
- Обзор Java.util.concurrent: пулы потоков
Посмотреть видео на сайте Лекториума
Дополнительные материалы
Скачать: Презентация (использовались официальные материалы Intel)
Лекция 8. Кластеры и стандарт MPI.
- Виды архитектур: монолитные, клиент-сервер, трёхзвенные
- Классификация кластеров
- Обзор стандарта MPI: средства запуска приложений, обмена сообщения, редукции по данным
Посмотреть видео на сайте Лекториума
Дополнительные материалы
Скачать: Презентация
Лекция 9. Параллельные реализации алгоритмов.
- Принципы || программирования в задачах
- Сети Петри
- Библиотеки || реализаций: Parallel boost graph, parallel STL
- Основные ошибки 1 домашнего задания
Посмотреть видео на сайте Лекториума
Дополнительные материалы
Скачать: Презентация
Лекция 10. Оптимизация в компиляторах.
- Простые оптимизации: подстановка констант, inline, удаление проверок, объединение смежных доступов к памяти, регистровая аллокация
- Оптимизации циклов: расщепление, развёртывание, вынос инварианта, размыкание
- Многопоточные оптимизации: адаптивные блокировки, исключение блокировок, слияние блокировок
- Другие: частотный анализ, анализ внешних эффектов, SSA
Посмотреть видео на сайте Лекториума
Лекция 11. Вычисления на GPU.
- Вычислительные устройства: CPU, MIC, GPU
- Стандарты: Brook+, CUDA, OpenCL
- Миграция вычислений
Посмотреть видео на сайте Лекториума
Дополнительные материалы
Скачать: Презентация
Дополнительные материалы:
Сайт курса.
Видеолекции курса Параллельное программирование (2014).
Видеолекции курса Архитектура ЭВМ и основы ОС (2013).
Курс Параллельное программирование в ЗНУ. Лектор: Бувайло Дмитрий Павлович.
Немає коментарів:
Дописати коментар