Автор: Станислав Протасов | Московский физико-технический институт
Форма обучения:
дистанционная
Стоимость самостоятельного обучения:
бесплатно
Доступ:
свободный
Документ об окончании:
 
Уровень:
Для всех
Длительность:
2:12:00
Студентов:
574
Выпускников:
22
Теоретические основы написания параллельных программ, математический подход к доказательству корректности параллельных алгоритмов, разработка неожидающих параллельных алгоритмов, ошибки в параллельных программах и способы их решения.
В курсе рассматривается архитектура многоядерных систем с разделяемой памятью. Вводится математическая модель параллельного исполнения, рассматривается способ построения рассуждения в терминах модели. Вводятся понятия согласованности многопоточной программы, и доказывается ряд теорем, позволяющих предсказывать поведения алгоритмов, построенных на базе известных примитивов. Рассматриваются наиболее распространённые ошибки проектирования параллельных программ и способы исправления таких ошибок.
 

План занятий

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

                        Добрый день!

                        Видеоряд лекции 9 не соответсвует звуковой дорожке, а также обрывается на рассмотрении детерминированного объекта. В лекции отсутствует рассмотрение FLP.

                        Максим Зиганшин
                        Максим Зиганшин

                        http://www.intuit.ru/studies/professional_skill_improvements/14005/video_courses/1281/info - это платный курс, а это: http://www.intuit.ru/studies/courses/14040/1281/info - его аналог, но бесплатный, и разница у них лишь в том, что в платном я получаю бумажку, правильно?