Общий размер всех вложенных файлов для задания ограничен 4 ГБ.
По умолчанию рабочий процесс в Windows® операционная система установлена как служба, работающая как LocalSystem
, поэтому он не имеет доступа к сопоставленным сетевым дискам.
Часто сеть сконфигурирована таким образом, чтобы не разрешать работу служб как LocalSystem
для доступа к UNC или сопоставленным сетевым общим ресурсам. В этом случае необходимо запустить сервис mjs под другим пользователем с правами входа как сервис. Смотрите раздел Set the User (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))
Для проверки подключения между клиентской машиной и компьютерами вашего вычислительного кластера можно использовать Admin Center. Для получения дополнительной информации о Admin Center, в том числе о том, как его запустить и как протестировать подключение, смотрите Start Admin Center (MATLAB Parallel Server) и Test Connectivity (MATLAB Parallel Server).
Подробные инструкции для других методов диагностики проблем соединения между клиентом и планировщиком заданий MATLAB можно найти в некоторых отчетах об ошибках, перечисленных на веб-сайте MathWorks.
Следующие разделы могут помочь вам определить общий характер некоторых проблем с соединением.
Если вы не можете найти или соединиться с планировщиком заданий MATLAB с parcluster
наиболее вероятными причинами этого отказа являются:
В настоящее время планировщик заданий MATLAB не выполняется.
Брандмауэры не разрешают трафик от клиента к планировщику заданий MATLAB.
Клиент и планировщик заданий MATLAB выполняют не ту же версию программного обеспечения.
Клиент и планировщик заданий MATLAB не могут разрешить короткие имена хостов друг друга.
Планировщик заданий MATLAB использует nondefault 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...