Опубликована: 12.09.2014 | Уровень: для всех | Стоимость: 490.00 руб. | Длительность: 14 дней
Теоретические основы написания параллельных программ, математический подход к доказательству корректности параллельных алгоритмов, разработка неожидающих параллельных алгоритмов, ошибки в параллельных программах и способы их решения.
В курсе рассматривается архитектура многоядерных систем с разделяемой памятью. Вводится математическая модель параллельного исполнения, рассматривается способ построения рассуждения в терминах модели. Вводятся понятия согласованности многопоточной программы, и доказывается ряд теорем, позволяющих предсказывать поведения алгоритмов, построенных на базе известных примитивов. Рассматриваются наиболее распространённые ошибки проектирования параллельных программ и способы исправления таких ошибок.
План занятий
Занятие | Заголовок << | Дата изучения |
---|---|---|
- | ||
Лекция 1 | Введение в параллельное программирование
Предпосылки возникновения параллельных систем. Состояние дел на начало XXI века. Парадигмы последовательного и параллельного мышления. Содержание курса. Компетенции после курса.
Цель: формирование знания об архитектурах параллельных систем.
Оглавление | - |
Лекция 2 | Архитектура фон Неймана
Основы архитектуры фон Неймана и PC. Компоненты архитектуры, явно влияющие на производительность (CPU, шина, кэш, Interconnect). Программные способы влияния на производительность.
Цель: формирование знаний о влиянии аппаратных компонентов на скорость программы.
Оглавление | - |
Лекция 3 | Последовательность исполнения. Упорядоченность и атомарность
Процессы и потоки. Инструкции x86. Видимость результатов. Модель упорядоченности доступа к памяти. Атомарность и атомарные примитивы.
Цель: формирование знаний о принципе исполнения программы.
Оглавление | - |
Тест 136 минут | - | |
Лекция 4 | Формальное представление многопоточной системы
Уровни абстракции программы. Корректность программы. Время как абстракция. Вероятность ошибки.
Цель: формирование осведомлённости о заблуждениях в разработке, введение абстрактных понятий.
Оглавление | - |
Лекция 5 | Проблемы многопоточности
Общие проблемы многопоточности. Проблемы работы с разделяемой памятью. Разделяемые объекты, синхронизация, примитивы синхронизации.
Цель: обзор типичных практических ошибок многопоточных программ.
Оглавление | - |
Тест 224 минуты | - | |
Лекция 6 | Модель исполнения, критические секции и объекты блокировки
Математическая модель многопоточной программы. Терминология теории параллельного программирования. Реализация объектов блокировки.
Цель: формирование математического аппарата для доказательных рассуждений о многопоточном исполнении.
Оглавление | - |
Лекция 7 | Согласованность, история, линеаризуемость
Свойства согласованности и регистры. История. Линеаризация истории.
Цель: формирование представления о типах согласованности программы и о типах регистров памяти.
Оглавление | - |
Тест 324 минуты | - | |
Лекция 8 | Консенсус
Консенсус. Число консенсуса. Протокол, состояние протокола. Валентность состояния. Создание консенсуса из примитивов.
Цель: ознакомление с концепцией консенсуса как с ключевым понятием синхронизации многопоточных приложений.
Оглавление | - |
Лекция 9 | Еще про консенсус
Универсальный объект. Невозможность консенсуса в системе со сбоями.
Цель: закрепление теоретических выкладок о композиционности консенсуса. Ознакомление с ограничениями применимости протокола консенсуса.
Оглавление | - |
Тест 424 минуты | - | |
Лекция 10 | Подходы к синхронизации
Виды замков. 5 подходов к синхронизации.
Цель: обзор практических подходов к синхронизации многопоточных программ.
Оглавление | - |
Лекция 11 | Разделяемые структуры данных и алгоритмы обслуживания
Обзор параллельных структур данных. Особенности реализации замков.
Цель: ознакомление с особенностями реализации разделяемых коллекций. Ознакомление с особенностями реализации замков.
Оглавление | - |
Тест 524 минуты | - | |
5 часов | - |