четверг, 16 августа 2012 г.

Как правильно запустить службу MATLAB Distributed Computing Server

Для организации параллельных вычислений используется кластер компьютеров, на каждом из которых устанавливается служба  "MATLAB Distributed Computing Server". На английских версиях операционной системы Windows проблем нет, но вот на русских версиях имеется. Связана эта проблема с тем, что встроенные группы безопасности на русском и английском языках различаются (см. статью "Специальные группы Windows и их перевод на русский язык"). Другая проблема состоит в том, что на Windows XP невозможно установить службу MDCE. Ниже показано, как всё-таки это можно сделать. Также описана настройка брандмауэра для доступа к службе.

Все данные для параллельных вычислений MATLAB загружает, хранит и использует в каталоге %TEMP%\MDCE\, где %TEMP% - системная (не пользователя) переменная с именем каталога для временных файлов. В дальнейшем для краткости будем сокращать %TEMP%\MDCE\ до MDCE\.

При установке службы получаем следующее сообщение:
Unable to give the "Administrators" group full control for C:\Windows\TEMP\MDCE\Checkpoint\security
You may need to manually give the "Administrators" group read and write access to this directory.
Unable to give the "CREATOR OWNER" group full control for C:\Windows\TEMP\MDCE\Checkpoint\security
You may need to manually give the "CREATOR OWNER" group read and write access to this directory.
Unable to give the "Authenticated Users" group traversal rights for C:\Windows\TEMP\MDCE\Checkpoint\security
You may need to manually give the "Authenticated Users" group traversal rights to this directory.
wrapper  | MATLAB Distributed Computing Server installed.


Сразу видно, что имеется несколько ошибок. Они, конечно, не критичны, но связаны с невозможностью настроить права каталога MDCE\Checkpoint\security. Как было отмечено выше, в русской локализации ОС Windows нет встроенных групп "Administrators", "CREATOR OWNER", "Authenticated Users", а есть "Администраторы", "СОЗДАТЕЛЬ-ВЛАДЕЛЕЦ", "Прошедшие проверку". Значит, нужно исправить названия этих групп.

