В этом разделе приведены совет при решении задач, с которыми вы можете столкнуться с программным обеспечением MATLAB® Parallel Server™.
При запуске работника MATLAB проблема лицензирования может привести к сообщению
License checkout failed. No such FEATURE exists. License Manager Error -5
Существует много причин, почему вы можете получить эту ошибку:
Это сообщение обычно указывает, что вы пытаетесь использовать продукт, для которого вам не лицензируют. Посмотрите на свой license.dat
файл расположился в рамках вашей установки MATLAB, чтобы видеть, разрешают ли вам использовать этот продукт.
Если вам лицензируют для этого продукта, эта ошибка может быть результатом наличия дополнительных возвратов каретки или вкладок в вашем файле лицензии. Чтобы избежать этого, гарантируйте, что каждая линия начинается с любого #
, SERVER
, DAEMON
, или INCREMENT
.
После фиксации вашего license.dat
файл, перезапустите сетевой менеджер лицензий, и MATLAB должен работать правильно.
Эта ошибка может также быть результатом неправильной системной даты. Если ваша системная дата будет то перед датой, которой была сделана ваша лицензия, вы получите эту ошибку.
Если вы получаете эту ошибку при запуске рабочего с программного обеспечения MATLAB Parallel Server:
Можно вызывать startworker
команда от установки, которая не имеет доступа к лицензии рабочего. Например, запуск рабочего от клиентской установки продукта Parallel Computing Toolbox™ вызывает следующую ошибку:
The mjs service on the host hostname returned the following error: Problem starting the MATLAB worker. The cause of this problem is: ============================================================== Most likely, the MATLAB worker failed to start due to a licensing problem, or MATLAB crashed during startup. Check the worker log file /tmp/mjs_user/node_node_worker_05-11-01_16-52-03_953.log for more detailed information. The mjs log file /tmp/mjs_user/mjs-service.log may also contain some additional information. ===============================================================
В файлах журнала рабочего вы видите следующую информацию:
License checkout failed. License Manager Error -15 MATLAB is unable to connect to the license server. Check that the license manager has been started, and that the MATLAB client machine can communicate with the license server. Troubleshoot this issue by visiting: https://www.mathworks.com/support/lme/R2009a/15 Diagnostic Information: Feature: MATLAB_Distrib_Comp_Engine License path: /apps/matlab/etc/license.dat FLEXnet Licensing error: -15,570. System Error: 115
Если вы установили только продукт Parallel Computing Toolbox, и вы пытаетесь запустить рабочего на той же машине, вы получите эту ошибку, потому что продукт MATLAB Parallel Server не установлен, и поэтому рабочий не может получить лицензию.
Если количество процессов, созданных серверными службами на машине, запускающей операционную систему UNIX® (Linux® или Macintosh), превышает пределы операционной системы, сервисы приводят к сбою и генерируют ошибку из памяти. Рекомендуется, чтобы вы настроили свои системные пределы. Для получения дополнительной информации смотрите Рекомендуемые Системные Пределы для Macintosh и Linux (Parallel Computing Toolbox).
Много сетей сконфигурированы, чтобы не позволить LocalSystem
иметь доступ к UNC или сопоставленным сетевым ресурсам. В этом случае запустите mjs процесс при различном пользователе с правами войти в систему как сервис. Смотрите Набор Пользователь.
BASE_PORT. mjs_def
файл задает и описывает порты, требуемые менеджером по заданию и всеми рабочими. Смотрите следующий файл в установке MATLAB, используемой в каждом кластерном процессе:
(на операционных системах UNIX)matlabroot
/toolbox/parallel/bin/mjs_def.sh
(на операционных системах Windows®)matlabroot
\toolbox\parallel\bin\mjs_def.bat
Передача Заданий. На машинах рабочего, запускающих операционную систему UNIX, количество портов, требуемых MPICH для выполнения связывающихся заданий, лежит в диапазоне от BASE_PORT + 1000
к BASE_PORT + 2000
.
Прежде чем рабочие процессы запускаются, можно управлять областью значений портов, используемых рабочими в передаче заданий путем определения переменной окружения MPICH_PORT_RANGE
со значением minport:maxport
.
С pctconfig
функция, вы задаете порты, используемые клиентом. Если порты по умолчанию не могут использоваться, эта функция позволяет вам конфигурировать порты отдельно для связи с планировщиком задания и связи с pmode или параллельным пулом.
Если вы используете менеджера по заданию на кластере узлов рабочие операционные системы Windows, необходимо убедиться, что большое количество эфемерных портов TCP доступно на менеджере по заданию машина. По умолчанию максимальный допустимый эфемерный номер порта TCP на операционной системе Windows 5000, но передачи больших наборов данных могут перестать работать, если эта установка не увеличена. В частности, если ваш кластер имеет 32 или больше рабочих, необходимо увеличить максимальный допустимый эфемерный номер порта TCP с помощью следующей процедуры:
Запустите редактор реестра.
Найдите следующий подключ в реестре и нажмите Parameters:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
На окне Registry Editor выберите Edit> New> DWORD Value.
В списке записей справа, поменяйте новое имя значения на MaxUserPort
и нажмите Enter.
Щелкните правой кнопкой по MaxUserPort
имя записи и выбирает Modify.
В Редактировании диалоговое окно Значения DWORD введите 65534
в поле Value data. Выберите Decimal
для значения Base. Нажмите OK.
Этот параметр управляет максимальным номером порта, который используется, когда программа запрашивает любой доступный порт пользователя от системы. Как правило, эфемерные (недолгие) порты выделяются между значениями 1 024 и 5000 включительно. Это действие позволяет выделение для номеров портов до 65 534.
Выйдите из редактора реестра.
Перезагрузите свою машину.
Если рабочий не может установить связь с ее Планировщиком Задания MATLAB, или если клиентский сеанс не может подтвердить профиль, который использует тот планировщик, эта сила указывают на коммуникационные проблемы между узлами.
Во-первых, убедитесь, что рассматриваемые машины уславливаются о своих разрешениях IP. IP-адрес для конкретного хоста должен быть тем же самым для себя, как это с точки зрения другого хоста. Например, если процесс на hostB
не может соединиться с одним на hostA
, узнайте hostA
IP-адрес для себя, затем смотрите что IP-адрес для hostA
от hostB
. Они должны быть тем же самым.
Если машины могут идентифицировать друг друга, nodestatus
команда может быть полезна для диагностирования проблем между их процессами. Используйте функцию, чтобы определить, какие процессы MATLAB Parallel Server работают на локальном хосте, и которые доступны от удаленных хостов. Если рабочий на hostA
не может указать с его менеджером по заданию на hostB
, запустите nodestatus
на обоих хостах, чтобы видеть то, что каждый видит на hostB
.
На hostB
Выполнение:
nodestatus -remotehost hostB
Затем на hostA
, запустите точно ту же команду:
nodestatus -remotehost hostB
Результатами должно быть то же самое, показав тот же список менеджеров по заданию и рабочих.
Если выход указывает на проблемы, запустите команду снова с более высоким информационным уровнем, чтобы получить более подробную информацию:
nodestatus -remotehost hostB -infolevel 3
Можно диагностировать некоторые коммуникационные проблемы с помощью Центра Администратора.
Если вы не можете успешно добавить хосты листинга путем определения имени хоста, можно использовать их IP-адреса вместо этого (см., Добавляют Хосты). Если вы подозреваете, что любые коммуникационные проблемы, в графический интерфейсе пользователя Центра Администратора нажимают Test Connectivity (см. Тестовую Возможность соединения). Это тестирование проверяет, что узлы могут идентифицировать друг друга и позволить их процессам связываться друг с другом.
Если вы хотите использовать обнаружить кластерные возможности в Parallel Computing Toolbox, ваша сеть должна быть сконфигурирована с по крайней мере одним из следующего:
Используя DNS для кластерного открытия требует, чтобы у вас был DNS запись SRV следующей общей формы:
_mdcs._tcp.domainname.com SSSS IN SRV PPPP WWWW MJS_PORT MJS_FQDN_HOSTNAME
Части этой записи:
_mdcs._tcp.
Запись должна запуститься с этого текста, сопровождаемого вашим доменным именем (как company.com
или university.edu
) то, что клиентская машина ищет.
SSSS указывает, сколько времени (в секундах) запись DNS может кэшироваться; 3600 рекомендуется.
IN SRV
требуется как показано, указывая, что это - служебная книжка.
PPPP
и WWWW
укажите на приоритет и ожидайте значения. Они не используются, таким образом, 0 рекомендуется для каждого.
MJS_PORT
порт, на котором вы связываете с сервером Планировщика Задания MATLAB. Значение по умолчанию 27350, но если вы изменяете его для сервера, необходимо изменить его здесь соответственно.
MJS_FQDN_HOSTNAME
полностью определенное доменное имя для хоста, служащего Планировщику Задания MATLAB. Например, mjs-1.company.com
.
Допустимый DNS SRV записывает для company.com
сеть, запускающая Планировщик Задания MATLAB на машине mjs-1
может выглядеть так:
_mdcs._tcp.company.com 3600 IN SRV 0 0 27350 mjs-1.company.com
Для вашей сети создайте соответствующий DNS запись SRV использование стандартной процедуры для вашей системы DNS. Затем можно проверить, что сеть сконфигурирована с необходимым DNS записи SRV при помощи стандартных утилит, таких как nslookup
команда. Например, эта системная команда указывает на существование применимого DNS записи SRV:
nslookup -type=SRV _mdcs._tcp.company.com
Чтобы использовать многоадресную передачу, это требуется на главном узле, запускающем Планировщик Задания MATLAB и в клиентской системе.
Многоадресно передайте, в отличие от TCP/IP или UDP, основанный на подписке протокол, где много машин в сети указывают к сети на свой интерес к конкретным пакетам, происходящим где-нибудь в той сети. В отличие от этого, и UDP и пакеты TCP всегда направляются в одну машину, обычно обозначаемую ее IP-адресом.
Основные инструменты для исследования этого типа пакета:
tcpdump
для операционных систем UNIX
winpcap
и ethereal
для операционных систем Windows Microsoft®
Класс Java® включен с продуктами параллельных вычислений.
Класс Java называется com.mathworks.toolbox.distcomp.mjs.test.MulticastTester
. И его статический основной метод и его конструктор берут два входных параметра: многоадресная группа, чтобы присоединиться и номер порта, чтобы использовать.
Этот класс Java имеет много простых методов попытаться соединить заданную многоадресную группу. Если класс успешно соединил группу, он имеет методы, чтобы отправить сообщения группе, прислушаться к сообщениям от группы и отобразить то, что он получает. Можно использовать этот класс и от вызова командной строки до программного обеспечения Java и в MATLAB.
От приглашения оболочки (принимающий тот java
находится на вашем пути), ввести
java -cp distcomp.jar com.mathworks.toolbox.distcomp.mjs.test.MulticastTester
Необходимо видеть выход что-то вроде этого:
0 : host1name : 0 1 : host2name : 0
Следующий пример показывает, как использовать класс Java в MATLAB.
Запустите MATLAB на двух машинах (например, host1name
и host2name
) на который вы хотите протестировать многоадресную передачу. В каждом сеансе работы с MATLAB введите следующие команды:
m = com.mathworks.toolbox.distcomp.mjs.test.MulticastTester('239.1.1.1', 9999); m.startSendingThread; m.startListeningThread;
Эти инструкции заставляют каждый сеанс работы с MATLAB выпускать поток многоадресных тестовых пакетов и прислушиваться к тестовым пакетам. Если многоадресно переданный работает между машинами, вы видите поток линий как следующее:
0 : host1name : 0 1 : host2name : 0 2 : host2name : 1 3 : host2name : 2
Номер слева в каждом векторе символов является номером строки для полученного пакета. Текст в центре является хостом, из которого получен пакет. Номер справа является пакетным номером, отправленным передающим хостом. Нормально для хоста сообщить о тестовом пакете от себя.
Если или машина не получает поток тестовых пакетов, или если удаленный хост не включен ни в один поток, то многоадресно переданная коммуникация не действует правильно.
Чтобы отключить тестовый поток, выполните следующее в обоих сеансах работы с MATLAB:
m.stopSendingThread; m.stopListeningThread;