На правах рекламы:
ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Авторитетность издания

ВАК - К1
RSCI, ядро РИНЦ

Добавить в закладки

Следующий номер на сайте

4
Ожидается:
09 Сентября 2024

Входной язык объектно-ориентированной базы знаний GRID-системы

Input language of the object-oriented knowledge base of GRID-system
Статья опубликована в выпуске журнала № 1 за 2012 год. [ на стр. 3 - 6 ]
Аннотация:Рассматривается язык описания знаний об экспериментальной Grid-системе. Описание таких знаний базируется на объектно-ориентированной модели данных.
Abstract:In article the description language of the knowledge about experimental Grid-system is considered. The description of such knowledge is based on object-oriented model of the data.
Авторы: Опарин Г.А. (oparin@icc.ru) - Институт динамики систем и теории управления Сибирского отделения РАН, г. Иркутск, Россия, Феоктистов А.Г. (agf@icc.ru) - Институт динамики систем и теории управления Сибирского отделения РАН, г. Иркутск, Россия, Вартанян Э.К. (e.vartanyan@mail.ru) - Институт динамики систем и теории управления СО РАН, г. Иркутск
Ключевые слова: grid-система, объектно-ориентированная база знаний, входной язык
Keywords: Grid-system, object-oriented knowledge base, input language
Количество просмотров: 8345
Версия для печати
Выпуск в формате PDF (5.33Мб)
Скачать обложку в формате PDF (1.08Мб)

Размер шрифта:       Шрифт:

Организация Grid-систем различного назначения является важным и практически значимым направлением научных исследований в области высокопроизводительных вычислений [1]. Сложность таких систем обусловлена их динамичностью и стохастичностью, наличием большого числа объектов различной природы и связей между ними, распределенностью этих объектов и избыточностью информационно-вычислительных ресурсов. В Grid-систему могут интегрироваться сложные предметно-ориентированные програм-мные комплексы. Для эффективного использования Grid-системы требуются развитые средства описания, хранения и обработки знаний о ее инфраструктуре, а также о процессах планирования и вычислений.

В данной статье рассматривается язык описания объектной модели экспериментальной Grid-системы, созданной на базе вычислительных ресурсов Суперкомпьютерного центра при Институте динамики систем и теории управления (ИДСТУ) СО РАН.

Представление знаний. В качестве модели Grid-системы используется объектно-ориентиро­ванная модель данных, обладающая рядом важных свойств, необходимых для представления знаний о Grid-системе. В частности, данная модель

-      позволяет работать со сложноструктурированными данными, отражать их природу и связи между ними;

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

-      обладает гибкими средствами модификации и развития;

-      поддерживает комплексирование по данным (представление объектов Grid-системы в универсальном формате, позволяющем работать с ними различным предметно-ориентированным программным комплексам).

База знаний (БЗ) Grid-системы, реализованная на основе такой модели, обеспечивает целостность и безопасность информации в процессе извлечения объектов для совместного с другими пользователями доступа к ним и облегчает работу с объектно-ориентированными приложениями.

В состав базовых элементов модели Grid-сис­темы входят множества классов C, объектов O, полей P и типов T. Приведем ее основные характеристики:

-      главное понятие в модели – объект;

-      полная идентификация объекта (без привязки к конкретной БЗ) состоит из объекта и имени его типа;

-      объект состоит из набора полей, задаваемых классом объекта;

-      в качестве поля могут выступать значение какого-либо типа (например, строка или число), ссылка на объект определенного класса или символ неопределенности;

-      каждому классу cÎC соответствуют множество его объектов ocÎO и список его полей pcÎP;

-      ссылки на объекты являются значениями специального типа, они служат для доступа к объектам, на которые ссылаются;

-      ссылки создаются одновременно с объектами, на которые они ссылаются впоследствии;

-      различаются два вида ссылок на объект: простые ссылки, указывающие на один объект, и так называемые множественные ссылки, указывающие сразу на несколько объектов;

