exponenta event banner

Устранение неполадок и отладка

Ограничения по размеру прикрепленных файлов

Общий размер всех подключенных файлов для задания ограничен 4 ГБ.

Доступ к файлам и разрешения

Обеспечение доступа работников операционных систем Windows к файлам

По умолчанию работник в операционной системе 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).

Подробные инструкции по другим методам диагностики проблем соединения между клиентом и планировщиком заданий MATLAB можно найти в некоторых отчетах об ошибках, перечисленных на веб-сайте MathWorks.

Следующие разделы помогают определить общий характер некоторых проблем с подключением.

Клиент не может увидеть планировщик заданий MATLAB

Если вы не можете найти или подключиться к планировщику заданий MATLAB с помощью parcluster, наиболее вероятными причинами этого сбоя являются:

  • Планировщик заданий MATLAB в настоящее время не запущен.

  • Брандмауэры не разрешают трафик от клиента к планировщику заданий MATLAB.

  • Клиент и планировщик заданий MATLAB используют разные версии программного обеспечения.

  • Клиент и планировщик заданий MATLAB не могут разрешить короткие имена узлов друг друга.

  • Планировщик заданий MATLAB использует значение, отличное от значения по умолчанию BASE_PORT как определено в mjs_def файл и Host свойство в профиле кластера не указывает этот порт.

Планировщик заданий MATLAB не может видеть клиента

Если предупреждающее сообщение говорит, что планировщик заданий MATLAB не может открыть TCP-соединение с клиентским компьютером, наиболее вероятные причины этого:

  • Брандмауэры не разрешают трафик от планировщика заданий MATLAB к клиенту.

  • Планировщику заданий MATLAB не удается разрешить короткое имя узла клиентского компьютера. Использовать pctconfig для изменения имени узла, которое планировщик заданий MATLAB будет использовать для связи с клиентом.

Ошибка SFTP: получено слишком длинное сообщение

Пример кода для универсальных планировщиков с не совместно используемыми файловыми системами связывается с сервером 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...