Вычислительная подсистема

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
Компоненты на верхнем уровне \ Вычислительная подсистема

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

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

В этом контексте подсистемой предметной области D будем называть реализацию подсистемы для предметной области D, где D - имя предметной области, например: подсистема предметной области "Архитектурная акустика".

С другой стороны, экземпляром N предметной области D будем называть реализацию подсистемы с именем N, под которым этот экземпляр зарегистрирован в подсистеме управления - поставщиком подсистемы предметной области. Экземпляр подсистемы предметной области реализуется в виде внутрипроцессного или TCP сервера с интерфейсом IDomainSystem, принимающего запросы от подсистемы управления на запуск/остановку/завершение моделирования с заданными входными параметрами, а также на получение результатов моделирования и информации о статусе. Адрес сервера (путь к разделяемой библиотеке или адрес плюс порт) задаются в подсистеме управления при регистрации подсистемы предметной области.

Протокол взаимодействия подсистемы управления (ПУ), предметно-независимой реализации балансировщика нагрузки и экземпляра подсистемы предметной области (ППО) при запуске моделирования.
Протокол опроса состояния процесса моделирования, выполняемого асинхронно экземпляром подсистемы предметной области (ППО) и его узлами.
Протокол закрытия составного процесса моделирования.

Реализация IDomainSystem включает в себя реализацию узла с интерфейсом INode, выполняющего определенный в предметной области компонент параллельного выполнения, который выделен для распределения средствами глобального балансировщика нагрузки. Структурно узел INode также реализуется как компонент, работающий в адресном пространстве подсистемы предметной области, либо как выделенный TCP сервер. При запуске моделирования с помощью метода IDomainSystem::StartSimulation экземпляр подсистемы предметной области может зарегистрировать узлы в выделенном для этого экземпляра глобальном балансировщике нагрузки.

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

  1. Поставщик подсистемы предметной области предоставляет разделяемую библиотеку DLL/SO, имеющую C-интерфейс GetDomainSystem, который используется для получения доступа к подсистеме предметной области через программный интерфейс IDomainSystem. В этом случае предметно-независимая подсистема, в зависимости от своей внутрипроцессной и распределенной конфигурации, включает библиотеку в свое адресное пространство или в адресное пространство реализованного независимо от предметной области прокси сервера, обеспечивающего коммуникацию с удаленной подсистемой управления. Для распределенной конфигурации реализация экземпляра предметной области также должна поддерживать (см. IDomainSystem::RepresentAs) интерфейс ITCPDomainSystem.
  2. Только для распределенной конфигурации Поставщик подсистемы предметной области реализует собственный исполняемый модуль экземпляра подсистемы предметной области и осуществляет взаимодействие с предметно-независимой подсистемой с использованием компонент получаемой об предметно-независимой подсистемы библиотеки domain_shared - например, прокси.
  3. Только для распределенной конфигурации Поставщик подсистемы предметной области реализует собственный исполняемый модуль экземпляра подсистемы предметной области с собственной реализацией обработки запросов от подсистемы управления.
Структурные компоненты, реализующие процесс на стороне экземпляра подсистемы предметной области - в случае использования функций 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 Программный интерфейс, реализуемый узлом подсистемы предметной области и предоставляющий подсистеме управления методы для управления вычислительной нагрузкой, которая подается на узел. Физически может быть ассоциирован с вычислительным кластером (для реализации с локальным балансировщиком) либо с потоком на логическом ядре центрального процессора.


Реализованные предметные области

Архитектурная акустика