-      внешнее значение ссылки представляется как имя (или имена) указываемого объекта (или объектов);

-      с помощью аппарата ссылок реализуются следующие виды отношений между объектами: «один-к-одному», «многие-к-одному», «один-ко-многим» и «многие-ко-многим»;

-      специальное поле в объекте отводится для хранения имени объекта;

-      множественные виды отношений (все из перечисленных выше, кроме «один-к-одному») строятся на основе списков;

-      списки являются объектами специального класса и служат для объединения совокупности объектов и получения возможности ссылки ко всем этим объектам как к единому целому;

-      списки имеют специальное поле, в котором хранится длина списка;

-      вновь вводимые классы могут наследовать свойства имеющихся классов;

-      возможные изменения модели данных определяются фиксированным набором базовых операторов;

-      базовые операторы можно объединять в составной оператор, причем один составной оператор может быть частью другого;

-      типы и некоторые классы изначально встроены в модель данных;

-      смысловая нагрузка класса объектов находит свое отражение через указание возможности участия объектов данного класса в качестве параметров определенных операторов (базовых или составных) с пояснением роли их участия (входные, выходные);

-      знания предметного специалиста об условиях применения объекта того или иного класса в процессе вычислений представляются в виде набора продукций, которые являются и объектами определенного класса модели.

Введем вспомогательные элементы модели: символ неопределенности θ, который используется при создании объекта, выступая в роли значения полей до их инициализации; функцию g:O®C, ставящую в соответствие объекту некоторый класс; функцию q: P®CÈTÈ{θ}: " pÎP

Состояние модели Grid-системы задается в виде структуры s=.

Язык описания модели. Рассматриваемый язык представления знаний о Grid-системе включает синтаксические конструкции вида: <Имя базового оператора> (<Параметр 1> [, <Параметр 2>, …, <Параметр n>]).

Данный язык позволяет представить любые действия с моделью Grid-системы как последовательность базовых операторов. В результате выполнения базового оператора происходит переход из исходного состояния модели s= в результирующее s¢=.

На выполнение базовых операторов могут быть наложены ограничения двух видов: встроенные в транслятор языка описания модели Grid-системы и дополнительные, определяемые разработчиком модели. К первому виду относятся блокировки дублирования и уничтожения классов или объектов, проверка соответствия типов и другие подобные ограничения целостности модели. Ограничения второго вида определяют специфику объектов модели и взаимосвязей между ними. Они формируются разработчиком с помощью специальной подсистемы транслятора.

Свойства модели (полнота, корректность и целостность) выявляются в процессе трансляции ее описания.

В качестве примера рассмотрим описание фрагмента вычислительной модели распределенного пакета прикладных программ по линейной алгебре. Основными объектами этой модели являются множество параметров Z, множество операций F, множество программных модулей M, реализующих операции из F, и множество вычислительных узлов Grid-системы N.

В таблице 1 приведены примеры создания классов этих объектов.

Таблица 1

Базовый оператор

Описание

Ограни- чения

newClass(Prm);

Создание класса Prm (класс параметров)

PrmÏC

newField(Prm, name, String);

Создание поля name (полное имя параметра) в классе Prm. String – предопределенный тип

nameÏPPrm; StringÎT; PrmÎC

newField(Prm, value, Link(Object));

Создание поля value (значение параметра). Значением поля value является ссылка на объект класса Object

valueÏPPrm; Object, PrmÎC

newClass(Mdl);

Создание класса Mdl (класс модулей)

MdlÏC

newField(Mdl, name, String);

Создание поля name (полное имя параметра) в классе Mdl

nameÏPMdl;

StringÎT; MdlÎC

newClass(Opr);

Создание класса Opr (класс операций)

OprÏC

newField(Opr, name, String);

Создание поля name (полное имя операции) в классе Opr

nameÏPOpr; StringÎT; OprÎC

newField(Opr, module, Link(Mdl));

