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

Journal influence

Higher Attestation Commission (VAK) - К1 quartile
Russian Science Citation Index (RSCI)

Bookmark

Next issue

4
Publication date:
09 September 2024

Application of parallel programming package Graphplus templet in modeling

The article was published in issue no. № 3, 2012 [ pp. 14-18 ]
Abstract:Software implementation of parallel programming tools Graphplus templet is represented, which automates the development of parallel programs for multiprocessor work stations and supercomputers. This development has been carried out at the department of information systems and technologies of Samara State Aerospace University within the research project «Graph Plus» (graphplus.ssau.ru). The article develops the approach, which makes it possible to expand and simplify the use of high performance computing hardware in numerical simulations. The key concepts of this approach are the following: application of generic solutions (patterns) of parallel programming; automatic parallelizing and deployment of code on different software and harware architectures; allocation of roles of system programmer – application programmer; usage of integrated development environments and code visualization techniques. The approach is based on the authorial methodology of parallel processes design – TEMPLET-methodology. The structure of the new version of software complex of parallel programming automation Graphplus templet is described. The detailed review of functioning principle of a program graphic model translator, input and output data of the translator, its integration with MS Visual Studio environment is given. The usage of software complex for solution of problems of non linear dynamics and computer optics is shown. Efficiency factors for the programs generated in it in the course of executing on multiprocessor work stations run under MS Windows and on the supercomputer «Sergei Korolev» of Samara State Aerospace University operating under Linux are provided.
Аннотация:Представлена программная реализация инструментария параллельного программирования Graphplus templet, ав-томатизирующего разработку параллельных программ для многопроцессорных рабочих станций и суперкомпьютеров. Данная разработка ведется с 2004 года на кафедре информационных систем и технологий Самарского государ-ственного аэрокосмического университета в рамках исследовательского проекта «Граф Плюс» (graphplus.ssau.ru). В статье развивается подход, позволяющий расширить и упростить применение высокопроизводительной вычисли-тельной техники в численном моделировании. Ключевыми концепциями данного подхода являются применение ти-повых решений (паттернов) параллельного программирования, автоматическое распараллеливание и развертывание кода в различных программно-аппаратных архитектурах, разделение ролей системный программист – прикладной программист, использование интегрированных сред разработки и методов визуализации кода. Подход основан на ав-торской методологии проектирования параллельных процессов – TEMPLET-методологии. Описана структура новой версии программного комплекса автоматизации параллельного программирования Graphplus templet. Детально рас-смотрены принцип функционирования транслятора графических моделей программ, исходные и выходные данные транслятора, его интеграция со средой MS Visual Studio. Показано применение программного комплекса для решения задач нелинейной динамики и компьютерной оптики. Приведены показатели эффективности сгенерированных в нем программ при исполнении на многопроцессорных рабочих станциях под управлением MS Windows и суперкомпьютере «Сергей Королев» Самарского государственного аэрокосмического университета, работающего под управлением Linux.
Authors: ( easts@mail.ru) - , Ph.D, ( doom-black@mail.ru) - , (khairutdinov@yandex.ru) -
Keywords: numerical simulation, automation of programming, domain specific language, program schema, computational model, parallel programming, software
Page views: 10652
Print version
Full issue in PDF (7.64Mb)
Download the cover in PDF (1.33Мб)

Font size:       Font:

Технические средства параллельного программирования широкодоступны и разнообразны: это многоядерные настольные системы, кластерные системы и суперкомпьютеры, распределенные системы в сети Интернет, 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.


Permanent link:
http://swsys.ru/index.php?page=article&id=3203&lang=en
Print version
Full issue in PDF (7.64Mb)
Download the cover in PDF (1.33Мб)
The article was published in issue no. № 3, 2012 [ pp. 14-18 ]

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