このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
トラブルシューティングとデバッグ
添付ファイルのサイズ制限
ジョブのすべての添付ファイルを合わせた総サイズは 4 GB に制限されています。
ファイル アクセスと権限
Windows オペレーティング システムのワーカーによるファイルへの確実なアクセス
既定では、Windows® オペレーティング システムのワーカーは、LocalSystem
として実行されるサービスとしてインストールされているため、マッピングされたネットワーク ドライブにはアクセスできません。
多くの場合、ネットワークは、LocalSystem
として実行されているサービスが UNC やマッピングされたネットワーク共有にアクセスできないように構成されています。このような場合には、サービスとしてログオンする権限をもつ別のユーザーとして mjs サービスを実行しなければなりません。『MATLAB® Parallel Server™ システム管理者ガイド』のユーザーの設定 (MATLAB Parallel Server)の節を参照してください。
タスク関数が利用不可
ワーカーがタスク関数を見出せない場合は、エラー メッセージを返します。
Error using ==> feval Undefined command/function 'function_name'.
このタスクを実行したワーカーは関数 function_name
にアクセスしていません。1 つの解決法は、関数のファイル function_name.m
の場所をジョブの AdditionalPaths
プロパティに必ず含めるようにすることです。もう 1 つの解決法は、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.
このエラーの原因を特定するには、以下の質問を検討してください。
ワーカーの現在のフォルダーはどれか
ワーカーはそのファイルまたはフォルダーを見つけることができるか
どのユーザーとしてワーカーが実行されているか
ワーカーに問題のファイルの読み取りまたは書き込み権限があるか
タスクまたはジョブが queued 状態で残留
ジョブまたはタスクが待機状態のままになる場合があります。この問題の原因を調べるには、スケジューラのログを探索します。
Spectrum LSF® スケジューラはエラー メッセージの記載された電子メールを送信する場合があります。
Microsoft® Windows HPC Server (CCS を含む)、LSF®、PBS Pro®、TORQUE は、出力メッセージをデバッグ ログに保存します。
getDebugLog
のリファレンス ページを参照してください。汎用スケジューラを使用する場合は、投入関数によりエラー メッセージがログ ファイルにリダイレクトされるようにします。
問題の原因としては以下の可能性が考えられます。
MATLAB ワーカーがライセンス エラーのため起動できなかった。あるいは、実行可能ファイルがワーカーのマシンの既定のパスにないか、またはスケジューラで想定されている場所にインストールされていない。
MATLAB がスケジューラのジョブ保存場所でジョブの入出力ファイルを読み取り/書き込みできなかった。保存場所が一部のワーカー ノードからアクセスできないか、または MATLAB を実行しているユーザーにジョブ ファイルの読み取り/書き込み権限がない。
汎用スケジューラを使用し、以下の条件に合致する場合。
MATLAB ワーカーが起動する前に、環境変数
PARALLEL_SERVER_DECODE_FUNCTION
が定義されていなかった。デコード関数がワーカーのパスになかった。
結果なしまたはジョブの失敗
タスク エラー
ジョブで結果が返されなかった (つまり、fetchOutputs(job)
で空の cell 配列が返された) 場合は、おそらくジョブが失敗し、そのタスクの一部に 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 の Web サイトにあるバグ レポートの一部に記載されています。
以下の節は、一部の接続障害の一般的性質を確認するために役立ちます。
クライアントが MATLAB ジョブ スケジューラを認識しない
parcluster
を使用して MATLAB ジョブ スケジューラが見つからない場合、または接続できない場合、このエラーの原因として最も可能性が高いものは次のとおりです。
MATLAB ジョブ スケジューラが現在実行されていない。
クライアントから MATLAB ジョブ スケジューラへのトラフィックがファイアウォールにより許可されない。
クライアントと MATLAB ジョブ スケジューラが同じバージョンのソフトウェアを実行していない。
クライアントと MATLAB ジョブ スケジューラが互いの短いホスト名を解決できない。
MATLAB ジョブ スケジューラが、
mjs_def
ファイルに定義されている既定とは異なるBASE_PORT
設定を使用し、クラスター プロファイルのHost
プロパティにこのポートが指定されていない。
MATLAB ジョブ スケジューラがクライアントを認識しない
MATLAB ジョブ スケジューラがクライアント コンピューターへの TCP 接続を開くことができないという警告メッセージが表示される場合、原因として最も可能性が高いものは次のとおりです。
MATLAB ジョブ スケジューラからクライアントへのトラフィックがファイアウォールにより許可されない。
MATLAB ジョブ スケジューラがクライアント コンピューターの短いホスト名を解決できない。
pctconfig
を使用して、MATLAB ジョブ スケジューラがクライアントへの接続に使用するホスト名を変更してください。
"シェルの init ファイルの 1 つに、stdout への書き込み行うコマンドが含まれています..."
非共有ファイル システムを使用する次の汎用スケジューラの例では、sftp サーバーに接続トして、クラスターのファイル システムとの間のファイル送受信を処理しています。この sftp の使用には、通常の sftp の脆弱性がすべて伴います。1 つの問題発生に際して、以下のようなエラー メッセージが表示されたとします。
One of your shell's init files contains a command that is writing to stdout, interfering with RemoteClusterAccess. The stdout read was: <some output> Find and wrap the command with a conditional test, such as if ($?TERM != 0) then if ("$TERM" != "dumb") then <your command> endif endif
sftp サーバーは通常 bash または tcsh のシェルを起動し、標準的な読み取りおよび書き込み権限を適切に設定してから、ファイルを転送します。サーバーはシェルを標準的な方法で初期化し、.bashrc および .cshrc のようなファイルを呼び出します。この問題は、起動時にシェルがテキストを標準出力へと送り出す場合に発生します。テキストは MATLAB 内で実行されている sftp クライアントに返送され、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...