Создание поля module (ссылка на програм-мный модуль, реализующий данную операцию) в классе Opr

moduleÏPOpr; Mdl, OprÎC

newField(Opr, input, Link(Array(Prm, null)));

Создание поля input (входные параметры операции) как ссылки на список объектов класса Prm

inputÏPOpr; Opr, PrmÎC

newField(Opr, output, Link(Array(Prm, null)));

Создание поля output (выходные параметры операции)

outputÏPOpr;

Opr, PrmÎC

newClass(Node);

Создание класса Node (класс вычислительных узлов)

NodeÏC

newField(Node, id, String);

Создание поля id (уникальный идентификатор вычислительного узла) в классе Node

idÏPNode;

StringÎT; NodeÎC

newField(Node, modules, Link(Ar­ray(Mdl)));

Создание поля modules (модули, установленные на узле) как ссылки на список объектов класса Mdl

modulesÏPNode;

Mdl, NodeÎC

На основе созданных классов формируются объекты модели. В таблице 2 приводится описание операции масштабирования матриц при вычислении ее собственных значений и векторов.

Таблица 2

Базовый оператор

Описание

Ограничения

newObject(n, Prm);

Создание объекта n (порядок матрицы) класса Prm

PrmÎC; nÏO

newObject(b, Prm);

Создание объекта b (основание системы счисления в машине с плавающей запятой) класса Prm

PrmÎC; bÏO

newObject(a, Prm);

Создание объекта a (исходная матрица) класса Prm

PrmÎC; aÏO

newObject(low, Prm);

Создание объекта low (параметр операции balance) класса Prm

PrmÎC; lowÏO

newObject(hi, Prm);

Создание объекта hi (параметр операции balance) класса Prm

PrmÎC; hiÏO

newObject(d, Prm);

Создание объекта d (вектор, содержащий информацию о перестановках и масштабных коэффициентах) класса Prm

PrmÎC; cÏO

newObject(arr1, Array(Prm, 3));

Создание списка из трех объектов класса Prm (входные параметры операции масштабирования)

PrmÎC; arr1ÏO

newObject(arr2, Array(Prm, 4));

Создание списка из четырех объектов класса Prm (выходные параметры операции масштабирования)

PrmÎC; arr2ÏO

initObject(arr1[0], n);

Инициализация элемента списка arr1

arr1, nÎO; arr1.length>0

initObject(arr1[1], b);

Инициализация элемента списка arr1

arr1, bÎO; arr1.length>1

initObject(arr1[2], a);

Инициализация элемента списка arr1

arr1, aÎO; arr1.length>2

initObject(arr2[0], a);

Инициализация элемента списка arr2

arr2, aÎO; arr2.length>0

initObject(arr2[1], low);

Инициализация элемента списка arr2

arr2, lowÎO; arr2.length>1

initObject(arr2[2], hi);

Инициализация элемента списка arr2

arr2, hiÎO; arr2.length>2

initObject(arr2[3], d);

Инициализация элемента списка arr2

arr2, dÎO; arr2.length>3

newObject(m, Mdl);

Создание объекта m (модуль, реализующий операцию масштабирования) класса Mdl

MdlÎC; mÏO

newObject(bln, Opr);

Создание объекта bln (операция масштабирования) класса Opr

OprÎC; blnÏO

initField(bln, name, «Balance»);

Инициализация поля name. Balance – значение типа String

blnÎO; StringÎT; nameÎPc; где c=g(bln), q(name)=String

initField(bln, module, m);

Инициализация поля module

bln,mÎO; moduleÎPc, где c=g(bln), q(module)=g(m)

initField(bln, input, Link(arr1));

Инициализация поля input

bln, arr1ÎO; q(input)=g(arr1); inputÎPc, где c=g(bln)

initField(bln, output, Link(arr2));

Инициализация поля output

bln, arr2ÎO; q(output)= =g(arr2); outputÎPc, где c=g(bln)

