Общий размер всех подключенных файлов для задания ограничен 4 ГБ.
По умолчанию работник в операционной системе Windows ® устанавливается как служба, работающая какLocalSystemпоэтому он не имеет доступа к подключенным сетевым дискам.
Часто сеть настроена так, чтобы не разрешать службы, работающие как LocalSystem для доступа к общим ресурсам UNC или сопоставленной сети. В этом случае вы должны запустить службу mjs под другим пользователем с правами на вход в качестве службы. См. раздел Установка пользователя (MATLAB Parallel Server) в Руководстве системного администратора MATLAB ® Parallel Server™.
Если работник не может найти функцию задачи, он возвращает сообщение об ошибке
Error using ==> feval
Undefined command/function 'function_name'.
Работник, выполнивший задачу, не имел доступа к функции function_name. Одним из решений является проверка расположения файла функции, function_name.m, включен в задание AdditionalPaths собственность. Другим решением является передача файла функции работнику путем добавления function_name.m в AttachedFiles свойство задания.
Если работник не может сохранить или загрузить файл, могут появиться сообщения об ошибках
??? Error using ==> save Unable to write file myfile.mat: permission denied. ??? Error using ==> load Unable to read file myfile.mat: No such file or directory.
При определении причины этой ошибки следует учитывать следующие вопросы:
Какова текущая папка работника?
Может ли работник найти файл или папку?
Каким пользователем работает работник?
Имеет ли работник разрешение на чтение или запись соответствующего файла?
Задание или задача может застрять в состоянии очереди. Чтобы выяснить причину этой проблемы, найдите журналы планировщика:
Планировщики платформы LSF ® могут отправлять сообщения электронной почты с сообщениями об ошибках.
Сервер Microsoft ® Windows HPC Server (включая CCS), LSF ®, PBS Pro ® и TORQUE сохраняют выходные сообщения в журнале отладки. См. разделgetDebugLog справочная страница.
При использовании общего планировщика убедитесь, что функция отправки перенаправляет сообщения об ошибках в файл журнала.
Возможные причины проблемы:
Не удалось запустить рабочий объект MATLAB из-за ошибок лицензирования, исполняемый файл не находится в пути по умолчанию на рабочем компьютере или не установлен в расположении, в котором его ожидал планировщик.
MATLAB не удалось прочитать/записать файлы ввода/вывода задания в хранилище заданий планировщика. Расположение хранилища может быть недоступно для всех рабочих узлов, или пользователь, запускаемый MATLAB, не имеет разрешения на чтение/запись файлов заданий.
При использовании общего планировщика:
Переменная среды PARALLEL_SERVER_DECODE_FUNCTION не был определен до запуска рабочего объекта MATLAB.
Функция декодирования отсутствовала в пути работника.
Если задание не возвратило результатов (т. е. fetchOutputs(job) возвращает пустой массив ячеек), вероятно, задание завершилось с ошибкой, и некоторые из его задач имеют Error набор свойств.
Для идентификации задач с сообщениями об ошибках можно использовать следующий код:
errmsgs = get(yourjob.Tasks, {'ErrorMessage'});
nonempty = ~cellfun(@isempty, errmsgs);
celldisp(errmsgs(nonempty));
Этот код отображает непустые сообщения об ошибках задач, найденных в объекте задания yourjob.
Если вы используете поддерживаемый сторонний планировщик, вы можете использовать getDebugLog для чтения журнала отладки из планировщика для определенного задания или задачи.
Например, найдите сбойное задание в планировщике LSF и прочитайте его журнал отладки:
c = parcluster('my_lsf_profile')
failedjob = findJob(c, 'State', 'failed');
message = getDebugLog(c, failedjob(1))Для проверки связи между клиентским компьютером и компьютерами вычислительного кластера можно использовать Центр администрирования. Дополнительные сведения о Центре администрирования, включая его запуск и тестирование подключения, см. в разделах Запуск Центра администрирования (параллельный сервер MATLAB) и Тестирование подключения (параллельный сервер MATLAB).
Подробные инструкции по другим методам диагностики проблем соединения между клиентом и планировщиком заданий MATLAB можно найти в некоторых отчетах об ошибках, перечисленных на веб-сайте MathWorks.
Следующие разделы помогают определить общий характер некоторых проблем с подключением.
Если вы не можете найти или подключиться к планировщику заданий MATLAB с помощью parcluster, наиболее вероятными причинами этого сбоя являются:
Планировщик заданий MATLAB в настоящее время не запущен.
Брандмауэры не разрешают трафик от клиента к планировщику заданий MATLAB.
Клиент и планировщик заданий MATLAB используют разные версии программного обеспечения.
Клиент и планировщик заданий MATLAB не могут разрешить короткие имена узлов друг друга.
Планировщик заданий MATLAB использует значение, отличное от значения по умолчанию BASE_PORT как определено в mjs_def файл и Host свойство в профиле кластера не указывает этот порт.
Если предупреждающее сообщение говорит, что планировщик заданий MATLAB не может открыть TCP-соединение с клиентским компьютером, наиболее вероятные причины этого:
Брандмауэры не разрешают трафик от планировщика заданий MATLAB к клиенту.
Планировщику заданий MATLAB не удается разрешить короткое имя узла клиентского компьютера. Использовать pctconfig для изменения имени узла, которое планировщик заданий MATLAB будет использовать для связи с клиентом.
Пример кода для универсальных планировщиков с не совместно используемыми файловыми системами связывается с сервером sftp для обработки передачи файлов в файловую систему кластера и из нее. Такое использование sftp зависит от всех обычных уязвимостей sftp. Одна из возможных проблем приводит к появлению сообщения об ошибке, подобного следующему:
Caused by:
Error using ==> RemoteClusterAccess>RemoteClusterAccess.waitForChoreToFinishOrError at 780
The following errors occurred in the
com.mathworks.toolbox.distcomp.clusteraccess.UploadFilesChore:
Could not send Job3.common.mat for job 3:
One of your shell's init files contains a command that is writing to stdout,
interfering with sftp. Access help
com.mathworks.toolbox.distcomp.remote.spi.plugin.SftpExtraBytesFromShellException:
One of your shell's init files contains a command that is writing to stdout,
interfering with sftp.
Find and wrap the command with a conditional test, such as
if ($?TERM != 0) then
if ("$TERM" != "dumb") then
/your command/
endif
endif
: 4: Received message is too long: 1718579037Показательным симптомом является фраза "Received message is too long:"за которым следует очень большое количество.
Сервер sftp запускает оболочку, обычно bash или tcsh, для установки стандартных разрешений на чтение и запись перед передачей файлов. Сервер инициализирует оболочку стандартным способом, вызывая такие файлы, как .bashrc и .cshrc. Эта проблема возникает, если оболочка выдает текст в стандартную форму при запуске. Этот текст передается обратно клиенту sftp, работающему в MATLAB, и интерпретируется как размер ответного сообщения сервера sftp.
Чтобы обойти эту ошибку, найдите код файла запуска оболочки, который испускает текст, и либо удалите его, либо заключите в скобки if инструкции для проверки запуска оболочки сервером sftp:
if ($?TERM != 0) then
if ("$TERM" != "dumb") then
/your command/
endif
endifМожно протестировать это вне MATLAB со стандартным клиентом командной строки UNIX или Windows sftp, прежде чем повторить попытку в MATLAB. Если проблема не устранена, сообщение об ошибке сохраняется:
> sftp yourSubmitMachine Connecting to yourSubmitMachine... Received message too long 1718579042
Если проблема устранена, вы должны увидеть:
> sftp yourSubmitMachine Connecting to yourSubmitMachine...