Параллельные вычисления в механике 

Параллельные вычисления в механике

проф., д.ф.-м.н. Б.П. Рыбакин

Для решения современных задач необходимо использовать компьютерное моделирование. Суперкомпьютерные технологии в экономически развитых странах стали реально использоваться для модернизации и повышения конкурентоспособности высокотехнологичных областей экономики. В развитых странах Европы более 60% высокотехнологической продукции производится с помощью компьютерного моделирования сложных изделий. Суперкомпьютерные технологии становятся сейчас ключевым вопросом национальной безопасности и высокотехнологического развития страны.

Рис.1. Первая вычислительная машина Чарльза Бэббиджа.
Справа Ада Лавлейс, дочка Байрона. Она написала первую программу
для этой машины и придумала цикл.

На кафедре «Газовой и волновой динамики» проводятся исследования, для которых необходимо проведение вычислений на суперкомпьютерах. Проведение расчетов на суперЭВМ существенно отличается от работы на обычном компьютере или ноутбуке. Мощные современные компьютеры имеют сотни и тысячи параллельно работающих ядер. Сейчас практически невозможно найти ноутбук, у которого только одно ядро. Такие ноутбуки уже представляют собой музейную ценность. Но обучение программированию по старинке предназначено для работы на одном ядре.

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

ТЕХНОЛОГИИ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ (ОБЯЗАТЕЛЬНЫЙ ДЛЯ 5 КУРСА, ВЕСЕННИЙ СЕМЕСТР)
Рис.2. Первый электронный цифровой
компьютер ENIAC. Он находится в
Пенсильванском университете,
Филадельфия.

На Рис. 1, приведена первая вычислительная машина (механическая) Чарльза Бэббиджа. Она была создана в середине позапрошлого века. Первую программу для нее написала дочка Байрона, Ада Лавлейс.

Целью данного курса является изучение архитектуры современных компьютеров, методов и технологий параллельного программирования для многопроцессорных вычислительных систем в объеме, достаточном для успешного начала работ в области параллельного программирования. Существует три основные технологии параллельного программирования: OpenMP, MPI и CUDA.

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

На Рис.2 приведена цифровая электронная машина ENIAC, которая находится в Пенсильванском университете США, Филадельфия. На Рис.3 факультет Computer Science рядом с которым находится зал с ENIAC (фото автора).

Рис.3. Факультет Computer Science PENN
University (фото автора).

ВВЕДЕНИЕ В ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ ДЛЯ ГРАФИЧЕСКИХ УСКОРИТЕЛЕЙ

В настоящее время широко используется параллельное программирование на графических процессорах, реализуемое с помощью технологии CUDA. Дискретные видеокарты NVIDIA часто устанавливают в ноутбуки и компьютеры. А это мощный параллельный ускоритель для решения сложных задач гидрогазодинамики и механики деформируемого твердого тела. Графический процессор позволяет осуществить распараллеливание на сотни тысяч и миллионы параллельно работающих нитей. В данном курсе изучаются основы новой технологии параллельного программирования CUDA для современных графических ускорителей NVIDIA. Появление этой технологии требует усвоения совершенно новой идеологии и принципов программирования на языках Фортран 2018 и С++. Применение графических ускорителей, основанных на видеокартах, которые используются в компьютере или ноутбуке, дают возможность ускорить выполнение многих задач в десятки раз (Рис.4). Кроме того, эта техника доступна практически любому пользователю - нет необходимости приобретать дорогостоящее оборудование. Программное обеспечение, предлагаемое фирмой NVIDIA доступно бесплатно. С помощью этой технологии можно создавать высокоэффективные алгоритмы для решения сложных задач.

Задачей курса является ознакомление студентов и аспирантов с основными принципами параллельного программирования для графических ускорителей. Использование новых идей и новой технологии позволит использовать все возможности современных процессоров и графических ускорителей для получения решения сложных многомерных задач с помощью современных языков программирования.

ВВЕДЕНИЕ В ПАРАЛЛЕЛЬНЫЕ ЧИСЛЕННЫЕ МЕТОДЫ ДЛЯ МНОГОПРОЦЕССОРНЫХ ЭВМ

Значительное развитие в последнее время получили многопроцессорные ЭВМ (Рис.5). Использование таких компьютеров позволяет решать сложные научно – технические задачи. При этом численные методы являются мощным математическим средством решения научно-технических проблем. Это связано как с невозможностью в большинстве случаев получить аналитическое решение, так и с развитием вычислительной техники. Студентам важно понимать основы построения архитектуры компьютеров, сущность применения методов параллельного программирования для создания высокоэффективных программ для многопроцессорных ЭВМ. Параллельные программы и математические модели, созданные на их основе, можно использовать для предсказания и изучения поведения сложных физических систем.

Рис.4. Сравнение обычного процессора справа и графического процессора.

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

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


Рис.5. Современные (слева и внизу) и не очень (справа)
многопроцессорные ЭВМ.
КОМПЬЮТЕРНАЯ ГРАФИКА НА ОСНОВЕ OPENGL

Компьютерная графика широко используется при создании различных систем автоматизированного проектирования, при создании моделей различных физических процессов. Графическое представление полученных результатов дает гораздо больше информации для понимания происходящих процессов.

Цель курса - дать широкий обзор основных понятий компьютерной графики и обработки изображений. Рассматриваются разделы двумерной (2D) и трехмерной (3D) графики. Разделы обработки и представления изображений включают: теорию цвета, сглаживание, растровое отображение линий и многоугольников.

Задачей курса является изучение построения трехмерной графики, которая включает: проективную геометрию, представление кривых и поверхностей, анимацию, моделирование и видовые преобразования, алгоритмы удаления невидимых поверхностей, модели отражения и алгоритмы освещения. Курс построен на базе графических примитивов языка Fortran 2018 и OpenGL.

На Рис.6, 7 и 8 приведены графики, построенные с помощью графических примитивов языка Fortran 2018 и OpenGL для расчета процессов вторичного вскрытия нефтеносных пластов с помощью пиропатронов.


Рис.6. Визуализация процесса детонации внутри
пиропатрона в разные моменты времени
(поле скоростей).
ВВЕДЕНИЕ В ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ FORTRAN 2018

Целью данного курса является изучение языка Fortran 2008. Фортран один из первых языков программирования высокого уровня. С самого начала он предназначался для решения сложных вычислительных задач. Особенно актуально применение Фортрана при решении крупномасштабных вычислительных задач с использованием многопроцессорных ЭВМ. Решение таких задач требуется в различных сферах фундаментальных научных исследований и во многих прикладных областях. Одной из наиболее важных причин популярности и живучести Фортрана является огромный фонд прикладных программ, который накоплен за десятилетия существования языка. С помощью Фортрана написано большое количество современных программ. В версии Фортран (90/95) введены операторы распараллеливания, которые позволяют в полной мере использовать особенности суперскалярной архитектуры процессоров фирм INTEL и AMD. Фортран поддерживает такие эффективные технологии программирования как модульное, объектно-ориентированное программирование, средства явной спецификации векторных операций, средства поддержки параллельности и др.

Этот курс содержит введение в параллельные вычисления с использованием Фортрана. Fortran поддерживает три типа параллельных режимов вычислений: Coarray, OpenMP и интерфейс передачи сообщений (MPI). В курсе лекций обсуждаются все три режима параллельных вычислений. Кроме того, первая часть курса содержит обсуждение текущего стандарта Fortran, а именно Fortran 2018.


Рис.7. Визуализация процесса детонации внутри
пиропатрона в разные моменты времени
(давление).

Первую часть курса можно использовать для изучения современного языка Fortran, даже если студент еще не знаком с более ранними версиями Fortran. Курс имеет смысл изучать последовательно с самого начала. Однако студенты, знакомые с более ранними версиями Фортрана, могут пропустить введение в Фортран и сразу перейти к новым функциям языка.

FORTRAN 2018 ДЛЯ НАУЧНОГО И ИНЖЕНЕРНОГО МОДЕЛИРОВАНИЯ (ПРОДОЛЖЕНИЕ СПЕЦКУРСА)
Рис.8. Визуализация процесса детонации
внутри пиропатрона.

Поскольку Фортран в основном используется для решения задач, связанных с наукой и математическим моделированием, стандартные численные методы использовались в качестве средства для иллюстрации применения языка. Однако для понимания числовых примеров, приведенных в курсе, не требуются знания, выходящие за рамки элементарного исчисления. Основное внимание уделяется языку программирования, а не сложным численным методам.

Цель курса – дать основные знания по операторам и структурам – модулям, функциям и подпрограммам языка Фортран 2018. Ожидается, что слушатели курса, после правильного понимания языка сможет писать гораздо более эффективные коды. Приводятся советы по программированию и по стилю. Они служат просто руководящими принципами и помогают выработать свой стиль программирования.

Задачей курса является обучение студентов, начиная с первых курсов, современному объекто-ориентированному языку, предназначенному для создания сложных многомерных моделей задач предсказательного.

ОСНОВЫ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ НА С И FORTRAN 2018
Рис.9. «Кристофари» — суперкомпьютер,
созданный Сбербанком России.
Производительность 6 669.0 петафлопс.

Основы инженерного программирования с использованием C и Fortran это курс, в котором показано, как быстро создать прототип программы для инженерного приложения. Параллельное освещение в курсе C и Fortran, преобладающих компьютерных языков в математическом моделировании, является уникальным. Он подчеркивает важность развития навыков программирования на Фортране, при этом демонстрируется важность сохранения хороших знаний о С для их совместного использования.

Цель курса – кратко изложить основные операторы и идеологию языка Фортран. Ознакомить слушателей с различием и общими подходами к построению программ на этих языках, а также познакомить с построением вызова подпрограмм, написанных на Фортране из главной программы на С. И наоборот -вызова из главной программы на Фортране функций на С.

Задачей курса является первоначальное ознакомления о совместной работе на двух языках программирования. Языки программирования C и Fortran преобладают при решении задач математического моделирования и инженерных задач. Хотя C часто представлен как предпочтительный язык для разработки программ, особое внимание уделяется знанию Фортрана 2018. В курсе предполагается, что любой код Fortran, с которым сталкивается читатель, является работоспособным и отлаженным; следовательно, упор делается на знание этого языка при чтении. Разработаны фундаментальные подходы к решению инженерных проблем с использованием компьютера, и включены приложения, которые служат справочными материалами для обоих языков.


Литература:
  1. Рыбакин Б.П. Параллельное программирование для графических ускорителей. 2011, «Фирма Филомат» Москва, ISBN 978-5-93838-046-2, 262 с.
  2. Рыбакин Б.П. ЧИСЛЕННЫЕ МЕТОДЫ ДЛЯ МНОГОПРОЦЕССОРНЫХ ЭВМ. 2008, ISBN 978-9975-70-700-8, 340 с.