В этом разделе содержатся рекомендации по решению проблем, которые могут возникнуть при использовании программного обеспечения 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 (Parallel Computing Toolbox) указывает порты, используемые клиентом. Если порты по умолчанию использовать нельзя, эта функция позволяет настраивать порты отдельно для связи с планировщиком заданий и связи с параллельным пулом.
При использовании диспетчера заданий на кластере узлов под управлением операционных систем Windows необходимо убедиться, что на компьютере диспетчера заданий доступно большое количество эфемерных TCP-портов. По умолчанию максимальный допустимый номер порта TCP в операционной системе Windows составляет 5000, но передача больших наборов данных может завершиться ошибкой, если этот параметр не будет увеличен. В частности, если кластер содержит 32 или более работников, необходимо увеличить максимально допустимый номер порта ephemeral TCP с помощью следующей процедуры:
Запустите редактор реестра.
Найдите следующий подраздел в реестре и щелкните Параметры:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
В окне «Редактор реестра» выберите «Редактирование» > «Создать» > «Значение DWORD».
В списке записей справа измените имя нового значения на MaxUserPort и нажмите Enter.
Щелкните правой кнопкой мыши MaxUserPort и выберите «Изменить».
В диалоговом окне «Редактирование значения DWORD» введите 65534 в поле Данные значения. Выбрать Decimal для базового значения. Нажмите кнопку ОК.
Этот параметр управляет максимальным номером порта, который используется при запросе программой любого доступного пользовательского порта из системы. Как правило, эфемерные (кратковременные) порты распределяются между значениями 1024 и 5000 включительно. Это действие позволяет выделить для номеров портов до 65534.
Выйдите из редактора реестра.
Перезагрузите компьютер.
Если работник не может установить соединение со своим планировщиком заданий MATLAB или если сеанс клиента не может проверить профиль, использующий этот планировщик, это может указывать на проблемы связи между узлами.
Во-первых, убедитесь, что рассматриваемые машины согласовывают свои IP-решения. IP-адрес для конкретного хоста должен быть таким же, как и для другого хоста. Например, если процесс включен hostB не удается подключиться к одному на hostA, узнайте hostA IP-адрес сам по себе, а затем посмотреть, какой IP-адрес для hostA является от hostB. Они должны быть одинаковыми.
Если машины могут идентифицировать друг друга, nodestatus может быть полезна для диагностики проблем между их процессами. Используйте функцию, чтобы определить, какие процессы параллельного сервера MATLAB выполняются на локальном хосте, а какие доступны с удаленных хостов. Если работник включен hostA не может зарегистрироваться у своего менеджера по заданиям на hostB, выполнить nodestatus на обоих хостах, чтобы увидеть, что каждый может видеть на hostB.
На hostB, выполнить:
nodestatus -remotehost hostB
Затем на hostA, выполните точно такую же команду:
nodestatus -remotehost hostB
Результаты должны быть одинаковыми, показывая один и тот же список руководителей и работников.
Если выходные данные указывают на наличие проблем, выполните команду еще раз с более высоким уровнем информации для получения более подробной информации:
nodestatus -remotehost hostB -infolevel 3
Некоторые проблемы связи можно диагностировать с помощью Центра администрирования.
Если невозможно успешно добавить хосты в список, указав их имя, можно использовать их IP-адреса (см. Добавление хостов). При подозрении на неполадки связи в графическом интерфейсе Центра администрирования щелкните Проверить подключение (см. раздел Проверка подключения). Это тестирование проверяет, что узлы могут идентифицировать друг друга и позволять своим процессам взаимодействовать друг с другом.
Если вы хотите использовать возможности кластера обнаружения в Parallel Computing Toolbox, сеть должна быть настроена, по крайней мере, с одним из следующих компонентов:
При использовании DNS для обнаружения кластера требуется SRV-запись DNS для каждого домена. Можно иметь несколько SRV-записей DNS для нескольких планировщиков заданий MATLAB. Используйте следующую общую форму для каждой SRV-записи DNS.
_mdcs._tcp.<domain> <TTL> IN SRV <priority> <weight> <port> <hostname>.
Создайте SRV-запись DNS для сервера планировщика заданий MATLAB, используя следующие части.
<domain> является именем домена (например, company.com или university.edu), которую клиентская машина ищет.
<TTL> указывает время (в секундах) кэширования DNS-записи. 3600 рекомендуется.
IN SRV требуется, как показано на рисунке, что указывает на то, что это служебная запись.
<priority> и <weight> укажите значения приоритета и веса. При создании нескольких SRV-записей DNS можно указать их приоритет с помощью этих полей. Значение 0 рекомендуется для каждого. Ниже <priority> является, чем более высокий приоритет имеет хост. Когда две записи имеют одно и то же <priority>, запись с самым высоким <weight> используется в первую очередь. Используйте <weight> для указания предпочтения сервера.
<port> - порт, через который выполняется подключение к серверу планировщика заданий MATLAB. Порт по умолчанию: 27350. При изменении порта для сервера планировщика заданий MATLAB измените <port> соответственно.
<hostname> является полным доменным именем узла, обслуживающего планировщик заданий MATLAB. Машина mjs-1 в домене company.com имеет полное доменное имя mjs-1.company.com.
Допустимая SRV-запись DNS для company.com сеть, выполняющая планировщик заданий MATLAB на компьютере mjs-1 может выглядеть следующим образом:
_mdcs._tcp.company.com 3600 IN SRV 0 0 27350 mjs-1.company.com.
Примечание
Если для нахождения кластера требуется несколько доменов, используйте SRV-запись DNS для каждого домена. Если сеть, к которой обращаются пользователи через VPN, имеет различные SRV-записи DNS во внутренней сети, убедитесь, что SRV-запись DNS существует для каждого домена.
Используйте стандартную процедуру для системы DNS, чтобы создать соответствующие SRV-записи DNS. Можно использовать стандартные утилиты, такие как nslookup для проверки конфигурации сети с необходимыми SRV-записями DNS. Проверка записей DNS SRV планировщика заданий MATLAB для company.com выполните следующую команду.
nslookup -type=SRV _mdcs._tcp.company.com
Для использования многоадресной передачи она требуется на головном узле, на котором запущен планировщик заданий MATLAB, и в клиентской системе.
Многоадресная передача, в отличие от TCP/IP или UDP, является протоколом на основе подписки, где ряд машин в сети указывают сети на их интерес к конкретным пакетам, исходящим где-то в этой сети. Напротив, пакеты UDP и TCP всегда привязаны к одной машине, обычно обозначаемые ее IP-адресом.
Основными инструментами для исследования этого типа пакетов являются:
tcpdump для операционных систем UNIX
winpcap и ethereal для операционных систем Microsoft ® Windows
Класс 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;