ISSN 0236-235X (P)
ISSN 2311-2735 (E)
3

13 Сентября 2024

Применение комплекса параллельного программирования Graphplus templet в моделировании


Востокин С.В. ( easts@mail.ru) - (Самарский государственный аэрокосмический университет им. академика С.П. Королева (национальный исследовательский университет), доктор технических наук, Литвинов В.Г. ( doom-black@mail.ru) - (Самарский государственный аэрокосмический университет им. академика С.П. Королева (национальный исследовательский университет), Хайрутдинов А.Р. (khairutdinov@yandex.ru) - (Самарский государственный аэрокосмический университет им. академика С.П. Королева (национальный исследовательский университет)
Ключевые слова: численное моделирование., автоматизация программирования, доменно-ориентированный язык, схемы программ, модель вычислений, параллельное программирование, комплекс программ
Keywords: numerical simulation, automation of programming, domain specific language, program schema, computational model, parallel programming, software


     

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

В статье развивается подход, описанный в [1], позволяющий расширить и упростить применение высокопроизводительной вычислительной техники в численном моделировании. Ключевыми концепциями данного подхода являются применение типовых решений (паттернов) параллельного программирования, автоматическое распараллеливание и развертывание кода в различных програм- мно-аппаратных архитектурах, разделение ролей системный программист – прикладной программист, использование интегрированных сред разработки (IDE) и методов визуализации кода на основе технологий XML.

Программный комплекс Graphplus templet [2] основан на модели процессов диффузного типа, в которой конструктивными элементами являются процессы и каналы. Процессы – пассивные объекты. Двунаправленные каналы, соединяющие пару процессов, – активные объекты. Процессы реализуют свои методы при поступлении сообщений по каналам и могут сформировать произвольное число ответных сообщений. Данная модель позволяет исключить конфликты одновременного доступа к памяти, свойственные многопоточной модели, гибко управлять состоянием вычислений, эффективно использовать компьютеры с распределенной и общей памятью.

Особенностью предлагаемого подхода является передача семантики модели программирования не на специальном, а на традиционном языке программирования. Примитивы для задания параллелизма не применяются. Для этого в препроцессоре системы Graphplus templet реализованы два алгоритма: алгоритм проверки интерпретируемости последовательной программы в терминах модели и алгоритм ее распараллеливания. Алгоритм распараллеливания выполняет автоматическое преобразование исходной последовательной программы в параллельную программу с теми же функциональными свойствами.

Программа в комплексе Graphplus templet состоит из модулей исходного кода. Каждый модуль, интерпретируемый в терминах модели, снабжается XML-спецификацией, в которой описываются процессы и каналы. Код модуля проверяется на соответствие этой спецификации. Код состоит из чередующихся фрагментов – блоков, сопоставленных элементам модели, а также тел методов и определенных пользователем структур данных. Границы таких фрагментов аннотированы при помощи специальных комментариев. Алгоритм генерации кода по XML-спецификации на известном языке является эталонным, то есть он документирован и именно им определяется семантика модели. Алгоритм основан на преобразованиях по шаблонам, так что связь между частями XML-спецификации и сгенерированным кодом легко обнаруживается при их сравнении.

Алгоритм распараллеливания кода следующий: 1) извлечение блоков пользовательского кода из исходной последовательной программы; 2) генерация новой программы с примитивами, необходимыми для данного варианта развертывания; 3) включение извлеченных пользовательских блоков в код сгенерированной параллельной программы.

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

Алгоритм генерации кода реализован авторами в специальном препроцессоре gpt.exe. Код программы пишется на языке C++. Модулем в данном случае является пара файлов: заголовочный файл с расширением (*.h) и файл реализации с расширением (*.cpp). Каждому модулю в проекте для IDE Microsoft Visual Studio соответствует файл с его XML-спецификацией, который включается в папку ресурсов приложения. Для файла XML-спецификации в проекте указывается, что перед сборкой проекта (pre-built) он должен быть обработан программой gpt.exe. Она генерирует фрагменты кода в файлах модуля. Кроме того, для файла XML-спецификации в настройках проекта указывается редактор. Им может быть как XML-редак­тор, визуализирующий модель посредством XSL-трансформации, так и специальный графический редактор, визуализирующий модель в виде ориентированного графа.

В процессе итеративной разработки, состоящей из чередующихся шагов редактирования, сборки и запуска программы, пользователь редактирует XML-спецификацию и код модуля. Препроцессор синхронизирует обе части модуля при каждой сборке. Вопрос контроля ошибок решен следующим образом. Проверяется правильность формата XML-файла и выполняется восстановление значений пропущенных атрибутов подстановкой значений по умолчанию. Никакого контроля при генерации больше не требуется. В случае возникновения конфликтов они разрешаются так: если пользователь сформировал блоки, не соответствующие структурным элементам модели, они выносятся в отдельное место в файле модуля; если в XML-спецификацию добавлен новый элемент, для которого не было пользовательского блока, то генерируется пустой блок с комментарием, указывающим на необходимость его определения. Остальной контроль выполняется компилятором и системой исполнения языка C++.

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

В вычислительных экспериментах исследовались две типовые схемы вычислений для вариантов развертывания параллельного кода под архитектуры Win32 и POSIX. С их помощью решены задачи математического моделирования с целью оценки реальных ускорений и эффективности распараллеливания.

