Параллельные вычисления - Лукьяненко Дмитрий Витальевич

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Друзья, портал Teach-In закончил запись курса "Параллельные вычисления". Вдруг кому пригодится.

Курс "Параллельные вычисления" с одной стороны посвящён рассмотрению базовых параллельных алгоритмов решения вычислительно ёмких прикладных задач математической физики, а с другой стороны - их практической программной реализации. При этом программной реализации в курсе уделяется подавляющая часть времени. Это связано с тем, что зачастую, даже если параллельный алгоритм решения какой-либо задачи является достаточно простым и интуитивно понятным, его программная реализация может содержать огромное количество различных нюансов. Их разбору и уделяется основное время в курсе. При этом, показывается, что возможности используемых для расчётов многопроцессорных систем зачастую требуют и существенной модификации параллельных алгоритмов с целью их наиболее эффективной практической программной реализации.

Особенности программной реализации изучаемых алгоритмов демонстрируются с использованием языка программирования Python и пакета mpi4py, который для организации взаимодействия различных вычислительных процессов позволяет использовать технологию передачи сообщений MPI. Технология MPI на данный момент является основным средством программирования в параллельных вычислениях с распределённой памятью. При этом примеры программ строятся таким образом, что они могут быть легко переписаны с использованием языков программирования C/С++/Fortran.

Структура курса следующая. В лекциях 1-3 на примере реализации одного итерационного метода решения систем линейных алгебраических уравнений (СЛАУ) разбираются простейшие параллельные алгоритмы умножения матрицы на вектор, транспонирования матрицы и скалярного произведения векторов. Изучаемые на этих лекциях MPI-функции предоставляют достаточно широкий базовый функционал, который позволяет реализовывать большинство параллельных алгоритмов, которые могут встретиться на практике. На лекции 4 обсуждаются вопросы эффективности и масштабируемости параллельных программ. На примере реализованных на лекции 3 программ решения СЛАУ делается вывод о необходимости существенной модификации уже реализованных параллельных алгоритмов с целью понижения накладных расходов по взаимодействию вычислительных узлов. На лекции 5 рассматриваются более продвинутый алгоритм умножения матрицы на вектор, который естественным образом приводит к необходимости использования дополнительных групп процессов и коммуникаторов. В лекции 6 рассматриваются вопросы использования виртуальных топологий, которые в определённых ситуациях могут ещё более существенным образом понизить накладные расходы по взаимодействию вычислительных узлов. В лекции 7 рассматривается параллельный вариант метода прогонки для решения СЛАУ с трёхдиагональной матрицей, как пример распараллеливания алгоритма, базовая последовательная версия которого не распараллеливается, но после определённой модификации которой появляется возможность реализовать её параллельную версию. Лекции 8-10 посвящены базовым подходам распараллеливания алгоритмов решения задач для уравнений в частных производных. При программной реализации этих подходов активно используются уже изученные ранее в курсе инструменты (в частности, виртуальные топологии). На лекциях 11-12 обсуждаются более тонкие вопросы оптимизации – асинхронные операции и отложенные запросы на взаимодействие. Эти операции применяются для модификации некоторых ранее написанных программ, что ещё повышает эффективность параллельных программных реализаций. Лекция 13 посвящена основам гибридных технологий параллельного программирования MPI + OpenMP, MPI + CUDA и MPI + CUDA + OpenMP. В Лекции 14 подводятся итоги и обсуждаются наиболее распространённые причины плохой масштабируемости параллельных программ.

В итоге, демонстрируется, что комбинация всего множества рассмотренных в курсе инструментов позволяет создавать достаточно эффективные программные реализации алгоритмов параллельных вычислений.

Для проведения тестовых расчётов задач курса используется персональный компьютер с многоядерным процессором. Для обсуждения вопросов эффективности и масштабируемости программных реализаций используется суперкомпьютер «Ломоносов-2» Центра коллективного пользования сверхвысокопроизводительными вычислительными ресурсами МГУ имени М.В. Ломоносова.


Источник: www.youtube.com

Комментарии: