Розробка сервісно-орієнтованих засобів для запуску паралельних програм на мультипроцесорному кластері

Запропоновано підхід до проектування та генерації Grid-сервісів для платформи Globus Toolkit на ос-нові використання алгеброалгоритмічного інструментарію. Розроблено архітектуру та виконано про-грамну реалізацію Grid-сервісу, що виконує запуск паралельних програм на мультипроцесорному клас-тері. Роз...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Datum:2019
Hauptverfasser: Doroshenko, А.Yu., Beketov, O.G., Yatsenko, O.A., Vitriak, I.A., Pavlyuchin, T.O.
Format: Artikel
Sprache:Ukrainian
Veröffentlicht: PROBLEMS IN PROGRAMMING 2019
Online Zugang:https://pp.isofts.kiev.ua/index.php/ojs1/article/view/354
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Назва журналу:Problems in programming
Завантажити файл: Pdf

Institution

Problems in programming
id pp_isofts_kiev_ua-article-354
record_format ojs
resource_txt_mv ppisoftskievua/fa/efc2d0fc203eca86f4fb41d4b1a207fa.pdf
spelling pp_isofts_kiev_ua-article-3542025-02-12T23:28:28Z Розробка сервісно-орієнтованих засобів для запуску паралельних програм на мультипроцесорному кластері Doroshenko, А.Yu. Beketov, O.G. Yatsenko, O.A. Vitriak, I.A. Pavlyuchin, T.O. УДК 681.3 Запропоновано підхід до проектування та генерації Grid-сервісів для платформи Globus Toolkit на ос-нові використання алгеброалгоритмічного інструментарію. Розроблено архітектуру та виконано про-грамну реалізацію Grid-сервісу, що виконує запуск паралельних програм на мультипроцесорному клас-тері. Розроблений Grid-сервіс застосовано для автоматизації запуску паралельної програми з області метеорологічного прогнозування.Problems in programming 2019; 1: 03-14 PROBLEMS IN PROGRAMMING ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ ПРОБЛЕМИ ПРОГРАМУВАННЯ 2019-03-27 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/354 PROBLEMS IN PROGRAMMING; No 4 (2014); 03-14 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 4 (2014); 03-14 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 4 (2014); 03-14 1727-4907 uk https://pp.isofts.kiev.ua/index.php/ojs1/article/view/354/351 Copyright (c) 2019 PROBLEMS IN PROGRAMMING
institution Problems in programming
baseUrl_str https://pp.isofts.kiev.ua/index.php/ojs1/oai
datestamp_date 2025-02-12T23:28:28Z
collection OJS
language Ukrainian
topic_facet
УДК 681.3
format Article
author Doroshenko, А.Yu.
Beketov, O.G.
Yatsenko, O.A.
Vitriak, I.A.
Pavlyuchin, T.O.
spellingShingle Doroshenko, А.Yu.
Beketov, O.G.
Yatsenko, O.A.
Vitriak, I.A.
Pavlyuchin, T.O.
Розробка сервісно-орієнтованих засобів для запуску паралельних програм на мультипроцесорному кластері
author_facet Doroshenko, А.Yu.
Beketov, O.G.
Yatsenko, O.A.
Vitriak, I.A.
Pavlyuchin, T.O.
author_sort Doroshenko, А.Yu.
title Розробка сервісно-орієнтованих засобів для запуску паралельних програм на мультипроцесорному кластері
title_short Розробка сервісно-орієнтованих засобів для запуску паралельних програм на мультипроцесорному кластері
title_full Розробка сервісно-орієнтованих засобів для запуску паралельних програм на мультипроцесорному кластері
title_fullStr Розробка сервісно-орієнтованих засобів для запуску паралельних програм на мультипроцесорному кластері
title_full_unstemmed Розробка сервісно-орієнтованих засобів для запуску паралельних програм на мультипроцесорному кластері
title_sort розробка сервісно-орієнтованих засобів для запуску паралельних програм на мультипроцесорному кластері
description Запропоновано підхід до проектування та генерації Grid-сервісів для платформи Globus Toolkit на ос-нові використання алгеброалгоритмічного інструментарію. Розроблено архітектуру та виконано про-грамну реалізацію Grid-сервісу, що виконує запуск паралельних програм на мультипроцесорному клас-тері. Розроблений Grid-сервіс застосовано для автоматизації запуску паралельної програми з області метеорологічного прогнозування.Problems in programming 2019; 1: 03-14
publisher PROBLEMS IN PROGRAMMING
publishDate 2019
url https://pp.isofts.kiev.ua/index.php/ojs1/article/view/354
work_keys_str_mv AT doroshenkoayu rozrobkaservísnooríêntovanihzasobívdlâzapuskuparalelʹnihprogramnamulʹtiprocesornomuklasterí
AT beketovog rozrobkaservísnooríêntovanihzasobívdlâzapuskuparalelʹnihprogramnamulʹtiprocesornomuklasterí
AT yatsenkooa rozrobkaservísnooríêntovanihzasobívdlâzapuskuparalelʹnihprogramnamulʹtiprocesornomuklasterí
AT vitriakia rozrobkaservísnooríêntovanihzasobívdlâzapuskuparalelʹnihprogramnamulʹtiprocesornomuklasterí
AT pavlyuchinto rozrobkaservísnooríêntovanihzasobívdlâzapuskuparalelʹnihprogramnamulʹtiprocesornomuklasterí
first_indexed 2025-07-17T09:45:07Z
last_indexed 2025-07-17T09:45:07Z
_version_ 1850409738074849280
fulltext Моделі та засоби паралельних і розподілених програм © А.Ю. Дорошенко, О.Г. Бекетов, О.А. Яценко, Є.А. Вітряк, Т.О. Павлючин, 2014 ISSN 1727-4907. Проблеми програмування. 2014. № 4 3 УДК 681.3 А.Ю. Дорошенко, О.Г. Бекетов, О.А. Яценко, Є.А. Вітряк, Т.О. Павлючин РОЗРОБКА СЕРВІСНО-ОРІЄНТОВАНИХ ЗАСОБІВ ДЛЯ ЗАПУСКУ ПАРАЛЕЛЬНИХ ПРОГРАМ НА МУЛЬТИПРОЦЕСОРНОМУ КЛАСТЕРІ Запропоновано підхід до проектування та генерації Grid-сервісів для платформи Globus Toolkit на ос- нові використання алгеброалгоритмічного інструментарію. Розроблено архітектуру та виконано про- грамну реалізацію Grid-сервісу, що виконує запуск паралельних програм на мультипроцесорному клас- тері. Розроблений Grid-сервіс застосовано для автоматизації запуску паралельної програми з області метеорологічного прогнозування. Вступ На сьогоднішній день як у всьому світі, так і в Україні, є популярними та знаходять своє застосування розподілені комп’ютерні системи на основі викорис- тання Grid-технологій, які надають доступ до великих сховищ інформації та інших ресурсів [1]. Головною метою програму- вання Grid-систем є побудова моделей програмування, інструментальних засобів, методів, які підтримують ефективну роз- робку переносимих застосувань і дозво- ляють отримувати високоефективні про- грами для Grid-систем. Програмування для Grid часто вимагає використання мо- жливостей і властивостей, що лежать за межами простого послідовного програму- вання, й навіть паралельного або розподі- леного програмування. Крім управління операціями над розподіленими структу- рами даних програміст Grid має керувати обчисленнями в середовищі, що є відкри- тим, різнорідним та динамічним. Застосу- вання Grid виконуються на різних типах ресурсів, конфігурація яких може зміню- ватися під час виконання застосувань. Тому крім звичайних обчислень над стру- ктурами даних програміст Grid також має проектувати взаємодію між віддаленими сервісами, джерелами даних і ресурсами апаратних засобів. Звідси виникає все більш глибоке розуміння того, що сучасні інструментальні засоби й мови програму- вання недостатні для підтримки ефектив- ної розробки високопродуктивних про- грам для Grid-систем. Відмітимо, що зі зростанням складності і динамічності Grid застосувань використання програмних за- собів для їх розробки стає суттєвим при настроюванні параметрів застосувань або виявленні дефектів програми. До інструментальних засобів Grid відноситься, зокрема, Globus Toolkit (GT) [2], призначений для розробки серві- сно-орієнтованих розподілених обчислю- вальних програм та інфраструктур. Для GT існують програмні засоби, що дозво- ляють спростити розробку Grid-сервісів [3–9]. Наприклад, система Introduce [3, 4] надає користувачу графічний інтерфейс для створення сервісів GT 4.0, а також до- давання методів, ресурсів, властивостей та обмежень безпеки. На основі проекту сервісу Introduce генерує каркас клієнтсь- кої та серверної частини Grid- застосування. Розроблювачу далі необхі- дно реалізувати логіку методів сервісу. Однак, написання коду методів є досить складною задачею. У роботі [10] авторами була запропонована автоматизація розро- бки алгоритмів, що представляють логіку виконання сервісів і програм-клієнтів, а також генерація відповідного коду мовою програмування. Згадана автоматизація здійснюється за допомогою розробленого Інтегрованого інструментарію Проекту- вання та Синтезу програм (ІПС) [11, 12]. У попередній роботі інструментарій ІПС був використаний для розробки Grid- сервісу для GT 4.0.3, який виконував за- пуск паралельної програми сортування на локальному комп’ютері. Дана робота про- довжує згадані дослідження і направлена на розробку сервісно-орієнтованої Grid- програми, що виконує запуск паралельних Моделі та засоби паралельних і розподілених програм 4 програм на віддаленому мультипроцесор- ному кластері. Проведено експеримент, в якому розроблений Grid-сервіс було за- стосовано для запуску паралельної про- грами з області метеорології. 1. Інструментальні засоби автоматизації розробки Grid-сервісів для платформи Globus Toolkit Globus Toolkit є реалізацією OGSA/OGSI (Open Grid Services Architecture/Open Grid Services Infra- structure) стандарту на архітектуру і фун- кціональність Grid-платформ, яка ґрун- тується на технології веб-сервісів [2]. GT забезпечує програмну інфраструкту- ру, що дає можливість програмам працю- вати з розподіленими різнорідними обчи- слювальними ресурсами як з єдиною вір- туальною машиною. Інструментарій скла- дається з набору компонентів, що реалі- зують базові Grid-сервіси, такі як захист, розміщення ресурсу, керування ресурсами і зв’язок. Для Globus Toolkit існує низка інструментальних засобів, що призначені для автоматизації розробки Grid-сервісів. Стислий огляд деяких з них наведено далі. Інструментарій Globus Service Build Tools Project [5] містить компонент (роз- ширення) GT4IDE, що вбудовується в се- редовище розробки програм Eclipse [6], і призначений для полегшення розробки сервісів для GT 4.0. Розширення надає мо- жливість розробнику створити сервіс та додати до нього методи. Система генерує стаб сервісу, який далі потрібно реалізува- ти розробнику. У роботах [7, 8] запропоновано метод та систему генерації програмного забезпечення для сервісно-орієнтованих архітектур, що ґрунтується на викорис- танні модельно-орієнтованого підходу MDA (Model Driven Architecture) та Java анотацій. В роботі [9] розглядається інструментарій автоматизації генерації Grid-сервісів для GT 3.0 із використанням мови UML. Grid-сервіси подаються у вигляді діаграм класів та моделей UML. Система виконує генерацію усіх необхідних файлів, каталогів, вихідного коду та елементів даних розроблюваного сервісу. Використана у даній роботі систе- ма генерації сервісів Introduce [3, 4] має низку переваг над перерахованими вище інструментами. Зокрема, особливостями даної системи є: незалежність від середо- вища розробки програм; підтримка роз- робки строго типізованих сервісів; при- ховування низькорівневих деталей реалі- зації сервісів; генерація методів як для серверної частини, так і клієнтської. Сис- тема Introduce призначена для підтримки трьох основних етапів розробки Grid- сервісів для GT: 1) створення базисної структури сервісу. Розроблювач сервісу описує на верхньому рівні основні властивості серві- су, такі як ім’я та простір імен. Після того як користувач вказав основні властивості, Introduce створює базисну реалізацію сер- вісу, до якої користувач може потім дода- вати методи та опції безпеки на етапі зміни сервісу; 2) модифікація сервісу. Етап моди- фікації дозволяє розроблювачу додавати, видаляти й змінювати методи та власти- вості сервісу, ресурси, контексти сервісу, а також безпеку на рівні сервісу або мето- дів. На цьому кроці розроблювач може створити строго-типізований інтерфейс сервісу, визначаючи вхідні та вихідні па- раметри методів сервісу. Після того як операції були додані до сервісу, розроб- лювач може додавати логіку, що реалізує методи; 3) розгортання. Розроблювач може розгорнути сервіс, що був створений за допомогою Introduce у контейнер Grid- сервісів (наприклад, контейнер сервісів GT). Для виконання перерахованих трьох кроків розроблювач сервісу викори- стовує графічне середовище Introduce. На основі опису сервісу Introduce генерує ка- ркаси сервісу та відповідної програми- клієнта (мовою Java), які розроблювачу необхідно далі заповнити кодом реалізації. Отже, система Introduce генерує код сервісу, який не містить реалізації методів. Моделі та засоби паралельних і розподілених програм 5 Створений авторами алгеброалгоритміч- ний інструментарій [10], що розглядається у наступному розділі, підтримує подаль- ший процес розробки методів – констру- ювання алгоритмів методів та генерацію відповідного коду мовою програмування. 2. Алгеброалгоритмічний інструментарій проектування та синтезу програм Розроблена система ІПС є сукупніс- тю програмних засобів, що забезпечують побудову високорівневих специфікацій ал- горитмів в режимі порівневого діалогового конструювання, а також генерацію відпо- відних програм в цільових мовах програ- мування (C, C++, Java) [11, 12]. В робо- ті [10] інструментарій було налаштовано на конструювання алгоритмів методів Grid-сервісів і програм-клієнтів, а також генерацію тексту мовою програмування із заповненням каркасного коду, створеного за допомогою програми Introduce. Інстру- ментарій було використано для розробки сервісу, що виконує паралельне сортуван- ня на локальному комп’ютері. У даній ро- боті систему ІПС було застосовано для ро- зробки більш складного сервісу, що вико- нує запуск паралельних програм на відда- леному мультипроцесорному кластері (див. розділ 3). В основу інструментарію проекту- вання та генерації програм покладений апарат систем алгоритмічних алгебр (САА) [11], що призначений для формалі- зованого проектування структурованих послідовних і паралельних алгоритмів та програм. У процесі проектування алгорит- мів ІПС інтегрує три форми їх подання – природно-лінгвістичну, алгебраїчну та граф-схемну. Основною формою проекту- вання в ІПС є природно-лінгвістична, яка ґрунтується на алгоритмічній мові САА/1. Основними об’єктами мови САА-схем є абстракції операторів і умов, що можуть бути елементарними (базисними) або складеними. Складені оператори й умови будуються з елементарних за допомогою операцій послідовного і паралельного ви- конання операторів. До основних операцій відносяться такі:  "оператор1" ПОТІМ "опера- тор2" (або "оператор1" ; "опера- тор2") – послідовне виконання операто- рів;  ЯКЩО 'умова' ТО "оператор1" ІНАКШЕ "оператор2" КІНЕЦЬ ЯКЩО – оператор розгалуження;  ПОКИ НЕ 'умова_закінчен- ня_циклу' ЦИКЛ "оператор" КІНЕЦЬ ЦИКЛУ – оператор циклу;  ПАРАЛЕЛЬНО (i = 1, ..., n) ("опе- ратор") – асинхронне виконання n опера- торів (потоків). Основними компонентами інстру- ментарію є:  конструктор, призначений для діа- логового проектування схем алгоритмів;  генератор коду мовою програму- вання на основі алгоритмів;  редактор граф-схем;  база даних алгеброалгоритмічних специфікацій, у якій зберігається текст конструкцій САА і базисних елементів схем та їх програмні реалізації. За допомогою конструктора корис- тувач системи виконує проектування алго- ритмів у діалоговому режимі, вибираючи зі списку заздалегідь заготовлені констру- кції (операції САА, базисні оператори та умови). Процес проектування алгоритмів є порівневим (здійснюється зверху-вниз) і представлений у вигляді дерева конструю- вання. На основі отриманої у процесі конструювання схеми, а також реалізацій елементарних операторів та умов цільовою мовою програмування, що зберігаються в БД ІПС, система ІПС виконує генерацію програми (рис. 1). На вхід генератора над- ходить також файл, що містить каркасний опис основного класу програми (без реалі- зацій методів), у який виконується підста- новка коду. У випадку розробки сервісно- орієнтованої програми для GT, для генера- ції каркасного коду використовується ін- струментарій Introduce. Спосіб підстанов- ки згенерованого коду для методів у кар- касний файл вказується у параметрах ге- нерації. Моделі та засоби паралельних і розподілених програм 6 3. Розробка Grid-сервісу для запуску паралельних програм на мультипроцесорному кластері У даній роботі на основі викорис- тання алгеброалгоритмічного інструмен- тарію виконане проектування та генерація коду Grid застосування, що призначене для запуску програм на віддаленому комп’ютері (мультипроцесорному класте- рі). Структура і схема роботи розроблено- го Grid-застосування подана на рис. 2. Grid-програма складається з двох основ- них частин: програми-клієнта та Grid- сервіса (ISS_Service1). Обидві частини програми розміщені на комп’ютерах із встановленою системою Globus Tool- kit 4.0.3. За допомогою графічного інтерфейсу про- грами-клієнта користувач передає Grid- сервісу необхідні дані про програму, яку необхідно запустити на віддаленому комп’ютері:  ім’я хосту віддаленого комп’ютера (кластера), ім’я користувача та пароль;  робочий каталог на кластері, у якому розміщена програма для запуску;  назва файлу скрипта (командно- го файлу) для виконання програми;  список значень параметрів ко- мандного рядка для скрипта (наприклад, назва розділу кластера та кількість парале- льних процесів). Рис. 2. Структура і схема роботи розробленої Grid програми SSH Обчислювальний вузол 2 (з Globus Toolkit) Контейнер сервісів GT Grid-сервіс ISS_Service1 Обчислювальний вузол 1 (з Globus Toolkit) Програма- клієнт Grid-сервісу Мультипроцесорний кластер (icybcluster.org.ua) Паралельна програма для виконання Рис. 1. Процес проектування та генерації програм у системі ІПС Конструктор алгоритмів Файл з каркасним описом основного класу програми (сервісу) Генератор програм Код програми (сервісу) мовою програмування (Java, C++) Алгебро- алгоритмічна специфікація програми (сервісу) База даних Моделі та засоби паралельних і розподілених програм 7 Перераховані вище дані, які опису- ють задачу для запуску, зберігаються у те- кстовому файлі на обчислювальному вуз- лі 1. Grid-сервіс, відповідно до переданих йому програмою-клієнтом даних з описом задачі, виконує запуск скрипта на вказа- ному комп’ютері та повертає клієнту текст результату виконання цього скрипта. Розроблену Grid програму було за- стосовано для виконання програм на супе- ркомп’ютері Інституту кібернетики імені В.М. Глушкова НАН України [13]. Відмі- тимо, що на згаданому кластері встановле- но систему керування ресурсами кластера SLURM (Simple Linux Utility for Resource Management) [14]. В рамках цієї системи задачі, що запускаються користувачами кластера, розміщуються в черзі завдань, і кожній задачі присвоюється свій унікаль- ний ідентифікатор. Скрипт для запуску програми, що виконується розробленим Grid-сервісом, містить SLURM команду sbatch, яка додає задачу в чергу на вико- нання [14]. Окрім занесення задач у чергу, Grid-сервіс також може виконувати низку додаткових команд:  видачу інформації про стан за- пущених задач (вміст черги);  відміну задачі;  перегляд списку файлів у робо- чому каталозі;  перегляд вмісту файлів та ре- зультатів виконаних задач. Виконання перерахованих команд також ініціюється програмою-клієнтом. Grid-сервіс та програму-клієнт було реалізовано мовою Java. На рівні програм- ного коду Grid-сервіс ISS_Service1 є кла- сом, що містить у собі три методи: String connectToServer( String hostName, String userName, String password, int client_number) String executeProgram( String workingDirectory, String fileToExecute, String cmdLineParameters, boolean locally, boolean forWindows, int client_number) void disconnect( int client_number) Перераховані методи виконують такі функції. Метод connectToServer виконує з’єднання із сервером hostName для ко- ристувача userName. При успішно встано- вленому з’єднанні, поточній програмі- клієнту присвоюється номер client_number, і інформація про поточну сесію заноситься у масив сесій під відпо- відним номером. У випадку успішного з’єднання, ця функція повертає текст із номером клієнта, у протилежному випадку метод повертає текст з повідомленням про помилку з’єднання із сервером. За допомогою методу execute- Program виконується запуск скрипта (або команди) fileToExecute на сервері у вказаному робочому каталозі для клієн- та з номером client_number. Метод по- вертає текст з результатами виконання скрипта. Метод disconnect закриває з’єднання із сервером для вказаної програ- ми-клієнта. У Grid-сервісі передбачена також можливість запуску програм на локально- му комп’ютері, тобто на тому ж, де розта- шований Grid-сервіс. У цьому випадку ме- тоди connectToServer та disconnect не використовуються, а параметр locally у методі executeProgram повинен бути встановлений в істинне значення. Каркас програмного коду мовою Java для Grid-сервісу ISS_Service1 був зге- нерований за допомогою програми Introduce. Подальше проектування алгори- тмів методів мовою САА та генерація від- повідного коду виконана в інструментарії ІПС. На рис. 3 показана САА-схема Grid- сервісу, побудована в конструкторі алго- ритмів інструментарію ІПС. В схемі назви методів зі списком формальних параметрів відділені від реалізації методів ланцюжка- ми символів “=”. Текст базисних і складе- них операторів записаний у подвійних ла- пках, а базисні умови обрамлені одинар- ними лапками. На рис. 4 показано приклад алгори- тму виклику методів розглянутого Grid- сервісу у клієнтській програмі. Приклад значень параметрів, що передаються про- грамі-клієнту, розглядається у розділі 4. Моделі та засоби паралельних і розподілених програм 8 СХЕМА ISS_SERVICE1 "Алгоритми функціонування методів Грід-сервіса ISS_Service1. Сервіс виконує запуск програми (або команди) на віддаленому або локальному комп’ютері." КІНЕЦЬ КОМЕНТАРІЮ "Дані сервісу" ==== "Визначити масив віддалених сесій (jtv)" "connectToServer (hostName, userName, password, client_number)" ==== "Визначити масив (res_str) типу (String) зі значеннями ({ "", "", "" })"; "Визначити змінну (host) типу (String) = = (userName + "@" + hostName)"; " Створити нову сесію для клієнта з номером (client_number)"; "Занести число (client_number) в рядок (res_str)"; ЯКЩО 'Сесія для клієнта (client_number) успішно створена' ТО "Встановити з'єднання з сервером (host) для користувача (client_number)"; ЯКЩО 'З'єднання с сервером (host) встановлено' ТО "Вивести текст ("Cервіс з'єднався із сервером") і змінну (host)" ІНАКШЕ "Занести повідомлення про помилку з'єднання в рядок (res_str)"; "Видалити сесію для клієнта (client_number)"; "Вивести текст (res_str)"; КІНЕЦЬ ЯКЩО ІНАКШЕ "Занести повідомлення про помилку створення сесії в рядок (res_str)"; "Вивести текст (res_str)"; КІНЕЦЬ ЯКЩО "Повернути значення (res_str)"; "executeProgram (workingDirectory, fileToExecute, cmdLineParameters, locally, forWindows, client_number)" ==== "Визначити змінні (res_str, command_str) типу (String) = ("")"; "Підготувати текст команди (command_str) на основі параметрів workingDirectory)(fileToExecute) (cmdLineParameters)(locally)"; ЯКЩО 'Виконання на віддаленому комп'ютері' ТО "Виконати команду (command_str) на віддаленому комп'ютері для клієнта (client_number) і записати результат в рядок (res_str)" ІНАКШЕ "Виконати команду (command_str) на локальному комп'ютері і записати результат в рядок (res_str)" КІНЕЦЬ ЯКЩО; "Підготувати текст результатів виконання команди (res_str) на основі (res_str)(command_str)"; "Повернути значення (res_str)" "disconnect (client_number)" ==== "Розірвати з'єднання з сервером для клієнта (client_number)"; "Видалити сесію для клієнта (client_number)"; КІНЕЦЬ СХЕМИ ISS_SERVICE1 Рис. 3. САА-схема Grid-сервісу ISS_Service1 Моделі та засоби паралельних і розподілених програм 9 Типова послідовність взаємодії про- грами-клієнта із Grid-сервісом є такою. На основі переданих користувачем даних про програму, яку необхідно запустити, про- грама-клієнт спочатку викликає метод Grid-сервіса connectToServer. Далі, у випадку успішного з’єднання із сервером (кластером), клієнт викликає метод executeProgram. Згаданий метод може бути виконаний необмежену кількість ра- зів. При цьому є можливість змінювати вхідні параметри виконуваної задачі, на- приклад, розмір оброблюваних даних, кі- лькість використовуваних процесів, назву розділу кластера тощо. Для завершення роботи із віддаленим сервером програма- клієнт викликає метод disconnect. Після конструювання наведеної вище САА-схеми Grid-сервісу в системі ІПС було виконано генерацію програмного коду сервісу, яка здійснювалася таким чи- ном. Спочатку на вхід генератора ІПС бу- ло передано файл, що містив каркасний опис (без реалізацій методів та даних) ос- новного класу сервісу, створеного за до- помогою програми Introduce. Далі в пара- метрах генерації ІПС було вказано співс- тавлення імен складених операторів САА- схеми з іменами методів сервісу. Далі ІПС виконала генерацію тексту даних та мето- дів на основі САА-схеми та автоматично підставила в каркас Grid-сервісу. Для реа- лізації мовою Java вищерозглянутих мето- дів сервісу було використано Java бібліо- теку JSch [15], призначену для програму- вання взаємодії з віддаленим сервером по SSH. 4. Приклад використання розробленого Grid-сервісу Як експеримент розглянуто у попе- редньому розділі Grid-сервіс було викори- стано для автоматизації запуску послідов- ної та паралельної програм з області ме- теорологічного прогнозування, що були розроблені в роботі [16]. Згадані програми призначені для вирішення задачі матема- тичного моделювання циркуляції атмос- фери. Мета експерименту полягала в тому, щоб отримати час виконання цих програм на різних розмірах оброблюваних даних та обчислити значення мультипроцесорного прискорення. Розглянемо стисло задачу, що розв’язується в згаданих програмах. Зада- ча подається за допомогою сукупності рів- нянь конвективної дифузії [16]          2 2 1 1 x u v x u v t u f x u xx u x                      2 2 21 1 1  , (1) при   ;, 21 xx ,  10;0t , СХЕМА ISS_SERVICE1_CLIENT ==== "Приклад алгоритму функціонування клієнта Грід-сервіса ISS_Service1" КІНЕЦЬ КОМЕНТАРІЮ "Основна схема" ==== "Зчитати вхідні параметри для запуску програми"; "res := connectToServer(hostName, userName, password, client_number)"; ЯКЩО 'З’єднання із сервером встановлено (res)' ТО ПОКИ НЕ 'Завершення роботи із сервером' "Зчитування введеної команди"; "res_text := executeProgram(workingDirectory, fileToExecute, cmdLineParameters, locally, forWindows, client_number)"; "Вивести текст (res_text)"; КІНЕЦЬ ЦИКЛУ "disconnect(client_number)" КІНЕЦЬ ЯКЩО Рис. 4. Приклад спрощеної САА-схеми клієнта Grid-сервісу ISS_Service1 Моделі та засоби паралельних і розподілених програм 10    2121 sin,,0 xxxxu  , при   21, xx , 0t , (2)    2121 ,,,, xxtuxxtu A , при   21, xx ,  10;0t , (3) де    ,1,01,0   ,sin kk xv    ,0sin*1.0001.0 2  kk x   21,, xxtf        2121 2sin2sin*1.01 xxvv      .sincos 212121 txxtxx   Тут  21,, xxtuu  – залежна функ- ція; t – час; 21, xx – координати;  – дво- вимірна просторова область визначення задачі;  21,, xxtff  – вільний член рів- няння; kv – коефіцієнт конвекції; k – кое- фіцієнт дифузії. Для розв’язання задачі (1)–(3) в програмах застосовується скінченно- різницевий чисельний метод, що детально розглянутий в [16, 17]. Аналітичний розв’язок цієї задачі має вигляд    txxxxtuA  2121 sin,, . Введемо позначення для координат xx 1 , yx 2 , яке буде використовувати- ся далі. Для вирішення задачі просторова область  розбивається на xS та yS рів- номірних кроків (вузлів) по осям x та y відповідно. Загальна кількість вузлів ста- новить yx SS  . Розпаралелювання обчис- лень для даної задачі ґрунтується на де- композиції області yx SS  на підмножи- ни та паралельному розв’язанні сукуп- ності підзадач, що визначені на цих під- множинах. Для розглянутої задачі в [16] було розроблено послідовну та паралельну програмні реалізації мовою С++ для ви- конання на CPU та GPU відповідно. Реа- лізація паралельної програми виконана із використанням технології CUDA [18], що дозволяє проводити обчислення на графі- чних прискорювачах NVIDIA. Розробле- ний у даній роботі Grid-сервіс було вико- ристано для запуску цієї паралельної про- грами на кластері Інституту кібернетики імені В.М. Глушкова НАН України [13]. Розрахунки проводились із використан- ням графічного прискорювача NVIDIA Tesla M2075 (448 обчислювальних ядер) та процесора Intel Xeon E5-2670. Для ви- конання паралельної програми програмі- клієнту були передані такі значення пара- метрів: hostName = icybcluster.org.ua locally = false workingDirectory = ~/helena/convdiff/Meteo_CUDA fileToExecute = sh run cmdLineParameters = scit4 128 128 Запуск паралельної програми здійс- нювався за допомогою скрипта run (ко- мандного файлу оболонки Bash), що роз- міщений в каталозі, вказаному у змінній workingDirectory. Скрипту run пере- даються три параметри командного рядка, значення яких вказуються у змінній cmdLineParameters. Перший параметр це назва розділу кластера, на якому необ- хідно виконати програму (у даному випад- ку – scit4). Другий та третій параметри скрипта – величини xS та yS відповідно. Значення xS та yS обиралися кратними 64, і такими, що yx SS  . Чисельні експе- рименти було виконано для значень розмі- ру задачі від 6464 yx SS до .20482048 yx SS На рис. 5 показана копія екрану програми-клієнта Grid-сервісу із парамет- рами запуску для задачі, що розглядається. У першому текстовому полі задається ім’я текстового файлу з описом задачі, у якому зберігаються параметри для запуску. У на- ступних трьох полях вказуються значення цих параметрів, зчитані з файлу: 1) назва робочого каталогу на клас- тері; 2) назва файлу скрипта; 3) значення параметрів командного рядка. Моделі та засоби паралельних і розподілених програм 11 У полі “Execution process” наведено результати виконання двох команд: 1) занесення задачі у чергу в ре- зультаті виконання скрипта run. У дано- му випадку задача була занесена у чергу під номером 30321; 2) перегляд файлу (slurm-30321.out) з текстом, який видає паралельна програма в результаті виконання. Цей текст включає значення параметрів xS та yS , величину похибки обчислень та час виконання в се- кундах. Інші результати розв’язання задачі зберігаються у додаткових файлах. Як уже згадувалося у розділі 3, Grid-сервіс також забезпечує виконання команд перегляду вмісту черги та відміни виконання завдань. Аналогічним чином також було здійснено запуск послідовної програми на кластері. У таблиці наведено отримані за допомогою Grid-сервісу значення часу ви- конання послідовної sT та паралельної pT програм у секундах при різних значеннях розміру задачі yx SS  , а також обчислене мультипроцесорне прискорення ps TT / . На рис. 6 показано діаграму залежності муль- типроцесорного прискорення від розміру задачі yx SS  . Менший рівень мультипроцесорно- го прискорення при невеликих значеннях xS та yS пояснюється неповною заванта- женістю відеокарти, через що не досяга- ється максимальна ефективність. Макси- мальне мультипроцесорне прискорення обчислень при 20482048 yx SS ста- новить 69 разів. Отже, розроблена Grid програма за- безпечує автоматизацію запуску та перег- ляду результатів виконання програм на віддаленому кластері. В подальшому до Grid-сервісу можуть бути додані функції автоматичної обробки отримуваних часо- вих та інших результатів виконання пара- лельних програм. Рис. 5. Вікно програми-клієнта Grid-сервісу із результатами тестового запуску задачі на мультипроцесорному кластері Моделі та засоби паралельних і розподілених програм 12 Таблиця. Час виконання послідовної sT та паралельної pT програм моделювання циркуляції атмосфери для різних значень yx SS  , а також значення мультипроцесорного прискорення ps TT / )( yx SS yx SS  sT , с pT , с ps TT / 64 4096 29,000 2,380 12,18 96 9216 53,620 3,240 16,55 128 16384 96,420 4,930 19,56 160 25600 147,960 5,850 25,29 192 36864 255,740 7,040 36,33 288 82944 484,720 12,550 38,62 352 123904 719,950 17,660 40,77 384 147456 850,420 19,840 42,86 416 173056 1040,750 22,580 46,09 480 230400 1344,380 28,020 47,98 544 295936 1709,290 32,970 51,84 640 409600 2400,180 44,270 54,22 768 589824 3439,40 57,93 59,37 1024 1048576 6271,48 93,50 67,07 2048 4194304 25138,65 363,45 69,17 Рис. 6. Залежність мультипроцесорного прискорення ps TT / від розміру задачі yx SS  для паралельної програми моделювання циркуляції атмосфери Моделі та засоби паралельних і розподілених програм 13 Висновки Запропоновано підхід до проекту- вання та генерації Grid-сервісів для плат- форми Globus Toolkit на основі застосу- вання алгеброалгоритмічного інструмен- тарію. Із використанням інструментарію розроблено алгоритми та виконано гене- рацію програмного коду Grid-сервісу, що виконує запуск паралельних програм на мультипроцесорному кластері. Особливі- стю інструментарію є застосування мето- ду конструювання синтаксично правиль- них програм, який виключає можливість появи синтаксичних помилок у процесі проектування алгоритмів. Іншою особли- вістю системи є проектування програм із використанням мовних конструкцій, бли- зьких до природної мови. Створену Grid- програму застосовано для автоматизації запуску та перегляду результатів вико- нання паралельної програми з області ме- теорологічного прогнозування на відео- графічному прискорювачі, що входить до складу кластера. Перспективи виконаної роботи полягають в подальшому розвитку розробленого Grid-сервісу. Розвиток може включати розробку програмних засобів автоматичної обробки результатів вико- нання паралельних програм за допомогою сервісу. 1. Jacob B., Brown M., Fukui K., Trivedi N. Introduction to Grid Computing [Електрон- ний ресурс]. – Режим доступу: http://www. redbooks.ibm.com/redbooks/pdfs/sg246778.p df. – 20.03.2014 р. 2. Globus Toolkit [Електронний ресурс]. – Ре- жим доступу: http://www.globus.org. – 20.03.2014 р. 3. Introduce [Електронний ресурс]. – Режим доступу: http://dev.globus.org/wiki/ Incubator/Introduce. – 20.03.2014 р. 4. Hastings S., Oster S., Langella S., Ervin D., Kurc T., Saltz J. Introduce: An Open Source Toolkit for Rapid Development of Strongly Typed Grid Services // Journal of Grid Computing. – 2007. – Vol. 5, N 4. – P. 407–427. 5. GSBT – Globus Service Build Tools [Елект- ронний ресурс]. – Режим доступу: http:// sourceforge.net/projects/gsbt/ – 20.03.2014 р. 6. Eclipse – The Eclipse Foundation open source community website [Електронний ресурс]. – Режим доступу: http://www.eclipse.org. – 20.03.2014 р. 7. Smith M., Friese T., Freisleben B. Model driven development of service oriented Grid applications // Proc. of the Advanced International Conference on Telecommunications and International Conference on Internet and Web Applications and Services (AICT-ICIW‘06), 2006. – P. 139–146. 8. Friese, T., Smith M., Freisleben B. Grid development tools for Eclipse // Proc. of the Eclipse Technology eXchange work-shop (eTX) at ECOOP 2006, Nantes, France, 2006. 9. Mizuta S., Huang R. Automation of Grid service code generation with AndroMDA for GT3 // Proc. of the 19th International Conference on Advanced Information Networking and Applications (AINA’05), 2005. – P. 417– 420. 10. Дорошенко А.Е., Яценко Е.А. Средства сервисно-ориентированного програ- ммирования параллельных программ // Проблеми програмування. – 2009. – № 2. – С. 12–21. 11. Андон Ф.И., Дорошенко А.Е., Цейт- лин Г.Е., Яценко Е.А. Алгеброалгоритмиче- ские модели и методы параллельного про- граммирования. – Киев: Академпериодика, 2007. – 631 с. 12. Яценко Е.А. Интеграция инструменталь- ных средств алгебры алгоритмов и пере- писывания термов для разработки эффек- тивных параллельных программ // Про- блеми програмування. – 2013. – № 2. – С. 62–70. 13. Суперкомп’ютер Інституту кібернетики НАН України [Електронний ресурс]. – Ре- жим доступу: http://icybcluster.org.ua. – 20.03.2014 р. 14. Slurm Workload Manager [Електронний ре- сурс]. – Режим доступу: http://www. schedmd.com/slurmdocs/ – 20.03.2014 р. 15. JSch – Java Secure Channel – JCraft [Елект- ронний ресурс]. – Режим доступу: http://www.jcraft.com/jsch/ – 20.03.2014 р. 16. Прусов В.А., Дорошенко А.Ю., Кацало- ва Л.М., Бекетов О.Г. Паралельні методи розв’язання двовимірної задачі конвектив- ної дифузії // Вісник Київського націона- льного університету імені Тараса Шевчен- ка. – 2013. – № 4. 17. Прусов В.А., Дорошенко А.Е., Черныш Р.И. Метод численного решения многомерной http://dev.globus.org/wiki/%20Incubator/Introduce http://dev.globus.org/wiki/%20Incubator/Introduce http://icybcluster.org.ua/ http://www.schedmd.com/slurmdocs/ http://www.schedmd.com/slurmdocs/ http://www.jcraft.com/jsch/ Моделі та засоби паралельних і розподілених програм 14 задачи конвективной диффузии // Кибер- нетика и системный анализ. – 2009. – № 1. – С. 100–107. 18. nVidia’s CUDA – NVIDIA Developer Zone [Електронний ресурс]. – Режим доступу: https://developer.nvidia.com/category/zone/ cuda-zone – 20.03.2014 р. Одержано 25.03.2014 Про авторів: Дорошенко Анатолій Юхимович, доктор фізико-математичних наук, професор, завідувач відділу теорії комп’ютерних обчислень Інституту програмних систем НАН України, Бекетов Олексій Геннадійович, аспірант, Яценко Олена Анатоліївна, кандидат фізико-математичних наук, старший науковий співробітник, Вітряк Євген Андрійович, магістрант Національного технічного університету України «КПІ», Павлючин Тарас Олександрович, магістрант Національного технічного університету України «КПІ». Місце роботи авторів: Інститут програмних систем НАН України. Тел.: (044) 526 3559. E-mail: dor@isofts.kiev.ua beketov.oleksii@gmail.com oayat@ukr.net pavlyuchin@ukr.net mailto:dor@isofts.kiev.ua mailto:oayat@ukr.net https://e.mail.ru/compose/?mailto=mailto%3apavlyuchin@ukr.net