Поиск и устранение проблем и отладка

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

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

Доступ к файлу и полномочия

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

По умолчанию, рабочий на 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®, и ЗАКРУТИТЕ, сохраняют выходные сигналы в журнале отладки. Смотрите 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 Parallel Server) и Тестовая Возможность соединения (MATLAB Parallel Server).

Подробные инструкции для других методов диагностирования проблем связи между клиентом и Планировщиком Задания 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 сервер запускает интерпретатор, обычно колотите или 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...