Данный курс посвящен одной из основных тенденций в развитии современных компьютерных технологий - параллельной обработке данных. Материал иллюстрируется примерами суперкомпьютерных систем и технологий, где параллелизм проявляется особенно ярко. Вместе с этим, показывается исключительно важная роль суперкомпьютерных систем как неотъемлемой части формируемой цифровой экономики. В процессе изложения рассматриваются три составные части параллельных вычислений: архитектуры параллельных вычислительных систем, технологии параллельного программирования и информационная структура программ и алгоритмов, и показывается тесная связь этих частей между собой.
Курс является вводным, а излагаемый материал носит универсальный характер. В силу широкого распространения вычислительных технологий для решения задач науки, промышленности и общества, данный курс является частью обучения по многим направлениям как естественных, так и гуманитарных наук.
Для освоения данного курса слушатели должны иметь базовую подготовку в области обычного последовательного программирования, основ архитектуры компьютеров, знать базовые алгоритмы решения задач и методы решения задач.
Данный курс состоит из пяти основных разделов:
1. Введение в предмет.
2. Архитектура параллельных вычислительных систем.
3. Технологии параллельного программирования.
4. Методы построения и оценки качества параллельных вычислительных систем и программ.
5. Введение в теорию анализа структуры программ и алгоритмов.
Список всех тем лекций
Лекция 1. Современные суперкомпьютеры.
Введение
Первые отечественные суперкомпьютеры
Рейтинги современных суперкомпьютеров
Суперкомпьютер "Ломоносов"
Назначение суперкомпьютеров
Лекция 2. Сферы применения суперкомпьютеров.
Суперкомпьютеры в сфере добычи нефти и газа
Суперкомпьютеры в автомобилестроении, авиации и космической отрасли
Суперкомпьютеры в других сферах
Параллелизм в архитектуре суперкомпьютеров
Лекция 3. Характеристики параллельных программ.
Параллелизм в архитектуре суперкомпьютеров (продолжение)
Производительность компьютера и время решения задачи
Закон Амдала
Рост производительности параллельных вычислительных систем
Накладные расходы
Масштабируемость параллельных программ
Решение задачи на компьютере
Лекция 4. Классификация параллельных вычислительных систем. Часть 1.
Основные показатели эффективности и масштабируемости параллельных программ
Классификация Флинна
Компьютеры с общей и распределенной памятью
Лекция 5. Суперкомпьютерный комплекс МГУ.
Суперкомпьютер "Чебышёв"
Суперкомпьютер "Ломоносов"
Суперкомпьютер "Ломоносов-2"
Лекция 6. Классификация параллельных вычислительных систем. Часть 2.
Архитектуры SMP и NUMA
Компьютеры с распределенной памятью
Лекция 7. Классификация параллельных вычислительных систем. Часть 3.
Векторно-конвейерные компьютеры
Распределенные вычислительные среды
Лекция 8. Оценка производительности. Технологии параллельного программирования.
Методы оценки производительности суперкомпьютеров
Технологии параллельного программирования
Лекция 9. Технология OpenMP.
Параллельные и последовательные области
Распараллеливание циклов в OpenMP
Механизмы синхронизации в OpenMP
Лекция 10. Технология MPI -1.
Общие процедуры MPI
Передача и прием сообщений с блокировкой
Передача и прием сообщений без блокировки
Лекция 11. Технология MPI - 2.
Коллективные операции
Пересылка разнотипных данных
Упаковка данных
Лекция 12. Компоненты суперкомпьютера.
Инфраструктура
Операционная система
Файловая система
Контроль ресурсов
Хранение учетных записей
Лицензии
Лекция 13. Структуры программ и алгоритмов. Часть 1.
Зависимость производительности от написания программы
Графовые модели программ
Лекция 14. Структуры программ и алгоритмов. Часть 2.
Теорема о построении графа алгоритма
Ярусно-параллельная форма графа алгоритма
Эквивалентные преобразования программ на практике
Решение СЛАУ: от метода к алгоритму
