ドキュメンテーション

このページは前リリースの情報です。該当の英語のページはこのリリースで変更されています。最新情報を確認するには、ページ左下にある国リストで [United States] を選択し、英語ドキュメンテーションに切り替えてください。

プログラミングのヒント

MATLAB パス

spmd ステートメントを実行するすべてのワーカーは、共通のコード ブロック内で呼び出されるすべての関数を実行できるよう、クライアントと同じ MATLAB® 検索パスが設定されていなければなりません。このため、クライアントで cdaddpath または rmpath を使用する場合、そのコマンドは可能な範囲ですべてのワーカーでも実行されます。詳細は、parpool のリファレンス ページを参照してください。ワーカーをクライアントと異なるプラットフォームで実行する場合は、関数 pctRunOnAll を使用してすべてのワーカーに MATLAB パスを適切に設定してください。

エラー処理

spmd ステートメントの実行中にワーカーで発生したエラーは、クライアントにレポートされます。クライアントはすべてのワーカーでの実行の中断を試み、ユーザーにエラーをスローします。

ワーカーで生成されたエラーと警告にはワーカー ID (labindex) が付けられ、MATLAB クライアントで受信された順にクライアントのコマンド ウィンドウに表示されます。

lastwarnspmd 本体内で使用されている場合、その動作は spmd の最後では指定されません。

spmd の制限

入れ子関数

関数内では、spmd ステートメントの本体から「入れ子関数」を直接参照することはできません。ただし、入れ子関数の関数ハンドルとして定義された変数を使用して入れ子関数を呼び出すことはできます。

spmd 本体はワーカーで実行されるため、spmd ステートメント内で呼び出される入れ子関数で変数が更新されても、その変数は外部の関数のワークスペースでは更新されません。

無名関数

spmd ステートメントの本体では「無名関数」は定義できません。ただし、関数ハンドルを使用して無名関数を参照することはできます。

入れ子にされた spmd ステートメント

spmd ステートメントの本体に別の spmd を直接含めることはできません。ただし、別の spmd ステートメントを含む関数を呼び出すことはできます。内側の spmd ステートメントは別の並列プールでは並列実行されず、そのステートメントが含まれる関数を実行するワーカーの単一スレッドで逐次実行されます。

入れ子にされた parfor ループ

parfor ループの本体に spmd ステートメントを含めることはできず、spmd ステートメントに parfor ループを含めることはできません。

break および return ステートメント

spmd ステートメントの本体に、break または return ステートメントを含めることはできません。

グローバル変数および永続変数

spmd ステートメントの本体に、global または persistent の変数宣言を含めることはできません。

詳細

この情報は役に立ちましたか?