Просмотр исходного текста страницы Язык описания композитных приложений EASYFLOW
Перейти к:
навигация
,
поиск
Специализированный язык EasyFlow позволяет упростить процедуру задания композитных приложений в VLUC. Он предоставляет конечному пользователю гибкие возможности по заданию различных форм WF, в рамках которых выполняются разные прикладные пакеты, происходят генерация выходных данных, их получение, конвертация и обработка. Характерной чертой языка является полное абстрагирование от особенностей распределенной вычислительной среды, в которой работает пользователь. Фактически EasyFlow – это высокоуровневый язык описания AWF. Такой подход позволяет описывать саму решаемую задачу, а не способ ее исполнения на конкретной вычислительной архитектуре. На рис. приведен пример описания простого AWF, представляющего собой скрипт. Тело скрипта состоит из описания вызовов прикладных пакетов – шагов, которые задаются с помощью директивы step и представляют собой узлы графа WF. Для описания каждого шага необходимо задать его имя (в примере это Step1, Step2, Step3), название запускаемого пакета (EmptyPackage, Package1 и Package2) и перечень предметных параметров этого пакета. <!--[if !vml]--> <!--[endif]--> http://upload.wikimedia.org/wikipedia/commons/b/bd/Easyflow.jpg Язык EasyFlow позволяет задавать параметры для следующих типов данных: целое число, строка, число с плавающей точкой, список, структура, указание на использование файла (см. описание шага Step3). Большинство прикладных пакетов помимо параметров принимает и генерирует входные и выходные файлы, поэтому в EasyFlow предусмотрена поддержка работы с файлами. Их задание в скрипте представляет собой лишь абстрактное указание с помощью директивы require, что освобождает пользователя от необходимости указания абсолютных путей к файлам. В этой директиве через запятую перечислены файловые переменные, которые могут быть указаны в качестве значений параметров при описании шага (см. параметры inFile1 и inFile2 в описании шага Step2). В рамках одного скрипта директива требования файлов может появляться неограниченное число раз. Так как WF представляет собой ориентированный граф, в EasyFlow введены механизмы определения порядка выполнения шагов, позволяющие организовать его структуру: зависимости по управлению и зависимости по данным. Зависимости по управлению представляют собой явные указания на то, что один шаг должен начать свое исполнение после завершения другого. Это делается с помощью директивы after (см. рис. 2, шаг Step2). Зависимости по данным представляют собой неявные указания на зависимости между шагами, которые анализируются при интерпретации скрипта EasyFlow. Они выражаются в том, что некоторые шаги могут использовать данные других шагов, что неявно влияет на последовательность их запуска. Такие зависимости могут присутствовать в описываемом WF одновременно с зависимостями по управлению, что позволяет очень гибко настраивать порядок выполнения шагов. Пример зависимостей по данным содержится в описании шага Step3 (строка 17), где указано, что в качестве входного файла используется файл „out.txt“, полученный в результате выполнения шага Step1. Еще одной полезной возможностью EasyFlow является автоматическое варьирование параметров (parameter sweep). Такая задача часто возникает, когда необходимо запустить один и тот же вычислительный пакет, закрепив одни и варьируя другие параметры. Для этого в язык введена директива sweep, которая принимает список параметров для варьирования и из одного шага создает N шагов, где N соответствует числу элементов в декартовом произведении списков варьирования для различных параметров. Таким образом, WF, описанные на языке EasyFlow, полностью независимы от конкретной архитектуры вычислений и хранения данных, что позволяет пользователям распределенной среды беспрепятственно обмениваться ими и запускать их на различных вычислительных ресурсах.
Возврат к странице
Язык описания композитных приложений EASYFLOW
.
Личные инструменты
Представиться системе
Пространства имён
Статья
Обсуждение
Варианты
Просмотры
Чтение
Просмотр
История
Действия
Поиск
Навигация
Заглавная страница
Сообщество
Текущие события
Свежие правки
Случайная статья
Справка
Инструменты
Ссылки сюда
Связанные правки
Спецстраницы