Для решения задачи нелинейной динамики использовалась схема ADI [2], реализующая метод переменных направлений в общей памяти. Алгоритм схемы предусматривает чередование построчного и постолбцового сканирования области заданного размера. Элементарные операции над ячейкой области на четных и нечетных обходах, а также структура данных зависят от конкретного алгоритма. Авторами рассматривалась параллельная реализация численного метода, описанного в работе [3].

Временные характеристики решения задачи нелинейной динамики приведены в таблице 1. В экспериментах на многоядерной настольной системе решалась задача на области размером 5000×5000 по пространству и 10 отсчетов по времени. Использовался компьютер Samsung RF710 (Intel Core i5 M460 2,53GHz) с установленной ОС Windows 7 Ultimate 64 bits. Здесь и далее количество логических процессов – это параметр, влияющий на масштабируемость параллельного алгоритма. Значение его подбирается опытным путем для конкретных ЭВМ, схемы и алгоритма. Во всех экспериментах учитывалось время инициализации и очистки.

Таблица 1

Временные характеристики решения задачи нелинейной динамики

Количество логических процессов, шт.

Время счета, с

Ускорение

Эффективность, %

на многоядерной настольной системе

1

122,85

1,00

25,0

2

71,504

1,72

43,0

3

62,857

1,95

48,9

4

56,995

2,15

53,9

5

56,869

2,16

54,0

6

54,980

2,23

55,9

7

53,756

2,28

57,1

8

53,741

2,27

57,1

9

53,724

2,29

57,2

10

53,022

2,32

57,9

на узле суперкомпьютера

1

76,494

1,00

12,5

2

72,730

1,05

13,1

3

34,807

2,20

27,4

4

29,239

2,62

32,7

5

23,261

3,29

41,1

6

23,603

3,24

40,5

7

22,967

3,33

41,6

8

22,759

3,36

42,0

9

31,221

2,45

30,6

10

52,438

1,46

18,2

В экспериментах на узле суперкомпьютера решалась задача на сеточной области размером 5000´5000 по пространству и 10 отсчетов по времени. Использовался вычислительный узел суперкомпьютера «Сергей Королев» со следующими характеристиками: тип узла IBM BladeCenter HS22; процессоры 2х Intel Xeon X5560, 2.80GHz, 8MB Cache; оперативная память 12 Гб; жесткий диск 76Гб или 146Гб SAS 10K 16Mb Cache; тип системной сети InfiniBand DDR, QDR; операционная система Red Hat Enterprise Linux 5.6.

Для задачи о распространении плоской световой волны на основе численного решения уравнений Максвелла проведено распараллеливание последовательного алгоритма из работы [4]. Для этого использовалась схема конвейера PLine [2]. В ней расчетная область представляет собой цепочку ячеек, над которыми последовательно выполняется элементарная операция. Фронт вычислений распространяется слева направо. Элементарная операция не может запускаться в соседних ячейках. В рассмотренной реализации ячейка хранит 3 вектора проекций электромагнитного поля, размер сеточной области в экспериментах составлял 50×201, количество итераций численного метода – 799.

В экспериментах на многоядерной настольной системе, результаты которых показаны в табли- це 2, использовался компьютер Samsung Q210 (Intel Core 2 Duo 2GHz) с установленной ОС Windows Vista Home 32 bits.

Таблица 2

Временные характеристики решения задачи о распространении плоской световой волны

Количество логических процессов, шт.

Время счета, с

Ускорение

Эффективность, %

на многоядерной настольной системе

1

1,271

1,00

50,0

2

1,167

1,09

54,5

3

0,824

1,54

77,0

4

0,665

1,91

95,5

5

0,725

1,75

87,5

6

0,796

1,60

80,0

8

0,801

1,59

79,5

на узле суперкомпьютера

1

0,906

1,00

12,5

2

0,814

1,11

13,9

4

0,473

1,92

24,0

8

0,282

3,21

40,1

16

0,194

4,67

58,4

20

0,184

4,92

61,5

24

0,186

4,87

60,9

28

0,235

3,85

48,1

32

0,311

2,91

36,4

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

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

Код системы Graphplus templet зарегистрирован Федеральным институтом промышленной собственности и открыт для некоммерческого применения (http://graphplus.ssau.ru). Авторы выражают признательность Самарскому государственному аэрокосмическому университету и администраторам суперкомпьютера «Сергей Королев» за помощь в проведении вычислительных экспериментов.

Литература

1.     Востокин С.В. Визуальное моделирование в разработке параллельных алгоритмов. Метод и программные средства. LAMBERT Academic Publishing, 2011. 304 c.

2.     Востокин С.В., Хайрутдинов А.Р., Литвинов В.Г. Программный комплекс параллельного программирования Graphplus templet // Вестн. СамГТУ: Сер. Физматнауки, 2011. № 4 (25). C. 146–153.

3.     Курушина С.Е. Аналитическое исследование и численное моделирование контрастных диссипативных структур в поле флуктуаций динамических переменных // Изв. вузов: Прикладная нелинейная динамика, 2009. № 6. C. 125–138.

4.     Головашкин Д.Л., Сойфер В.А. Анализ прохождения электромагнитного излучения через дифракционную линзу // Автометрия. 1999. № 5. C. 119–121.



http://swsys.ru/index.php?id=3203&lang=%E2%8C%A9%3Den&like=1&page=article


Perhaps, you might be interested in the following articles of similar topics: