Занятия

Учебная программа

Курс состоит из 8 лекции, 8 практик и 8 лабораторных работ. На практических занятиях Вы научитесь разрабатывать параллельные программы на языке С++ с использованием библиотеки MPI (Visual Studio) и запускать их на множестве процессов на вычислительном кластере. Вы узнаете как использовать директивы OpenMP для создания многопоточных программ для многоядерного сервера, освоите технологию CUDA, научитесь писать многопоточные программы и запускать их на сервере, утяжеленном видеокартами (NVIDIA). Автор курса Минязев Ринат.

Учебно-методическое пособие (скачать)

Лекции:

  1. Потребность в параллельных программах, анализ эффективности, законы Амдала(скачать).
  2. Знакомство с библиотекой MPI, основные функции для передачи сообщений, написание и запуск параллельной программы на кластере(скачать).
  3. Режимы передачи данных. Коллективные функции библиотеки MPI. Функции параллельного чтения-записи в файлы(скачать).
  4. (скачать).
  5. Произвольные типы данных (структуры). Виртуальные топологии в MPI(скачать).
  6. Многопоточное программирование на С++ с помощью библиотеки thread (скачать).
  7. Многопоточное программирование с помощью директив OpenMP (скачать).
  8. Аппаратно-программная модель технологии CUDA, виды памяти на видеокарте (скачать).
  9. Многопоточное программирование под видеокарты с использованием технологии CUDA (скачать).

Литература:

  1. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. СПб.:БХВ-Петербург, 2002
  2. Шпаковский Г.И., Серикова Н.В. Программирование многопроцессорных систем в стандарте MPI – Минск.: БГУ, 2002.
  3. Антонов А.С. Параллельное программирование с использованием технологии OpenMP: Учебное пособие.-М.: Изд-во МГУ, 2009.
  4. Сандерс Дж., Кэндрот Э. Технология CUDA в примерах, 2011.

Создание и запуск MPI программ

Работа в VisualStudio, настройка проекта, компиляция и запуск MPI программы на множестве процессов на кластере.

Функции приема-передачи данных. Параллельный перебор ключей.

Написание приложения для передачи маркера по кольцу процессов. Взлом зашифрованного файла MPI-программой с помощью кластера.

Параллельный ввод-вывод в файлы

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

Функции коллективного обмена данными

Широковещательный прием и передача данных функциями библиотеки MPI. Создание оператора редукции.

Виртуальные топологии

Моделирование нагревания тела с помощью MPI программы с декартовой топологией. Перемножение матриц на кольце из MPI процессов.

Разработка многопоточных программ

Написание многопточных программ с помощью библиотеки thread и директив OpenMP. Сравнение производительности программ для разного числа потоков при перемножении матриц.

Разработка и запуск программ на CUDA

Проект в VisualStudio. Компиляция и запуск многопоточных программ на видеокарте. Сравнение производительности программ для разного числа потоков при перемножении матриц.

Работа с библиотекой OpenCV

Обработка изображений с помощью библиотеки OpenCV с использованием потоков (CUDA) и процессов (MPI). Накладывание масок.