Поиск подсказывает, что нужно исправлять файл "c:\Program Files\MATLAB\R2012a\toolbox\distcomp\bin\util\setmdceenv.bat" в конце файла в кодировке DOS 866 :

    REM SECURITY_DIR has restricted perms - only Администраторы and 
    REM the service user have Full Control. Users can traverse only.
    IF [!BASEDIR!]==[!SECURITY_DIR!] (
        !CALL_GRANTUSERRIGHTS! -set "!BASEDIR!" Администраторы FullControl
        IF ERRORLEVEL 1 (
            ECHO Unable to give the "Администраторы" group full control for !BASEDIR!
            ECHO You may need to manually give the "Администраторы" group read and write access to this directory.
        )

        !CALL_GRANTUSERRIGHTS! -modify "!BASEDIR!" !SERVICEUSER! FullControl
        IF ERRORLEVEL 1 (
            ECHO Unable to give !SERVICEUSER! full control for !BASEDIR!
            ECHO You may need to manually give !SERVICEUSER! read and write access to this directory.
        )

        REM This sets the permissions for the creator of any child objects
        !CALL_GRANTUSERRIGHTS! -modify "!BASEDIR!" "СОЗДАТЕЛЬ-ВЛАДЕЛЕЦ" FullControl
        IF ERRORLEVEL 1 (
            ECHO Unable to give the "СОЗДАТЕЛЬ-ВЛАДЕЛЕЦ" group full control for !BASEDIR!
            ECHO You may need to manually give the "СОЗДАТЕЛЬ-ВЛАДЕЛЕЦ" group read and write access to this directory.
        )

        !CALL_GRANTUSERRIGHTS! -modify "!BASEDIR!" "Прошедшие проверку" Traversal
        IF ERRORLEVEL 1 (
            ECHO Unable to give the "Прошедшие проверку" group traversal rights for !BASEDIR!
            ECHO You may need to manually give the "Прошедшие проверку" group traversal rights to this directory.
        )

Для версии R2012b следует исправлять файл "c:\Program Files\MATLAB\R2012b\toolbox\distcomp\bin\util\mdce_privileged_commands.bat" и, конечно, в кодировке DOS 866.

Теперь можно устанавливать и запускать службу с правильными правами:


Впрочем, ошибка с правами не критическая. Но при выполнении данной команды в системе Windows XP есть ряд особенностей.

1. При запросе прав следует снять галочку "Защитить компьютер от несанкционированных действий этой программы":


2. Если это не помогает и программа сообщает о следующей ошибке (а в R2012b именно так и происходит):

C:\Documents and Settings\Администратор>cd "C:\Program Files\MATLAB\R2012b\toolbox\distcomp\bin"

C:\Program Files\MATLAB\R2012b\toolbox\distcomp\bin>mdce install

┬ючтЁрЄ шч юяхЁрЎшш яЁюшчю°хы шч-чр яЁхт√°хэш  тЁхьхэш юцшфрэш 
Script mdce unable to complete successfully - exiting


то нужно открыть файл "c:\Program Files\MATLAB\R2012b\toolbox\distcomp\bin\mdce.bat" и заменить строку:
call "%BINBASE%"\elevate.exe "%UTILBASE%"\mdce_privileged_commands.bat
на
call "%UTILBASE%"\mdce_privileged_commands.bat 
Затем ещё раз следует выполнить команду "mdce install" от имени пользователя с правами администратора:

C:\Program Files\MATLAB\R2012b\toolbox\distcomp\bin>mdce install
Setting permissions on LOGBASE C:\WINDOWS\TEMP\MDCE\Log
Setting permissions on CHECKPOINTBASE C:\WINDOWS\TEMP\MDCE\Checkpoint
Setting permissions on SECURITY_DIR C:\WINDOWS\TEMP\MDCE\Checkpoint\security
wrapper  | MATLAB Distributed Computing Server installed.


Для справки: надпись "┬ючтЁрЄ шч юяхЁрЎшш яЁюшчю°хы шч-чр яЁхт√°хэш  тЁхьхэш юцшфрэш" означает "Возврат из операции произошел из-за прев шения времени ожидани".

Может возникнуть и другая ошибка:

wrapper  | OpenSCManager failed - ╬Єърчрэю т фюёЄєях. (0x5)
Script mdce unable to complete successfully - exiting


В этом случае Вы запустили командную строку под правами обычного пользователя, а не администратора :)

Для доступа к службе со сторонних компьютеров необходимо настроить брандмауэр. В настройки исключений следует добавить
для x86:

C:\Program Files\MATLAB\R2012b\sys\java\jre\win32\jre\bin\javaw.exe
C:\Program Files\MATLAB\R2012b\bin\win32\mpiexec.exe
C:\Program Files\MATLAB\R2012b\bin\win32\smpd.exe
C:\Program Files\MATLAB\R2012b\bin\win32\MATLAB.exe
или для x64:
C:\Program Files\MATLAB\R2012b\sys\java\jre\win64\jre\bin\javaw.exe
C:\Program Files\MATLAB\R2012b\bin\win64\mpiexec.exe
C:\Program Files\MATLAB\R2012b\bin\win64\smpd.exe
C:\Program Files\MATLAB\R2012b\bin\win64\MATLAB.exe

Несколько мыслей вслух:
  • протокол для всех программ - TCP;
  • "javaw.exe" необходима поскольку именно java отвечает за работу службы MDCE, остальные по-желанию и по мере использования тех или иных механизмов параллельного программирования;
  • "MATLAB.exe" можно не добавлять, если не собираетесь его запускать как клиента.

Настоятельно рекомендую подправить файл "c:\Program Files\MATLAB\R2012b\toolbox\distcomp\bin\mdce_def.bat" в следующих местах:

set LOGBASE=%TEMP%\MDCE\Log
set CHECKPOINTBASE=%TEMP%\MDCE\Checkpoint

Поскольку при большом объёме параллельных вычислений данные сохраняются в кэше менеджера, то ваш каталог %TEMP%\MDCE быстро распухнет и свободного места на (системном) диске не останется. Ну и конечно, следует после изменения параметров остановить и запустить службу используя mdce.bat.

Рекомендую почитать:
How can I start the MDCE in MATLAB 7.5 (R2007b) or later versions?

Комментариев нет:

Отправить комментарий