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

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

Общий размер всех вложенных файлов для задания ограничен 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®и 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

Для проверки подключения между клиентской машиной и компьютерами вашего вычислительного кластера можно использовать Admin Center. Для получения дополнительной информации о Admin Center, в том числе о том, как его запустить и как протестировать подключение, смотрите Start Admin Center (MATLAB Parallel Server) и Test Connectivity (MATLAB Parallel Server).

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

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

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

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

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

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

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

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

  • Планировщик заданий MATLAB использует nondefault 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...