PDC 2017

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск

О курсе

Курс читается для студентов 3-го курса ПМИ ФКН ВШЭ специализации "Распределенные системы" в 1-2 модулях 2017-2018 учебного года.

Лектор: Сухорослов Олег Викторович

Семинаристы: Паринов Андрей Андреевич, Сухорослов Олег Викторович, Чичварин Михаил Николаевич

Актуальная программа курса

Система оценок

Итоговая оценка вычисляется на основе средней оценки за домашние задания и оценки за экзамен:

Oитог = 0.7 * Oд/з + 0.3 * Оэкз

Материалы к занятиям

Все материалы размещаются в git-репозитории: https://gitlab.com/pdc-hse/2017

Дистанционная поддержка

Для ответов на вопросы студентов, обсуждения курса и сдачи домашних заданий используется сервис Piazza:

  • Страница курса: https://piazza.com/cs_hse/fall2017/pdc
  • Для регистрации надо ввести Class Access Code: (будет разослан на почту)
  • При регистрации обязательно укажите в Full Name свои имя и фамилию
  • После регистрации через систему можно задавать вопросы и обсуждать курс (в том числе анонимно)
  • Все объявления по курсу также будут рассылаться через Piazza
  • Telegram Group [1]

Лекции

Неделя Дата Темы Материалы
1 05.09.2017 Введение в параллельные вычисления. Параллельные вычислительные системы. Слайды
2 12.09.2017 Многопоточное программирование. Слайды Код
3 19.09.2017 Многопоточное программирование (часть 2). Альтернативные модели программирования. Слайды Код
4 26.09.2017 Теоретические основы параллельных вычислений. Технологии и модели параллельного программирования. Слайды
5 03.10.2017 Типовые структуры параллельных алгоритмов. Методология PCAM. Слайды
6 10.10.2017 Введение в вычисления на GPU. Слайды
7 17.10.2017 Шаблоны вычислений на GPU. Слайды
8 31.10.2017 Знакомство с MPI. Слайды Код
9 07.11.2017 Знакомство с MPI (часть 2). Слайды Код
10 14.11.2017 Введение в распределенные вычисления. Слайды
11 21.11.2017 Введение в распределенные вычисления (часть 2). Слайды

Семинары

Неделя Темы Материалы
1 Первые шаги. Использование виртуальной машины. Получение информации о процессоре. Измерение времени выполнения программы. Профилирование программ с помощью perf. Слайды Код
2 Компиляция многопоточных программ на C++. Подробности про thread support library. Устранение взаимной блокировки в примере с банком. Отладка многопоточных программ. Слайды Код
3 Разбор реализаций потокобезопасных очередей. Параллельный поиск текста в файле. Пул потоков. Атомарные типы. Атомарные инструкции процессора. Низкоуровневые эффекты. Слайды Код
4 Знакомство с OpenMP. Синтаксис прагм. Компиляция программ. Директива parallel. Основные функции из omp.h. Опции видимости данных. Настройка числа потоков. Директивы parallel for, critical и atomic. Опции nowait и reduction. Ложное разделение данных (false sharing). Слайды Код
5 Продолжение знакомства с технологией OpenMP. Распределение итераций цикла между потоками. Привязка потоков к ядрам. Рекурсивный параллелизм (OpenMP 3.0 tasks). Новые возможности OpenMP 4.0. Слайды Код
6 Знакомство с CUDA C. Разбор ДЗ 1. Слайды Код
7 Знакомство с CUDA C (часть 2). Слайды Код
8 Запуск MPI-программ на учебном кластере. Знакомство с Boost.MPI. Задачи на парные взаимодействия. Работа с MPI на локальной машине. Разбор ДЗ 2. Слайды Код
9 Коллективные операции в Boost.MPI. Примеры и упражнения. Обработка ошибок MPI. Слайды Код
10 Протоколы UDP и TCP. Реализация клиентов и серверов на основе сокетов. Обработка ошибок при взаимодействии по сети. Слайды Код
11 Асинхронная обработка запросов. Обнаружение сервера. Реализация схемы "Управляющий-рабочие" на ППО Pyro. Слайды Код

Домашние задания

Порядок сдачи домашних заданий

Оценки

Задание Задачи Срок сдачи
1 На выбор: Обедающие философы или Читатели-писатели 4 октября 12:00 MSK
2 Метод k-средних 18 октября 23:59 MSK
3 Транспонирование и умножение матриц на GPU 8 ноября 23:59 MSK
4 Игра "Жизнь" 26 ноября 23:59 MSK

Everest

Для запуска программ на учебном кластере и тестирования решений домашних заданий используются сервисы, размещенные на платформе Everest.

Для получения доступа к сервисам надо выполнить следующие действия:

  • Зайдите на Everest и зарегистрируйте нового пользователя (ccылка Sign Up в правом верхнем углу)
  • Зайдите под своим пользователем
  • Вступите в группу pdc-hse2017

При работе с Everest рекомендуется использовать свежие версии браузеров Chrome или Firfeox. Обязательно следует включить выполнение JavaScript.

Рекомендуемая литература и полезные ссылки

Архитектура компьютера

Многопоточное программирование и concurrency

  • Anthony Williams. C++ Concurrency in Action: Practical Multithreading. Manning, 2012. (Перевод на русский: Энтони Уильямс. Параллельное программирование на C++ в действии: Практика разработки многопоточных программ. ДМК Пресс, 2012.)
  • Paul Butcher. Seven Concurrency Models in Seven Weeks: When Threads Unravel. Pragmatic Bookshelf, 2014.
  • Maurice Herlihy, Nir Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2012 (Revised Reprint).

Параллельные вычисления

  • Peter Pacheco. An Introduction to Parallel Programming. Morgan Kaufmann, 2011.
  • G. Barlas. Multicore and GPU Programming: An Integrated Approach. Morgan Kaufmann, 2014.
  • Foster I. Designing and Building Parallel Programs: Concepts and Tools for Software Engineering. Reading, MA: Addison-Wesley, 1995. http://bit.ly/2vfOkO6
  • Timothy G. Mattson, Beverly A. Sanders, Berna L. Massingill. Patterns for Parallel Programming. Addison-Wesley Professional, 2004.