Введение в параллельные вычисления.

ОСЕННИЙ СЕМЕСТР 2016 ГОДА

Лекции

Лабораторные работы

Лекция 1. Введение в параллельные вычисления

Лекция 2. Библиотека С++11 thread

Лекция 3. Синхронизация в C++11 thread

Лекция 4. Проблемы параллельного программирования thread

Лекция 5. Возможности OpenMP

Лекция 6. Технология OpenMP. Основные конструкции

Лекция 7. Технология OpenMP. Распределение работы

Лекция 8. Технологии OpenMP. Эффективное распределение нагрузки. Синхронизация

Лекция 9. Использование технологии OpenMP

Лекция 10. Моделирование и анализ параллельных вычислений

Лекция 11. Системы с распределенной памятью. MPI

Лекция 12. MPI. Прием/передача сообщений

Лекция 13. MPI. Обмен сообщениями. Взаимодействие процессов

Лекция 14. MPI. Коллективные взаимодействия процессов

Лекция 15. CUDA. Основные понятия Система X Window (X Window System) + экз. вопросы

Лабораторная работа №1.Работа с массивами

Лабораторная работа №2.Работа со строками

Лабораторная работа №3.Mutex

Лабораторная работа №4.Массивы

Лабораторная работа №5.Суммы

Лабораторная работа №6.Модель данных OpenMP

Лабораторная работа №7.Модель данных MPI

Лабораторная работа №8.Модель данных MPI (ч.2)

В задачи курса входит изучение: методов параллельного программирования, удаленной работы с кластером, основных библиотек параллельного программирования.

После изучения курса студент должен:

Знать: основы программирования в системах с общей и распределенной памятью.

Уметь: проектировать, разрабатывать, отлаживать параллельные программы.

Владеть: средствами удаленной работы с кластером и библиотеками параллельного программирования.

В ходе изучения дисциплины студенты освоят:

1. Архитектура и процессы параллельных вычислительных систем. Работа с кластером. Базовые понятия. Конфигурация кластера ИКТ РХТУ. Измерение производительности компьютеров. Ограничения параллельных вычислений. Закон Амдала. Архитектура фон Неймана. Ускорение работы компьютеров. Конвеерная обработка. Классификация архитектур по Флинну. Иерархия памяти компьютера. Классификация параллельных вычислительных систем.
2. Потоки в С++11. Поток данных, поток команд, процесс. Процесс и поток в UNIX. Случаи использования потоков. Распределение памяти между потоками. Новый стандарт С++11. Компиляция программ. Создание и остановка потоков. Передача параметров в потоковые функции. Возвращение результатов из потоковой функции. Инициализация потоков. Методы синхронизации. Мьютексы. Условные переменные. Гонки потоков. Deadlock.
3. Модели параллельного программирования. Библиотека OpenMP. Отличия OpenMP от PThreads. Компиляторы с поддержкой OpenMP. Компиляция программ с OpenMP. Модель программирования OpenMP. Состав библиотеки OpenMP. Задание количества потоков. Замеры времени выполнения участков программы. Директива parallel. Модель данных в OpenMP. Директива threadprivate. Вложенные параллельные области. Директива single. Директива master. Директива for: автоматическое распараллеливание циклов. Параметры опции schedule. Директива ordered. Директивы sections и section. Средства синхронизации в OpenMP. Директива critical. Атомарная операция. Мьютексы (блокировки, замки). Директива flush.
4. Библиотека CUDA. Отличие CPU от GPU. Принцип работы GPU. Иерархия памяти. Вычислительное ядро. Компиляция программ с CUDA.
5. Библиотека MPI. Модель передачи сообщений. Установка MPI. Документация. Передача сообщения. Коммуникатор и ранги процессов. Обмен сообщениями: попарный и коллективный, блокирующий и неблокирующий. Состав сообщения. Коммуникаторы. Посылка сообщения. Получение сообщения. Статус сообщения. Ввод и вывод в программах с MPI. Обмен при помощи одного вызова. Посылка и прием сообщения без блокировки. Тестирование статуса доставки сообщения. Ожидание доставки сообщения. Барьерная синхронизация в MPI. Массовая рассылка сообщений. Сбор сообщений от процессов. Операции над данными в MPI. Сбор и рассылка сообщений. Завершение группы процессов. Работа со временем в MPI. Коллективный обмен сообщениями при работе с массивами. Рассылка массива.

Данный курс читается в 7 семестре. Контроль успеваемости студентов ведется по принятой в университете рейтинговой системе.