Средства сервисно-ориентированного программирования параллельных программ

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

Повний опис

Збережено в:
Бібліографічні деталі
Дата:2009
Автори: Дорошенко, А.Е., Яценко, Е.А.
Формат: Стаття
Мова:Russian
Опубліковано: Інститут програмних систем НАН України 2009
Теми:
Онлайн доступ:http://dspace.nbuv.gov.ua/handle/123456789/4411
Теги: Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
Назва журналу:Digital Library of Periodicals of National Academy of Sciences of Ukraine
Цитувати:Cредства сервисно-ориентированного программирования параллельных программ / А.Е. Дорошенко, Е.А. Яценко// Пробл. програмув. — 2009. — № 2. — С. 12-21. — Бібліогр.: 11 назв. — рос.

Репозитарії

Digital Library of Periodicals of National Academy of Sciences of Ukraine
id irk-123456789-4411
record_format dspace
spelling irk-123456789-44112010-10-07T15:44:02Z Средства сервисно-ориентированного программирования параллельных программ Дорошенко, А.Е. Яценко, Е.А. Моделі та засоби паралельних і розподілених програм Предложен подход к проектированию и генерации Грид-сервисов для платформы Globus Toolkit на основе использования разработан-ного алгеброалгоритмического интегрирован-ного инструментария. Особенностью разраба-тываемой авторами системы является приме-нение высокоуровневых спецификаций сервисно-ориентированных программ, не зависящих от реализации на конкретном языке програм-мирования, а также использование метода диалогового конструирования синтаксически правильных программ. Подход проиллюстрирован на примере разработки Грид-сервиса, осуществляющего параллельную распределенную сортировку массивов. Проведен эксперимент по выполнению разработанной сервисно-ориентированной программы на локальном кластере.------------ An approach to designing and generating of Grid services for Globus Toolkit platform using alge-bra-algorithmic integrated tools is proposed. The particular features of the system developed by the authors is application of high-level specifications of service-oriented programs, which do not de-pend on implementation in a specific program-ming language, and also using the method of dia-logue constructing of syntactically correct programs. The application of the approach is illustrated with an example of developing the Grid service implementing parallel distributed array sorting. The experiment of execution of the developed service-oriented program on a local cluster is carried out. 2009 Article Cредства сервисно-ориентированного программирования параллельных программ / А.Е. Дорошенко, Е.А. Яценко// Пробл. програмув. — 2009. — № 2. — С. 12-21. — Бібліогр.: 11 назв. — рос. 1727-4907 http://dspace.nbuv.gov.ua/handle/123456789/4411 681.3 ru Інститут програмних систем НАН України
institution Digital Library of Periodicals of National Academy of Sciences of Ukraine
collection DSpace DC
language Russian
topic Моделі та засоби паралельних і розподілених програм
Моделі та засоби паралельних і розподілених програм
spellingShingle Моделі та засоби паралельних і розподілених програм
Моделі та засоби паралельних і розподілених програм
Дорошенко, А.Е.
Яценко, Е.А.
Средства сервисно-ориентированного программирования параллельных программ
description Предложен подход к проектированию и генерации Грид-сервисов для платформы Globus Toolkit на основе использования разработан-ного алгеброалгоритмического интегрирован-ного инструментария. Особенностью разраба-тываемой авторами системы является приме-нение высокоуровневых спецификаций сервисно-ориентированных программ, не зависящих от реализации на конкретном языке програм-мирования, а также использование метода диалогового конструирования синтаксически правильных программ. Подход проиллюстрирован на примере разработки Грид-сервиса, осуществляющего параллельную распределенную сортировку массивов. Проведен эксперимент по выполнению разработанной сервисно-ориентированной программы на локальном кластере.------------
format Article
author Дорошенко, А.Е.
Яценко, Е.А.
author_facet Дорошенко, А.Е.
Яценко, Е.А.
author_sort Дорошенко, А.Е.
title Средства сервисно-ориентированного программирования параллельных программ
title_short Средства сервисно-ориентированного программирования параллельных программ
title_full Средства сервисно-ориентированного программирования параллельных программ
title_fullStr Средства сервисно-ориентированного программирования параллельных программ
title_full_unstemmed Средства сервисно-ориентированного программирования параллельных программ
title_sort средства сервисно-ориентированного программирования параллельных программ
publisher Інститут програмних систем НАН України
publishDate 2009
topic_facet Моделі та засоби паралельних і розподілених програм
url http://dspace.nbuv.gov.ua/handle/123456789/4411
citation_txt Cредства сервисно-ориентированного программирования параллельных программ / А.Е. Дорошенко, Е.А. Яценко// Пробл. програмув. — 2009. — № 2. — С. 12-21. — Бібліогр.: 11 назв. — рос.
work_keys_str_mv AT dorošenkoae sredstvaservisnoorientirovannogoprogrammirovaniâparallelʹnyhprogramm
AT âcenkoea sredstvaservisnoorientirovannogoprogrammirovaniâparallelʹnyhprogramm
first_indexed 2025-07-02T07:39:46Z
last_indexed 2025-07-02T07:39:46Z
_version_ 1836520032787496960
fulltext Інструментальні засоби і середовища програмування 12 УДК 681.3 А.Е. Дорошенко, Е.А. Яценко СРЕДСТВА СЕРВИСНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ ПАРАЛЛЕЛЬНЫХ ПРОГРАММ Предложен подход к проектированию и генерации Грид-сервисов для платформы Globus Toolkit на ос- нове использования разработанного алгеброалгоритмического интегрированного инструментария. Особенностью разрабатываемой авторами системы является применение высокоуровневых специфика- ций сервисно-ориентированных программ, не зависящих от реализации на конкретном языке програм- мирования, а также использование метода диалогового конструирования синтаксически правильных программ. Подход проиллюстрирован на примере разработки Грид-сервиса, осуществляющего парал- лельную распределенную сортировку массивов. Проведен эксперимент по выполнению разработанной сервисно-ориентированной программы на локальном кластере. Введение За последнее десятилетие значи- тельно возрос интерес к Грид вычислени- ям как способу предоставления приклад- ным разработчикам возможности соеди- нять разрозненные ресурсы для решения крупномасштабных научных проблем [1]. С возрастанием сложности и динамично- сти Грид приложений использование про- граммных средств для их разработки ста- новится существенным при настройке па- раметров приложений или обнаружении дефектов программы. Одной из наиболее популярных Грид платформ является сер- висно-ориентированная платформа Globus Toolkit [2]. Globus обеспечивает про- граммную инфраструктуру, которая дает возможность приложениям работать с рас- пределенными разнородными вычисли- тельными ресурсами как с единой вирту- альной машиной. Для упомянутой плат- формы существует инструментарий Intro- duce [3], позволяющий упростить разра- ботку и развертывание Грид-сервисов за- счет сокрытия низкоуровневых деталей Globus Toolkit. Introduce предоставляет пользователю графический интерфейс для создания сервисов, а также добавления ме- тодов, ресурсов, свойств и ограничений безопасности. Разработчику затем необхо- димо реализовать логику методов, не бес- покоясь об архитектурных аспектах Грид- сервиса, генерации кода клиента или сер- вера, а также синхронизации всех необхо- димых файлов. Однако, написание кода методов по прежнему является достаточно сложной задачей. Целью данной работы является автоматизация разработки алго- ритмов, представляющих логику выполне- ния сервисов и программ-клиентов, а так- же генерация соответствующего кода в языке программирования. Данная автома- тизация осуществляется с помощью разра- ботанного Интегрированного инструмен- тария Проектирования и Синтеза про- грамм (“ИПС”) [4]. “ ИПС” предназначен для интерактивного конструирования ал- горитмов с использованием высокоуров- невых алгебраических спецификаций (сис- тем алгоритмических алгебр Глушкова) и генерации программ на целевом языке программирования (C, C++, Java). В пре- дыдущих работах упомянутый инструмен- тарий был использован для разработки многопоточных программ с общей памя- тью [5] и параллельных программ, ориен- тированных на передачу сообщений (MPI) [6]. В данной работе была произведена на- стройка “ИПС” на разработку сервисно- ориентированных программ для Грид. Материал работы состоит из таких разделов. В разделе 1 охарактеризован Globus Toolkit и система автоматизации разработки Грид-сервисов Introduce. В разделе 2 рассматривается разработанный интегрированный инструментарий, приме- няемый для проектирования и генерации сервисов, а также используемые совместно с инструментарием онтологические сред- ства. В разделе 3 приведен пример Грид- сервиса, разработанного с использованием Introduce и “ИПС”. © А.Е. Дорошенко, Е.А. Яценко, 2009 ISSN 1727-4907. Проблеми програмування. 2009. № 2 Інструментальні засоби і середовища програмування 13 1. Globus Toolkit и Introduce Вычислительная сеть, построенная на основе Globus является программно- аппаратной инфраструктурой, которая обеспечивает надежный, непротиворечи- вый и проникающий доступ к предельным вычислительным возможностям систем, несмотря на географическое размещение ресурсов и их потребителей [7]. Централь- ным элементом системы Globus является инструментарий Globus Toolkit, который определяет основные сервисы и возмож- ности, требующиеся для создания Grid. Инструментарий состоит из набора компо- нентов, реализующих базовые сервисы, такие, как защита, размещение ресурса, управление ресурсами и связь. Инструментарий Globus Toolkit обеспечивает набор сервисов, которые разработчики инструментальных средств или приложений могут использовать для их специфических нужд. Он создан как слоистая архитектура, в которой сервисы верхнего глобального уровня смонтирова- ны на уже существующих низкоуровневых локальных сервисах ядра. Инструментарий является модульным и приложение может использовать функции Globus без библио- теки обменов. Инструментарий Globus со- стоит из следующих функций (точный на- бор зависит от версии): • основанный на протоколе HTTP администратор распределения ресурсов GRAM − используется для распределения вычислительных ресурсов, контроля и управления вычислением на этих ресурсах; • расширенная версия протокола передачи файлов GridFTP − применяется для доступа к данным; расширения вклю- чают использование протоколов защиты уровня связности, частичного доступа к файлу и управления параллелизмом для высокоскоростных передач; • аутентификация и связанные с ней сервисы безопасности GSI (Grid Security Infrastructure); • распределенный доступ к инфор- мации о структуре и состоянии, который основан на протоколе облегченного досту- па к каталогам LDAP (Lightweight Directory Access Protocol); этот сервис ис- пользуется для определения стандартного протокола информации о ресурсе и свя- занной с ним информационной модели; • удаленный доступ к данным через последовательный и параллельный интер- фейсы GASS (Global Access to Secondary Storage), включая интерфейс к GridFTP; • построение, кэширование и раз- мещение выполнимых программ GEM (Globus Executable Management); • резервирование и распределение ресурсов GARA (Globus Advanced Reserva- tion and Allocation). Инструментарий Introduce [3] пред- назначен для поддержки трех основных этапов разработки Грид-сервисов для Globus: 1) создание базисной структуры сервиса. Разработчик сервиса описывает на верхнем уровне основные свойства сер- виса, такие как имя и пространство имен. После того как пользователь указал упо- мянутые основные свойства, Introduce соз- дает базисную реализацию сервиса, к ко- торой пользователь может затем добавлять методы и опции безопасности на этапе из- менения сервиса; 2) модификация сервиса. Этап мо- дификации позволяет разработчику добав- лять, удалять и изменять методы и свойст- ва сервиса, ресурсы, контексты сервиса, и безопасность на уровне сервиса или мето- дов. На этом шаге разработчик может соз- дать строго-типизированный интерфейс сервиса, определяя входные и выходные параметры методов сервиса. После того как операции были добавлены к сервису, разработчик может добавлять логику, реа- лизующую методы; 3) развертывание. Разработчик мо- жет развернуть сервис, который был соз- дан с помощью Introduce в контейнер Грид сервисов (например, контейнер сервисов Globus или Tomcat). Для выполнения перечисленных трех шагов разработчик сервиса использу- ет графическую среду Introduce (рис. 1). По описанию сервиса Introduce генерирует каркас сервиса и соответствующей про- граммы-клиента, которые разработчику необходимо заполнить кодом реализации. Інструментальні засоби і середовища програмування 14 2. Инструментарий “ИПС” и онтологические средства проектирования программ В работах [4–6] разработан инстру- ментарий “ИПС”, позволяющий автомати- зировать проектирование и генерацию программ по формализованным специфи- кациям в САА. В данной работе он был применен для конструирования сервисно- ориентированных программ. А именно, он используется для конструирования алго- ритмов методов Грид-сервисов и соответ- ствующих программ-клиентов, а также ге- нерации соответствующего текста на язы- ке программирования с заполнением кар- касного кода, созданного с помощью про- граммы Introduce (см. раздел 1). Основным компонентом инстру- ментария является ДСП-конструктор (рис. 2) – диалоговый конструктор синтак- сически правильных программ. Он позво- ляет проектировать алгоритмы в диалого- вом режиме, выбирая из списка заранее за- готовленные конструкции (операции САА, базисные операторы и условия). “ИПС” использует различные формы представле- ния алгоритмов в процессе их проектиро- вания – естественно-лингвистическую (САА-схемы), алгебраическую (регуляр- ные схемы) и граф-схемную. Процесс про- ектирования алгоритмов является по уров- невым (осуществляется сверху-вниз) и представлен в виде дерева конструирова- ния (рис. 2). Выбираемые пользователем конструкции, а также переменные, входя- щие в них, отображаются в дереве с даль- нейшей детализацией переменных. В зави- симости от типа выбранной переменной (операторной или логической) система предлагает соответствующий список опе- раций САА или базисных понятий. Дерево для каждой из функций схемы алгоритма (методов сервиса) приводится на отдель- ной вкладке окна “Дерево алгоритма”. Текст САА-схемы, соответствующий де- реву конструирования, отображается в от- дельном текстовом окне. По полученной в процессе конст- руирования схеме, а также реализациями элементарных операторов и условий на целевом объектно-ориентированном языке программирования, которые хранятся в БД “ИПС”, ДСП конструктор выполняет син- тез программы. На вход синтезатора по- ступает также файл, который содержит каркасное описание основного класса про- Рис. 1. Окно системы Introduce с описанием функций Грид-сервиса Інструментальні засоби і середовища програмування 15 граммы (без реализаций методов), в который выполняется подстановка кода. Такой файл может быть, например, сгене- рирован на основе диаграммы классов в системе Rational Rose [8]. В случае сервис- но-ориентированной программы для Globus Toolkit для генерации каркасного кода используется инструментарий Introduce. Способ подстановки сгенериро- ванного кода для методов (функций) в каркасный файл указывается в параметрах генерации. В работе [9] для проектирования программ совместно с интегрированным инструментарием был использован аппа- рат онтологий. В рамках разработанной методологии с помощью онтологии пред- метной области описывается каркас разра- батываемого алгоритма – обрабатываемые данные; названия функций, их входные и выходные параметры, а также взаимосвязи между функциями. В качестве средства разработки онтологии была выбрана сис- тема Protégé. Созданная в Protégé онтоло- гия передается в инструментарий “ИПС”, в котором осуществляется генерация соот- ветствующей каркасной схемы алгоритма, а также конструирование реализаций функций алгоритма. Упомянутые средства были использованы для проектирования MPI программы сортировки. В данной работе приведенная в [9] онтология была дополнена новым классом GRID_PROGRAM и двумя его подкласса- ми – GridService и GridServiceClient. На рис. 3 приведен сокращенный вид моди- фицированной онтологии. Класс Data представляет различные структуры дан- ных, используемые в Грид программах. Класс Operation отображает операции, применяемые к данным в программе – операторы и предикаты. Операции могут быть базисными или составными. Онтоло- гия также содержит класс PROGRAM для описания произвольных программ, кото- рые могут использоваться Грид-сервисами, например, MPI программ. Свойства клас- сов Data, Operation и PROGRAM, а также метод генерации каркасного алгоритма по онтологии подробно рассмотрены в [9]. Рис. 2. Окно ДСП-конструктора с примером сервиса Інструментальні засоби і середовища програмування 16 Свойствами класса GridService яв- ляются его название, комментарий, ис- пользуемые ресурсы и совокупность мето- дов: stringeGridServicComment stringeGridServicHasName 1:1 1:1 : : → → erationCompoundOp eGridServicHasMethod DataeGridServiceHasRеsourc n n :1 :1 : : → → Свойствами класса GridServiceCli- ent являются следующие: erationCompoundOp eClientGridServicHasMethod DataeClientGridServicUsesData eGridServic eClientGridServicIsClientOf stringeClientGridServicComment stringeClientGridServicHasName n n :1 :1 1:1 1:1 1:1 : : : : : → → → → → 3. Пример сервиса, разработанного с использованием “ИПС” Рассмотрим Грид-сервис, предна- значенный для сортировки массивов, а также соответствующую ему программу- клиент, спроектированные с использова- нием “ИПС”. Грид-сервис SortService вы- полняет параллельную сортировку пере- данного ему программой-клиентом чис- ленного массива. Для упорядочения мас- сива сервис вызывает параллельную MPI программу адресной сортировки. САА- схема данной сортировки разработана и приведена в работе [9]. По окончании сор- тировки сервис возвращает упорядочен- ный массив клиенту. Рассмотрим структуру Грид- сервиса. Он включает в себя три метода: • sendInputArray(String inputArray) – функция, выполняющая запись переданно- го ей массива inputArray в файл для после- дующей сортировки MPI программой; массив передается в виде текстовой строки (String). Метод возвращает истинное зна- чение, если запись в файл была произведе- на успешно, и ложное в противном случае; • executeAdrSortMPI(int procQuanti- ty) – функция, выполняющая запуск MPI программы адресной сортировки с количе- ством процессов procQuantity. Запуск про- изводится на той же машине, где распо- Рис. 3. Онтология, описывающая концепции для проектирования Грид программ Інструментальні засоби і середовища програмування 17 ложен Грид-сервис. Метод возвращает ис- тинное значение, если MPI программа вы- полнилась успешно, и ложное в противном случае; • getOutArray() – функция, возвра- щающая отсортированный массив в виде текстовой строки. Массив считывается из файла, записанного MPI программой сор- тировки. Каркас программного кода на языке Java для Грид-сервиса SortService был сге- нерирован с помощью программы Introduce. Дальнейшее проектирование ал- горитмов методов (в языке САА) и генера- ция соответствующего кода выполнена в инструментарии “ИПС”. В процессе проектирования Грид- сервиса совместно с “ИПС” также были использованы онтологические средства, описанные в разделе 1. В табл. 1 приведе- ны значения свойств для экземпляра Грид- сервиса SortService, определенного в онто- логии. В табл. 2 приведен пример онтоло- гического описания метода sendInputArray. Аналогичным образом определяются также методы executeAdrSortMPI и getOutArray. По онтологическому описанию рассматриваемого Грид-сервиса и его ме- тодов в инструментарии “ИПС” была сге- нерирована следующая каркасная САА- схема: СХЕМА SORTSERVICE ==== "Sorting Grid Service" КОНЕЦ КОММЕНТАРИЯ "sendInputArray (String inputArray)" ==== " Записать массив (array) в файл (file)" "executeAdrSortMPI (int procQuantity)" ==== " Выполнить команду (executable_file) с параметрами (parameters_string)" "getOutArray()" ==== " Прочитать массив (array) из файла (file)" КОНЕЦ СХЕМЫ SORTSERVICE Каждый метод в приведенной схеме содержит вызов оператора в соответствии с его онтологическим описанием. Напри- мер, схема оператора sendInputArray содержит вызов базисного оператора запи- си массива в файл в соответствии со зна- чением свойства UsesOperation, приведен- ным в табл. 2. Далее в ДСП-конструкторе необходимо продолжить проектирование Грид-сервиса на основе сгенерированной каркасной схемы. В данном случае необ- ходимо установить параметры базисных элементов и сконструировать алгоритмы функционирования методов, используя присутствующие в схеме вызовы опера- ций, а также выбирая другие операции из списка в ДСП-конструкторе. Далее представлена полная детали- зация САА-схемы Грид-сервиса, постро- енная в ДСП-конструкторе интегрирован- ного инструментария (рис. 2). В схеме на- звания методов с описанием формальных параметров отделены от реализации мето- дов цепочками символов “====”. Текст ба- зисных и составных операторов взят в двойные кавычки. СХЕМА SORTSERVICE ==== "Sorting Grid Service" КОНЕЦ КОММЕНТАРИЯ "sendInputArray(String inpu- tArray)" ==== " Определить переменную (send_result) тип (boolean)" ЗАТЕМ (send_result := " Записать массив (inputArray) в файл ("C:\\Programs\\mpi\\ sort_in.txt")") ЗАТЕМ " Возвратить значение (send_result)" "executeAdrSortMPI(int proc- Quantity)" ==== " Определить переменную (execution_result) тип (boolean)" ЗАТЕМ (execution_result := Інструментальні засоби і середовища програмування 18 " Выполнить команду (C:\\Programs\\mpi\\ exeadrsort.bat) с параметрами (procQuantity)") ЗАТЕМ " Возвратить значение (execution_result)" "getOutArray()" ==== " Определить переменную (arrayText) тип (String)" ЗАТЕМ " Прочитать массив (arrayText) из файла ("C:\\Programs\\mpi\\ sort_out.txt")" ЗАТЕМ " Возвратить значение (arrayText)" КОНЕЦ СХЕМЫ SORTSERVICE В методе executeAdrSortMPI для за- пуска MPI программы сортировки исполь- зуется базисный оператор " Выполнить команду (C:\\Programs\\mpi\\ exeadrsort.bat) с параметрами (procQuantity)" Таким образом, запуск программы сортировки производится из командного файла (exeadrsort.bat), содержащего вызов команды mpirun [10] с двумя параметра- ми – количеством параллельных процессов и названием исполняемого файла (MPI программы). Отметим, что для реализации на языке Java вышеприведенного базисно- го оператора использован метод exec клас- са Runtime [11], который создает отдель- ный процесс для выполнения команды (на локальной машине). Для ожидания завер- шения программы использован метод waitFor класса Process [11]. Рассмотрим далее сокращенную схему программы-клиента для приведен- ного Грид-сервиса. СХЕМА SORTSERVICECLIENT ==== "Client of Grid service SortService" КОНЕЦ КОММЕНТАРИЯ "GlobalData" ==== " Определить переменную (client) типа (SortServiceClient)"; " Определить переменную (inputFile) типа (String)"; " Определить переменную (numberOfProcesses) типа (int)"; " Определить переменную (outputFile) типа (String)" "runProgram" ==== ЛОКАЛЬНЫЕ_ПЕРЕМЕННЫЕ ( " Определить переменную (res) типа (boolean)"; Таблица 1. Значения онтологических свойств Грид-сервиса SortService Свойство Значение HasName SortService Comment Sorting Grid Service HasResource – HasMethod • sendInputArray • executeAdrSortMPI • getOutArray Таблица 2. Значения онтологических свойств метода sendInputArray Свойство Значение HasName sendInputArray Comment Receives array from client HasParameter inputArray OperationOutput boolean UsesOperation Write_array_to_file Інструментальні засоби і середовища програмування 19 " Определить переменную (arrayText) типа (String)" ) " Прочитать массив (arrayText) из файла (inputFile)" ЗАТЕМ ЕСЛИ НЕ(' Значение (arrayText) пусто') ТО (res := "sendInputArray(arrayText)") ЗАТЕМ ЕСЛИ ' Значение (res) истинно' ТО (res := "executeAdrSortMPI (numberOfProcesses)") ЗАТЕМ ЕСЛИ ' Значение (res) истинно' ТО (arrayText := "getOutArray") ЗАТЕМ ЕСЛИ НЕ(' Значение (arrayText) пусто') ТО (res := " Записать массив (arrayText) в файл (outputFile)") КОНЕЦ ЕСЛИ КОНЕЦ ЕСЛИ КОНЕЦ ЕСЛИ КОНЕЦ ЕСЛИ КОНЕЦ СХЕМЫ ORTSERVICECLIENT Входными параметрами программы SortServiceClient являются имя входного файла (содержащего массив, который не- обходимо отсортировать), количество па- раллельных процессов и имя выходного файла. Взаимодействие клиента с серви- сом отображено в функции runProgram() и является следующим. Вначале программа- клиент считывает массив из входного фай- ла и пересылает массив сервису с помо- щью метода sendInputArray (описание дан- ного метода приведено выше). Затем SortServiceClient вызывает функцию executeAdrSortMPI, в результате чего сер- вис запускает MPI программу сортировки. По окончании выполнения MPI програм- мы клиент вызывает метод getOutArray для получения отсортированного массива, ко- торый затем записывает в выходной файл. Грид-сервис SortService был выпол- нен на локальном кластере, состоящем из двух компьютеров: • AMD Athlon 64 Processor 3000+, 1.81 GHz, 1,00 GB RAM; • Intel Pentium D CPU 3.4 GHz, 1,00 GB RAM (2-ядерный). Результаты выполнения приведены на рис. 4 и в табл. 3, и показывают хоро- шую степень распараллеливаемости вы- числений. При запуске трех процессов учитывался тот факт, что процессор Intel Pentium D является 2-ядерным. 0 , 0 0 1 0 , 0 0 2 0 , 0 0 3 0 , 0 0 4 0 , 0 0 5 0 , 0 0 6 0 , 0 0 7 0 , 0 0 8 0 , 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4 0 0 0 0 5 0 0 0 0 6 0 0 0 0 7 0 0 0 0 Р а з м е р м а сс и в а В р е м я в ы п о л н е н и я , с е к 1 п р о ц е с с 2 п р о ц е с с а 3 п р о ц е с с а Рис . 4. Зависимость времени выполнения функции executeA drSortM PI Грид -сервиса SortService от размера входного массива Інструментальні засоби і середовища програмування 20 Заключение В работе предложен подход к про- ектированию и генерации Грид-сервисов для платформы Globus Toolkit на основе использования системы Introduce, алгебро- алгоритмического инструментария “ИПС”, а также онтологических средств. Преиму- ществом разрабатываемой авторами сис- темы “ИПС” является применение высоко- уровневых спецификаций сервисно- ориентированных программ, не зависящих от реализации на конкретном языке про- граммирования, а также использование метода диалогового конструирования син- таксически правильных программ. Подход апробирован на разработке Грид-сервиса, осуществляющего параллельную распре- деленную сортировку массивов (на основе вызова MPI программы). Проведен экспе- римент по выполнению разработанной сервисно-ориентированной программы на локальном кластере, который показал хо- рошую степень распараллеливаемости и масштабируемости вычислений. К перспективам дальнейшего раз- вития разрабатываемых инструментальных средств является их применение для раз- работки сервисов, выполняющих вычисле- ния на гетерогенном кластере. 1. Prodan R., Fahringer T. Grid Computing Ex- periment Management, Tool Integration, and ScientificWorkflows. – Springer-Verlag, Ber- lin, Heidelberg, 2007. – 317 p. 2. Globus Toolkit Site. – http://www. globus.org 3. Introduce Main Project Site. – http://www.cagrid.org/mwiki/index.php?title= Introduce. 4. Андон Ф.И., Дорошенко А.Е., Цейтлин Г.Е., Яценко Е.А. Алгеброалгоритмические мо- дели и методы параллельного программи- рования. – Киев: Академпериодика, 2007. – 631 с. 5. Дорошенко А.Е., Жереб К.А., Яценко Е.А. Об оценке сложности и координации вы- числений в многопоточных программах // Проблемы программирования. – 2007. – № 2. – С. 41–55. 6. Дорошенко А.Е., Жереб К.А., Яценко Е.А. Средства синтеза параллельных MPI про- грамм // Проблемы программирования. – 2008. – № 2–3. – С. 595–604. 7. Дорошенко А.Е., Алистратов О.В., Тыр- чак Ю.М. и др. Системы Grid-вычислений – перспектива для научных исследований // Проблемы программирования. – 2005. – № 1. – С. 14–38. 8. Кватрани Т. Rational Rose 2000 и UML. Визуальное моделирование: Пер. с англ. – М.: ДМК, 2001. – 176 с. 9. Дорошенко А.Е., Яценко Е.А. Средства ав- томатизации разработки параллельных программ на основе онтологий и алгебр алгоритмов // Проблемы программирова- ния. – 2008. – № 4. – С. 94–103. 10. MPICH site. – www.mcs.anl.gov/mpi/mpich/ 11. Холл М., Браун Л. Программирование для Web. Библиотека профессионала: Пер. с англ. – М.: Вильямс, 2002. – 1264 с. Получено 16.03.2009 Таблица 3. Время выполнения функции executeAdrSortMPI Грид-сервиса SortService, которая вызывает MPI программу адресной сортировки Время tn выполнения функции при использовании n процессов, сек Размер массива t1 t2 t3 Ускорение, t1/t2 Ускорение, t1/t3 10000 1,98 1,52 1,23 1,31 1,61 20000 7,77 4,43 3,21 1,76 2,42 30000 17,39 9,22 6,46 1,89 2,69 40000 30,69 15,98 10,92 1,92 2,81 50000 48,13 24,72 16,80 1,95 2,87 60000 68,61 35,04 23,66 1,96 2,90 Інструментальні засоби і середовища програмування 21 Об авторах: Дорошенко Анатолий Ефимович, доктор физико-математических наук, профессор, заведующий отделом теории компьютерных вычислений, Яценко Елена Анатольевна, кандидат физико-математических наук, старший научный сотрудник. Место работы авторов: Институт программных систем НАН Украины. Тел.: (044) 526 1538, e-mail: dor@isofts.kiev.ua, aiyat@i.com.ua