PDC 2017 — различия между версиями
Строка 77: | Строка 77: | ||
|- | |- | ||
| 8 | | 8 | ||
− | | | + | | 07.11.2017 |
| Знакомство с MPI (часть 2). | | Знакомство с MPI (часть 2). | ||
| [https://gitlab.com/pdc-hse/2017/raw/master/lectures/09-mpi.pdf Слайды] [https://gitlab.com/pdc-hse/2017/tree/master/lectures/src/09 Код] | | [https://gitlab.com/pdc-hse/2017/raw/master/lectures/09-mpi.pdf Слайды] [https://gitlab.com/pdc-hse/2017/tree/master/lectures/src/09 Код] |
Версия 13:10, 7 ноября 2017
Содержание
О курсе
Курс читается для студентов 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. | Слайды Код |
8 | 07.11.2017 | Знакомство с MPI (часть 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. | Слайды Код |
Домашние задания
Порядок сдачи домашних заданий
Задание | Задачи | Срок сдачи |
---|---|---|
1 | На выбор: Обедающие философы или Читатели-писатели | 4 октября 12:00 MSK |
2 | Метод k-средних | 18 октября 23:59 MSK |
3 | Транспонирование и умножение матриц на GPU | 8 ноября 23:59 MSK |
Everest
Для запуска программ на учебном кластере и тестирования решений домашних заданий используются сервисы, размещенные на платформе Everest.
Для получения доступа к сервисам надо выполнить следующие действия:
- Зайдите на Everest и зарегистрируйте нового пользователя (ccылка Sign Up в правом верхнем углу)
- Зайдите под своим пользователем
- Вступите в группу pdc-hse2017
- Откройте https://everest.distcomp.org/groups/pdc-hse2017/join
- Введите Access code: (будет разослан на почту)
При работе с Everest рекомендуется использовать свежие версии браузеров Chrome или Firfeox. Обязательно следует включить выполнение JavaScript.
Рекомендуемая литература и полезные ссылки
Архитектура компьютера
- John L. Hennessy, David A. Patterson. Computer Architecture: A Quantitative Approach. Morgan Kaufmann, 2011 (5th edition).
- Ulrich Drepper. What Every Programmer Should Know About Memory, 2007.
- Igor Ostrovsky. Gallery of Processor Cache Effects.
Многопоточное программирование и 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.