r8 - 05 Feb 2008 - 22:32:25 - Alexander MoskovskyYou are here: TWiki >  TSim Web > TSimStart
Приложения T-Sim могут работать используя несколько различных механизмов для передачи данных между узлами. Исторически первым (и используемым сейчас по умолчанию) является XML-RPC (применяется библиотека xmlrpc++). Также возможно использование MPI (Message-passing interface). При использовании XML-RPC, запуск приложения (в общем случае) должен осуществлять скрипт run_tsim.sh. Скрипт воспринимает все переданные ему аргументы как командную строку запуска приложения. Список узлов, на которых необходимо начать расчёт, берётся из конфигурационного файла (tsim.cfg).

Механизм запуска таков:

  1. На всех узлах, перечисленных в конфигурационном файле, кроме первого (который считается "главным"), выполняется командная строка запуска приложения (аргумент run_tsim.sh). Программа запускается и выполнение программы доходит до создания объекта TSim Runtime? . В конструкторе проверяется условие - если процессор "не-главный" и не указана опция "NODETACH=TRUE" (см. "примечание 1") в конфигурационном файле, то он отпускает консоль (fork+завершение родительского процесса), стандартный вывод перенаправляется в файл с именем tsim.out. "Отпускание" консоли позволяет run_tsim продолжить работу и перейти к следующему узлу. После инициализации "не-главный" процесс останавливается и ожидает сообщения "начать счёт" от "главного" процесса.
  2. После запуска "не-главных" процессов, run_tsim.sh выполняет командную строку, переданную в качестве аргумента (см. примечание 2). "Главный" процесс рассылает всем узлам, перечисленным в tsim.cfg сообщения "начать счёт". "Главный" процесс не пытается "отпустить" консоль - пользователь, запустивший скрипт, вновь увидит приглашение оболочки лишь после завершения программы.
  3. При завершении счета (момент окончания счёта определяется как момент вызова деструктора TSim Runtime? ) "главный" процесс рассылает всем процессам сообщение "завершить счёт" . По получении этого сообщения процессы завершают работу. При этом "главный" процесс должен дождаться того момента, когда стоп-сообщения уже ушли - останов служебных потоков транспортного уровня должен быть отложен до этого момента.

Процесс был описан для случая многих узлов. Приложение на T-Sim можно запустить и как несколько параллельных процессов на одном узле, например, в режиме отладки когда нет под рукой кластера (каждый процесс T-Sim-приложения может иметь множество потоков, отчего с точки зрения повышения производительности запускать несколько процессов на одном узле бессмысленно, в отличие от множества MPI-программ). Как запускать приложения в этом режиме описано в отдельном разделе.

Примечание 1 - Если указан NODETACH=TRUE, то консоль не будет отпущена, и скрипт run_tsim не сможет завершиться -"не главный" процесс будет ожидать сигнала "главного", но "главный" никогда не сможет быть запущен. При включённой опции NODETACH=TRUE приложение можно запустить вручную, открыв консоли на каждый узел из перечисленных в tsim.cfg и запустив сначала "не-главные" а потом "главный" процесс. Этот режим полезен при отладке - можно не только посмотреть вывод на консоль каждого из процессов в отдельности, но и запустить один или несколько процессов под отладчиком.

Примечание 2 - Молчаливо предполагается, что первый узел в списке tsim.cfg и есть тот, на котором мы выполняем программу, но скрипт этого не проверяет.

-- Alexander Moskovsky - 05 Feb 2008

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r8 < r7 < r6 < r5 < r4 | More topic actions
 
Powered by TWiki

This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback