Математическое обеспечение высокопроизводительных вычислений
Название спецкурса на английском языке
Mathematical support for high-performance computing
Пререквизиты
Отсутствуют
Целевая аудитория
3-6 курс, магистранты
Подразделение
[Кафедра вычислительной математики]
Семестр
Полгода (весна)
Тип курса
Спецкурс по выбору кафедры
Учебный год
2024/25
Список тем
Введение в предмет «Высокопроизводительные вычисления» (HPC). Вычислительное ядро программы и модель вычислительной системы.
Основные пути повышения производительности программ. Эквивалентные преобразования программ. Граф потока данных (DataFlow).
Принципы алгоритмической и низкоуровневой оптимизации базовых вычислительных операций. Быстрые вычисления как наука
Анализ производительности программного обеспечения путем изучения машинного кода. Профилирование программного обеспечения.
Статическое и динамическое распараллеливание программ. Масштабируемость программ и гиперлинейное ускорение.
Физический и логический параллелизм. Процессы, потоки, "тасклеты" и прочие абстракции в языках программирования.
Организация обмена данными между процессами. Общая память и MPI. Активные сообщения. Latency hiding.
Вопросы синхронизации счета. Гонки и взаимные блокировки. Атомарные операции. Транзакционная память.
Особенности распределенных вычислений. Асинхронный ввод/вывод. Облачные вычислительные платформы и GRID-системы.
Принципы эффективного использования кеш-памяти в многопоточных программах. Many-core процессоры и VLIW-архитектуры.
Векторизация вычислений и использование SIMD-ускорителей для параллельных вычислений. Расширения AVX2 и FMA.
Технологии CUDA и OpenCL: общие черты и различия технологий. Архитектурные особенности графпроцессоров.
Динамический параллелизм в технологиях CUDA и OpenCL. Параллельные диалекты языков C/C++. Языки Charm++ и T++.
Гибридные вычислительные системы и поддержка выгрузки (offloading) вычислений в специализированных компиляторах.
Специализация программ, частичные вычисления и супероптимизация. Мемоизация (табулирование) результатов вычислений.
Реконфигурируемые вычислительные системы на основе программируемых (FPGA) и заказных (ASIC) микросхем.
Обеспечение отказоустойчивости счета на больших суперЭВМ. Операционный недетерминизм и отказоустойчивые алгоритмы.
Основные пути повышения производительности программ. Эквивалентные преобразования программ. Граф потока данных (DataFlow).
Принципы алгоритмической и низкоуровневой оптимизации базовых вычислительных операций. Быстрые вычисления как наука
Анализ производительности программного обеспечения путем изучения машинного кода. Профилирование программного обеспечения.
Статическое и динамическое распараллеливание программ. Масштабируемость программ и гиперлинейное ускорение.
Физический и логический параллелизм. Процессы, потоки, "тасклеты" и прочие абстракции в языках программирования.
Организация обмена данными между процессами. Общая память и MPI. Активные сообщения. Latency hiding.
Вопросы синхронизации счета. Гонки и взаимные блокировки. Атомарные операции. Транзакционная память.
Особенности распределенных вычислений. Асинхронный ввод/вывод. Облачные вычислительные платформы и GRID-системы.
Принципы эффективного использования кеш-памяти в многопоточных программах. Many-core процессоры и VLIW-архитектуры.
Векторизация вычислений и использование SIMD-ускорителей для параллельных вычислений. Расширения AVX2 и FMA.
Технологии CUDA и OpenCL: общие черты и различия технологий. Архитектурные особенности графпроцессоров.
Динамический параллелизм в технологиях CUDA и OpenCL. Параллельные диалекты языков C/C++. Языки Charm++ и T++.
Гибридные вычислительные системы и поддержка выгрузки (offloading) вычислений в специализированных компиляторах.
Специализация программ, частичные вычисления и супероптимизация. Мемоизация (табулирование) результатов вычислений.
Реконфигурируемые вычислительные системы на основе программируемых (FPGA) и заказных (ASIC) микросхем.
Обеспечение отказоустойчивости счета на больших суперЭВМ. Операционный недетерминизм и отказоустойчивые алгоритмы.
Список источников
К.Ю. Богачев, Основы параллельного программирования, Бином, 2024
D.Kaeli, P.Mistry, D.Schaa, D.P.Zhang, Heterogeneous Computing with OpenCL 2.0, Third Edition, AMD, Elsevier Inc., 2015
А.В. Боресков и др. Параллельные вычисления на GPU. Архитектура и программная модель CUDA: Учебное пособие. Изд-во МГУ, 2015
В.В. Воеводин. Параллельные вычисления: учеб. пособие для вузов. БХВ-Петербург, 2002
В.П. Гергель. Высокопроизводительные вычисления для многопроцессорных многоядерных систем: учеб. для вузов. - M.: Изд-во МГУ, 2010
Р. Гримм, Параллельное программирование на современном языке C++, ДМК Пресс, 2022
Э.Д. Уильямс, Параллельное программирование на С++ в действии. Практика разработки многопоточных программ, ДМК Пресс, 2012
D.Kaeli, P.Mistry, D.Schaa, D.P.Zhang, Heterogeneous Computing with OpenCL 2.0, Third Edition, AMD, Elsevier Inc., 2015
А.В. Боресков и др. Параллельные вычисления на GPU. Архитектура и программная модель CUDA: Учебное пособие. Изд-во МГУ, 2015
В.В. Воеводин. Параллельные вычисления: учеб. пособие для вузов. БХВ-Петербург, 2002
В.П. Гергель. Высокопроизводительные вычисления для многопроцессорных многоядерных систем: учеб. для вузов. - M.: Изд-во МГУ, 2010
Р. Гримм, Параллельное программирование на современном языке C++, ДМК Пресс, 2022
Э.Д. Уильямс, Параллельное программирование на С++ в действии. Практика разработки многопоточных программ, ДМК Пресс, 2012
Дополнительная информация
Курс посвящен рассмотрению архитектур современных и перспективных высокопроизводительных систем,
общей методологии построения параллельных, распределенных и отказоустойчивых программ, способам
масштабирования программ, современным стандартам для программирования ускорителей OpenCL и CUDA,
а также подходам к преобразованию, специализации и низкоуровневой оптимизации программного кода.
День недели
понедельник
Время
10:45-12:20
Аудитория
1308
Дата первого занятия
Аудитория первого занятия
1308