Материалы

  • видеокурс на youtube(ссылка)
  • учебные материалы (ссылка)
  • учебно-методическое пособие (ссылка)
  • Учебная программа

    Автор курса Минязев Ринат
    Курс состоит из 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). Накладывание масок.