Организация распределённого сетевого расчёта

В данном разделе справки подробно описан процесс организации распределенного сетевого расчета в среде SimInTech на нескольких вычислительных узлах. Вопрос является особенно актуальным при работе с объемными проектами при недостаточной производительности вычислительной машины. Зачастую сложные и объемные модели строятся из нескольких отдельных проектов. Каждый проект решает свои собственные задачи и может обмениваться сигналами с другими проектами через базу данных сигналов SDB (англ. Signals Data Base). В таком случае проекты объединяются в пакет проектов. Возможности среды SimInTech позволяют выполнять расчет каждого проекта модели на отдельной вычислительной машине при помощи базы данных SDB, что может значительно повысить скорость расчета.

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

Обмен данными через сеть в среде SimInTech при помощи базы данных SDBимеет свои особенности. Один из вычислительных узлов, участвующих в сетевом обмене, должен стать главным, то есть сервером. Сервер может как получать, так и отдавать данные остальным узлам, которые именуются клиентами. Клиенты, в свою очередь, также через базу данных SDB могут обмениваться данными между собой и с сервером. Как правило, в качестве сервера выбирается узел, содержащий главный центральный проект комплексной модели, например, модель теплогидравлики. Тогда остальные узлы, содержащие, например, модель алгоритмов системы управления или модель блоков управления оборудованием, становятся клиентами.

Дальнейшее описание процесса организации сетевого обмена через сеть TCP/IP в среде SimInTech продолжим на примере комплексной модели воздухо-воздушного авиационного теплообменного оборудования, состоящей из:

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

Предположим, что у нас имеется локальная вычислительная сеть (с протоколом TCP/IP v4), три компьютера в которой имеют IP-адреса 192.168.5.1, 192.168.5.2 и 192.168.5.3 соответственно. Настраивать распределенный расчет будем таким образом, чтобы главным был компьютер 192.168.5.1, два других – клиентами. При этом на главном компьютере будет выполняться расчет модели объекта управления, на клиенте 192.168.5.2 – алгоритмов, на клиенте 192.168.5.3 – блоков управления (см. Рисунок 1).

Рисунок 1. Структура распределённого сетевого расчёта

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

Перейдем к настройке сервера сетевого обмена. Для этого необходимо открыть проект «Модель объекта.prt» и зайти в настройки базы данных сигналов SDB (пункт главного меню «Инструменты», далее «База данных», затем вкладка «Настройки»). За настройку сервера сетевого обмена отвечает первый столбец открывшегося меню, имя которого «Настройки сервера сетевого обмена» (см. Рисунок 2). Отметим, что настройки базы данных хранятся в prt-файле, а не в файле базы данных. Таким образом, к одной базе данных можно разными проектами подключаться с разными настройками.

Рисунок 2. Настройки сервера сетевого обмена

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

Можем перейти к настройке клиентов. Открываем проект, соответствующий первому клиенту, и заходим в ту же вкладку, что и при настройке сервера. За настройку клиентов отвечает второй столбец меню «Параметры клиента» (см. Рисунок 3).

Рисунок 3. Параметры клиента

Первым делом в графе «IP-адрес удаленного сервера обмена» указываем адрес сервера (в нашем случае «192.168.5.1») и устанавливаем галку напротив строки «Включить удаленный обмен». При необходимости синхронизации модельного времени с сервером устанавливаем галку напротив пункта «Синхронизовать модельное время». Для нашей модели это является важным условием, однако, бывают случаи, когда в этом нет особого смысла. Далее устанавливаем галки напротив пунктов «Принимать данные от сервера» и «Передавать данные на сервер». Графу «Порт удаленного сервера обмена» необходимо заполнить в соответствии с графой «Порт приема данных» из настроек сервера, которую мы ранее оставили без изменений. При работе с рестартами можно выполнить настройку процессов загрузки и сохранения рестартов. Графа «Выполнять асинхронные запросы данных» необходима при работе клиента в таком режиме, что он может подключаться и отключаться в любое время и независимо от текущего состояния остальных проектов. На этом настройка первого клиента закончена. Можно сохранить проект и приступить к настройке второго клиента. В рамках данной модели ко второму клиенту предъявляются такие же требования, как и к первому. В связи с этим для второго клиента необходимо повторить процедуру настройки первого клиента.

После выполнения всех настроек и сохранения проектов (для запоминания настроек) запуск на расчет следует производить в следующем порядке:

Для контроля работы сетевого обмена между вычислительными узлами в среде SimInTech имеется специальная информационная вкладка (пункт главного меню «Инструменты», далее «База данных», затем вкладка «Состояние сети»). С помощью этой страницы пользователь может посмотреть статус подключения того или иного клиента, проследить, какое количество клиентов подключено к серверу в данный момент, какими сигналами обмениваются проекты, и узнать текущие значения сигналов.

Автоматизированный запуск распределенного расчета возможен при совместном использовании двух вспомогательных утилит, входящих в состав среды SimInTech: «Сервер удаленного расчета» и «Утилита массового запуска и синхронизации» (см. рисунок 4).

Рисунок 4. «Сервер удаленного расчета» и «Утилита массового запуска и синхронизации»

«Сервер удаленного расчета» является небольшой программой, которая воспринимает команды, поступающие по сети от утилиты массового запуска и синхронизации. «Сервер удаленного расчета» необходимо запустить на каждом из компьютеров, участвующих в распределенном расчете (для удобства можно поместить его в автозапуск, см. Рисунок 4). При его запуске появляется соответствующая иконка в области уведомлений Windows.

«Утилита массового запуска и синхронизации» позволяет в автоматизированном режиме отправлять команды (для командной строки Windows) на исполнение нескольким адресатам (т.е. нескольким компьютерам в сети). Для целей распределенного расчета нам необходимо на каждом из компьютеров выполнить пуск SimInTech с соответствующим файлом проекта и опцией /start которая обеспечит инициализацию проектов.

Предположим, что на главном компьютере (192.168.5.1) проект расположен в каталоге C:\TO, на других – этот же каталог подключен как сетевой диск F:\ (см. Рисунок 5).

Рисунок 5. Настройки расположения проектов

В утилите массового запуска при такой организации расположения файлов нужно будет создать два шаблона запуска, а именно (см. Рисунок 6):

Рисунок 6. Задание шаблонов команд

Задержку переключения лучше установить 2000-3000 мсек. Данная настройка обеспечивает паузу между отправкой команд на разные компьютеры. В данном примере важно, чтобы первый проект проинициализировался полностью до того, как будут инициализироваться последующие. Настройка определяется экспериментально (зависит от сложности проектов и скорости работы компьютеров).

Далее, на вкладке «Экраны» следует задать три строки, как представлено на ниже (Рисунок 7).

Рисунок 7. Задание команд для различных вычислительных узлов (экранов)

Кнопкой «Запустить все» обеспечивается последовательная отправка команд на соответствующие экраны с задержкой в 2000 миллисекунд. После успешной инициализации кнопками Пуск/Пауза/Стоп с главного компьютера возможно управление расчетом.

Кнопкой «Выгрузить все» обеспечивается завершение работы SimInTech на всех экранах (вычислительных узлах). По нажатию этой кнопки фактически отправляется шаблон команды остановки на все вычислительные узлы.