Вычислительная подсистема: различия между версиями
(не показано 11 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
{{NavBar|{{ | {{NavBar|{{Системная иерархия:Вычислительная подсистема}}}} | ||
Вычислительная подсистема - логическое объединение различных подсистем предметных областей в единую структурную единицу. | Вычислительная подсистема - логическое объединение различных подсистем предметных областей в единую структурную единицу. | ||
Строка 7: | Строка 7: | ||
В этом контексте ''подсистемой предметной области D'' будем называть реализацию подсистемы для предметной области ''D'', где ''D'' - имя предметной области, например: ''подсистема предметной области "Архитектурная акустика"''. | В этом контексте ''подсистемой предметной области D'' будем называть реализацию подсистемы для предметной области ''D'', где ''D'' - имя предметной области, например: ''подсистема предметной области "Архитектурная акустика"''. | ||
С другой стороны, ''экземпляром N предметной области D'' будем называть реализацию подсистемы с именем ''N'', под которым этот экземпляр зарегистрирован в [[подсистема управления|подсистеме управления]] | С другой стороны, ''экземпляром N предметной области D'' будем называть реализацию подсистемы с именем ''N'', под которым этот экземпляр зарегистрирован в [[подсистема управления|подсистеме управления]] - [[поставщик подсистемы предметной области|поставщиком подсистемы предметной области]]. Экземпляр подсистемы предметной области реализуется в виде внутрипроцессного или TCP сервера с интерфейсом [[IDomainSystem]], принимающего запросы от подсистемы управления на запуск/остановку/завершение моделирования с заданными входными параметрами, а также на получение результатов моделирования и информации о статусе. Адрес сервера (путь к разделяемой библиотеке или адрес плюс порт) задаются в подсистеме управления при регистрации подсистемы предметной области. | ||
[[File:DIS-DS-Start-Sequence.svg|500px|thumb|right|Протокол взаимодействия подсистемы управления (ПУ), предметно-независимой реализации балансировщика нагрузки и экземпляра подсистемы предметной области (ППО) при запуске моделирования.]] | |||
[[File:DIS-DS-Query-Sequence.svg|500px|thumb|right|Протокол опроса состояния процесса моделирования, выполняемого асинхронно экземпляром подсистемы предметной области (ППО) и его узлами.]] | |||
[[File:DIS-DS-Close-Sequence.svg|500px|thumb|right|Протокол закрытия составного процесса моделирования.]] | |||
===Интерфейс узла=== | Реализация [[IDomainSystem]] включает в себя реализацию узла с интерфейсом [[INode]], выполняющего определенный в предметной области компонент параллельного выполнения, который выделен для распределения средствами глобального [[балансировщик нагрузки|балансировщика нагрузки]]. Структурно узел [[INode]] также реализуется как компонент, работающий в адресном пространстве подсистемы предметной области, либо как выделенный TCP сервер. При запуске моделирования с помощью метода [[IDomainSystem::StartSimulation]] экземпляр подсистемы предметной области может зарегистрировать узлы в выделенном для этого экземпляра глобальном балансировщике нагрузки. | ||
Между предметно-независимой подсистемой и экземплярами предметных областей проходит граница между реализациями, за которые ответственны возможно разные разработчики - | |||
[[поставщик предметно-независимых сервисов]] и [[поставщик подсистемы предметной области]]. Реализация экземпляра подсистемы предметной области, выполняемая последним, использует один из трех интерфейсов предметно-независимой подсистемы. | |||
# Поставщик подсистемы предметной области предоставляет разделяемую библиотеку DLL/SO, имеющую C-интерфейс [[GetDomainSystem]], который используется для получения доступа к подсистеме предметной области через [[программный интерфейс]] [[IDomainSystem]]. В этом случае предметно-независимая подсистема, в зависимости от своей внутрипроцессной и распределенной конфигурации, включает библиотеку в свое адресное пространство или в адресное пространство реализованного независимо от предметной области прокси сервера, обеспечивающего коммуникацию с удаленной подсистемой управления. Для распределенной конфигурации реализация экземпляра предметной области также должна поддерживать (см. [[IDomainSystem::RepresentAs]]) интерфейс [[ITCPDomainSystem]]. | |||
# ''Только для распределенной конфигурации'' Поставщик подсистемы предметной области реализует собственный исполняемый модуль экземпляра подсистемы предметной области и осуществляет взаимодействие с предметно-независимой подсистемой с использованием компонент получаемой об предметно-независимой подсистемы библиотеки [[domain_shared]] - например, прокси. | |||
# ''Только для распределенной конфигурации'' Поставщик подсистемы предметной области реализует собственный исполняемый модуль экземпляра подсистемы предметной области с собственной реализацией обработки запросов от подсистемы управления. | |||
[[File:DIS-DDS-border.png|500px|thumb|right|Структурные компоненты, реализующие процесс на стороне экземпляра подсистемы предметной области - в случае использования функций [[domain_shared]]. Для узла определяется аналогично.]] | |||
В распределенной конфигурации узел, доступ к которому осуществляется со стороны предметно-независимого балансировщика нагрузки, имеет аналогичный интерфейс, с C-функцией [[GetNode]], создающей экземпляр реализации [[программный интерфейс|программного интерфейса]] [[INode]]. Этот экземпляр преобразуем с помощью [[INode::RepresentAs]] к типу [[ITCPNode]]. | |||
Ниже перечислены компоненты интерфейсов, используемых подсистемой управления и подсистемами предметных областей для коммуникации. | |||
==Полиморфные программные интерфейсы== | |||
==Функции C== | |||
==TCP запросы== | |||
===Интерфейс узла, реализованного как внутрипроцессный сервер=== | |||
====Точка входа==== | ====Точка входа==== | ||
Точкой входа в библиотеку является статическая функция с C связыванием [[ | Точкой входа в библиотеку является статическая функция с C связыванием [[GetDomainSystem]], инициализирующая узел и возвращающая его программную реализацию в виде [[программный интерфейс|интерфейса]] [[IDomainSystem]]. | ||
====Набор интерфейсных компонентов и интерфейсов==== | ====Набор интерфейсных компонентов и интерфейсов==== | ||
{{control_domain_interaction_class_list}} | {{control_domain_interaction_class_list}} | ||
{{relation_diagram|diagram=Подсистемы вычислительной подсистемы и ее связь с [[подсистема управления|подсистемой управления]].|graph=computing_system|content= | |||
{{relation_diagram addref|class="Подсистема управления"|ref=[[Подсистема управления]]}} | |||
{{relation_diagram addref|class=IDomainSystem|ref=[[IDomainSystem]]}} | |||
{{relation_diagram addref|class=INode|ref=[[INode]]}} | |||
{{relation_diagram addref|class=ILoadBalancer|ref=[[ILoadBalancer]]}} | |||
{{relation_diagram add|composition|"Подсистема управления"|"Балансировщик нагрузки"}} | |||
{{relation_diagram add|implementation|"Балансировщик нагрузки"|ILoadBalancer}} | |||
{{relation_diagram add|aggregation|"Балансировщик нагрузки"|"Исполнитель логического процесса"}} | |||
{{relation_diagram add|aggregation|"Подсистема управления"|"Вычислительная подсистема"}} | |||
{{relation_diagram add|composition|"Вычислительная подсистема"|"Предметная область X"}} | |||
{{relation_diagram add|composition|"Предметная область X"|Кластер}} | |||
{{relation_diagram add|implementation|Кластер|IDomainSystem}} | |||
{{relation_diagram add|composition|Кластер|"Исполнитель логического процесса"}} | |||
{{relation_diagram add|implementation|"Исполнитель логического процесса"|INode}} | |||
}} | |||
=Реализованные предметные области= | |||
[[Архитектурная акустика]] |
Текущая версия на 18:17, 25 октября 2017
Вычислительная подсистема - логическое объединение различных подсистем предметных областей в единую структурную единицу.
Подсистема предметной области - программно-аппаратно решение, которое реализует моделирование физического поля на собственных вычислительных мощностях, с использованием собственной программной реализации, заданной для конкретной предметной области, но с использованием правил и инструментов, которые предоставляются подсистемой управления.
В этом контексте подсистемой предметной области D будем называть реализацию подсистемы для предметной области D, где D - имя предметной области, например: подсистема предметной области "Архитектурная акустика".
С другой стороны, экземпляром N предметной области D будем называть реализацию подсистемы с именем N, под которым этот экземпляр зарегистрирован в подсистеме управления - поставщиком подсистемы предметной области. Экземпляр подсистемы предметной области реализуется в виде внутрипроцессного или TCP сервера с интерфейсом IDomainSystem, принимающего запросы от подсистемы управления на запуск/остановку/завершение моделирования с заданными входными параметрами, а также на получение результатов моделирования и информации о статусе. Адрес сервера (путь к разделяемой библиотеке или адрес плюс порт) задаются в подсистеме управления при регистрации подсистемы предметной области.
Реализация IDomainSystem включает в себя реализацию узла с интерфейсом INode, выполняющего определенный в предметной области компонент параллельного выполнения, который выделен для распределения средствами глобального балансировщика нагрузки. Структурно узел INode также реализуется как компонент, работающий в адресном пространстве подсистемы предметной области, либо как выделенный TCP сервер. При запуске моделирования с помощью метода IDomainSystem::StartSimulation экземпляр подсистемы предметной области может зарегистрировать узлы в выделенном для этого экземпляра глобальном балансировщике нагрузки.
Между предметно-независимой подсистемой и экземплярами предметных областей проходит граница между реализациями, за которые ответственны возможно разные разработчики - поставщик предметно-независимых сервисов и поставщик подсистемы предметной области. Реализация экземпляра подсистемы предметной области, выполняемая последним, использует один из трех интерфейсов предметно-независимой подсистемы.
- Поставщик подсистемы предметной области предоставляет разделяемую библиотеку DLL/SO, имеющую C-интерфейс GetDomainSystem, который используется для получения доступа к подсистеме предметной области через программный интерфейс IDomainSystem. В этом случае предметно-независимая подсистема, в зависимости от своей внутрипроцессной и распределенной конфигурации, включает библиотеку в свое адресное пространство или в адресное пространство реализованного независимо от предметной области прокси сервера, обеспечивающего коммуникацию с удаленной подсистемой управления. Для распределенной конфигурации реализация экземпляра предметной области также должна поддерживать (см. IDomainSystem::RepresentAs) интерфейс ITCPDomainSystem.
- Только для распределенной конфигурации Поставщик подсистемы предметной области реализует собственный исполняемый модуль экземпляра подсистемы предметной области и осуществляет взаимодействие с предметно-независимой подсистемой с использованием компонент получаемой об предметно-независимой подсистемы библиотеки domain_shared - например, прокси.
- Только для распределенной конфигурации Поставщик подсистемы предметной области реализует собственный исполняемый модуль экземпляра подсистемы предметной области с собственной реализацией обработки запросов от подсистемы управления.

В распределенной конфигурации узел, доступ к которому осуществляется со стороны предметно-независимого балансировщика нагрузки, имеет аналогичный интерфейс, с C-функцией GetNode, создающей экземпляр реализации программного интерфейса INode. Этот экземпляр преобразуем с помощью INode::RepresentAs к типу ITCPNode.
Ниже перечислены компоненты интерфейсов, используемых подсистемой управления и подсистемами предметных областей для коммуникации.
Полиморфные программные интерфейсы
Функции C
TCP запросы
Интерфейс узла, реализованного как внутрипроцессный сервер
Точка входа
Точкой входа в библиотеку является статическая функция с C связыванием GetDomainSystem, инициализирующая узел и возвращающая его программную реализацию в виде интерфейса IDomainSystem.
Набор интерфейсных компонентов и интерфейсов
Интерфейсы, реализуемые подсистемой управления | |
---|---|
ILoadBalancer | Программный интерфейс, предоставляемый подсистемой управления для подсистемы предметной области. Предоставляет методы для регистрации задачи, которая должна быть выполнена как элемент параллельных вычислений, а также для регистрации свободного узла INode. |
IControlSystem | Базовый интерфейс подсистемы управления. |
IControlSystemDomainSide | Интерфейс, предоставляемый подсистеме предметной области, для установки соединения с подсистемой управления, а также для получения доступа к ее балансировщикам нагрузки. |
IGeometryModel | Интерфейс геометрической модели среды моделируемого физического поля. |
IObject | Базовый интерфейс для всех элементов геометрической модели. |
IPlainObject | Секущая плоскость вывода результатов моделирования. |
ISourceObject | Интерфейс объекта-источника моделируемого поля. |
IPolyObject | Интерфейс объекта-полигонального элемента геометрической модели. |
IObjectCollection | Программный интерфейс коллекции объектов, составляющих геометрическую модель. |
IPlainCollection | Программный интерфейс коллекции секущих плоскостей вывода результатов моделирования. |
ISourceCollection | Программный интерфейс коллекции источников моделируемого физического поля. |
IPolyCollection | Программный интерфейс коллекции полигональных элементов геометрической модели. |
const_object_iterator, object_iterator | Компонент, реализующий двунаправленный итератор, для перечисления всех элементов, составляющих геометрическую модель, т.е. принадлежащих соответствующей коллекции IObjectCollection. |
const_plain_iterator, plain_iterator | Компонент, реализующий двунаправленный итератор, для перечисления плоскостей вывода результатов моделирования, т.е. объектов, реализующих интерфейс IPlainObject и принадлежащих коллекции IPlainCollection соответствующей геометрической модели. |
const_source_iterator, source_iterator | Компонент, реализующий двунаправленный итератор, для перечисления источников моделируемого поля, т.е. объектов, реализующих интерфейс ISourceObject и принадлежащих коллекции ISourceCollection соответствующей геометрической модели. |
const_poly_iterator, poly_iterator | Компонент, реализующий двунаправленный итератор, для перечисления полигональных элементов геометрической модели, т.е. объектов, реализующих интерфейс IPolyObject и принадлежащих коллекции IPolyCollection модели. |
POINT3DEXT | Трехкомпонентный вектор-столбец для описания координат точки в пространстве или радиус-вектора. |
SIZE3DEXT | Трехкомпонентный вектор-столбец для описания трехмерного размера в виде разницы двух координат по соответствующим осям x, y и z. |
FACE3DEXT | Класс полигональной поверхности, композиция которых составляет элемент IPolyObject. |
Интерфейсы, реализуемые подсистемой предметной области. | |
IDomainSystem | Основной программный интерфейс экземпляра подсистемы предметной области. |
INode | Программный интерфейс, реализуемый узлом подсистемы предметной области и предоставляющий подсистеме управления методы для управления вычислительной нагрузкой, которая подается на узел. Физически может быть ассоциирован с вычислительным кластером (для реализации с локальным балансировщиком) либо с потоком на логическом ядре центрального процессора. |