Масштабирование матрицы применяется для понижения ее нормы с целью упрощения процесса нахождения собственных значений матрицы. Схема операции масштабирования имеет следующий вид: balance: {n, b, a}→{a, low, hi, d}. Обозначения взяты из работы [2]. Как видно из примера, связи между объектами возникают при инициализации полей. В данном случае список параметров связан с операцией масштабирования через поля input и output. Описание узлов Grid-системы приведено в таблице 3.

Таблица 3

Базовый оператор

Описание

Ограничения

newObject(r1, Node);

Создание объекта r1 (узел РВС) класса Node

NodeÎC; r1ÏO

newObject(rN, Node);

Создание объекта rN (узел РВС) класса Node

NodeÎC; rNÏO

newObject(arr3, Array(Mdl,1));

Создание списка из одного объекта класса Mdl (список модулей, установленных на узлах)

NodeÎC; arrÏO

initObject(arr[0], m);

Инициализация элемента списка arr (в список установленных модулей заносится модуль m)

arr, mÎO; arr.length>0

initField(r1, modules, Link(arr));

Инициализация поля modules (установка модулей arr на узел r1)

arr, r1ÎO;

q(modules)= =g(arr);

modulesÎPc, где c=g(r1)

initField(rN, modules, Link(arr));

Инициализация поля modules (установка модулей arr на узел rN)

arr, rNÎO; q(modules)= =g(arr);

modulesÎPc, где c=g(rN)

Планирование загрузки ресурсов становится необходимым при возникновении избыточности ресурсов Grid-системы в случае, когда существует программный модуль, размещенный в двух или более вычислительных узлах (табл. 3).

База знаний. В качестве основы БЗ экспериментальной Grid-системы ИДСТУ СО РАН используется объектно-ориентированная БД (ООБД) NeoDatis [3], дополненная управляющей надстройкой – мультиагентной системой планирования и распределения ресурсов [4].

В целом характеристики БД NeoDatis соответствуют основным положениям стандарта ODMG (Object Database Management Group) [5] и тем самым обеспечивают возможность ее интеграции с различными предметно-ориентированными комплексами, функционирующими в Grid-системе.

Схематично процесс создания БЗ показан на рисунке. Описание предметной области, объектов и ресурсов Grid-системы на входном языке транслируется в текст описания на языке Java. Стандартный Java-компилятор, используя библиотеки Java-классов (JDK), классов взаимодействия с ООБД (драйвер) и классов модели Grid-системы, компилирует текст на языке Java в исполняемый байт-код. При исполнении байт-кода Java-интер­претатором (Java Virtual Machine) создается БД, которая вместе с подсистемой логического вывода, интерпретирующей правила вывода данных, образует БЗ Grid-системы.

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

Литература

1.     Baker M., Buyya R., Laforenza D. Grids and Grid Technologies for Wide-Area Distributed Computing // Software: Practice and Experience. 2002. Vol. 32. No. 15, pp. 1437–1466.

2.     Уилкинсон, Райнш. Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра. М.: Машиностроение, 1976. 389 с.

3.     NeoDatis. URL: http://neodatis.wikidot.com (дата обращения: 17.10.2011).

4.     Джордан Д. Обработка объектных баз данных в С++. Программирование по стандарту ODMG. М.: Издат. дом «Вильямс», 2001. 384 с.

5.     Децентрализованное управление потоками заданий в интегрированной кластерной системе / И.В. Бычков [и др.] // Вестн. НГУ. Сер. Информационные технологии. 2011. Т. 9. Вып. 2. С. 42–54.


Постоянный адрес статьи:
http://swsys.ru/index.php?page=article&id=3000
Версия для печати
Выпуск в формате PDF (5.33Мб)
Скачать обложку в формате PDF (1.08Мб)
Статья опубликована в выпуске журнала № 1 за 2012 год. [ на стр. 3 - 6 ]

Возможно, Вас заинтересуют следующие статьи схожих тематик: