- Цели и задачи дисциплины
- Целью дисциплины является изучение современных технологий разработки параллельных программ для различных аппаратных архитектур. Основные задачи дисциплины: ознакомление с современными технологиями и соответствующими программными средствами разработки, тестирования и отладки параллельных программ для многопроцессорных многоядерных высокопроизводительных вычислительных систем.
- Краткое содержание дисциплины
- Традиционные языки программирования и распараллеливающие компиляторы. Надъязыковые средства для организации параллелизма. Параллельные расширения традиционных языков программирования. Параллельные языки программирования. Библиотеки и интерфейсы для передачи сообщений. Модель программирования в общей памяти. Модель "пульсирующего" параллелизма FORK-JOIN. Стандарт OpenMP: основные понятия, директивы и функции. Модель передачи сообщений в системах с распределенной памятью. Режимы запуска параллельных программ SPMD и MPMD. Стандарт Message Passing Interface (MPI). Основные понятия и функции MPI. Операции "точка-точка", режимы приема и отправки сообщений. Коллективные операции. Расширения стандарта в версии MPI-2. Сравнительный анализ технологий программирования OpenMP и MPI. Уровни поддержки нитей в MPI-программе. Безопасное управление нитями в гибридной программе MPI+OpenMP. Библиотека Intel Cluster OpenMP. Модель распараллеливания work stealing. Основные компоненты Intel Cilk Plus и модели исполнения: ключевые слова (cilk_for, cilk_spawn, cilk_sync), преобразователи (reducers), специальное представление массивов (C/C++ Extensions for Array Notation, CEAN), элементарные функции. Современный инструментарий для разработки параллельных программ: компиляторы, отладчики, средства анализа эффективности программ (на примере Intel Parallel Studio).
- Компетенции обучающегося, формируемые в результате освоения дисциплины
- Выпускник должен обладать:
- ОПК-5 способностью объективно оценивать результаты исследований и разработок, выполненных другими специалистами и в других научных учреждениях
- ПК-4.1 знанием задач развития теории программирования, создания и сопровождения программных средств различного назначения (для направленности 05.13.11)
- ПК-4.2 умением повышать эффективность и надежность процессов обработки и передачи данных и знаний в вычислительных машинах, комплексах и компьютерных сетях (для направленности 05.13.11)
- Образование
- Учебный план 09.06.01, 2021, (4.0), Информатика и вычислительная техника
- Программирование для высокопроизводительных вычислительных систем