ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Future

並列プール ワーカーまたは MATLAB クライアントでの関数の実行を要求

説明

Future オブジェクトは、並列プール ワーカーまたは MATLAB® クライアントで実行される関数を表します。

作成

Future オブジェクトを作成する方法はいくつかあります。

  • parfeval を使用して、並列プールのワーカーで実行される関数を指定する。関数 parfeval は、関数の実行を表して結果を保持する FevalFuture オブジェクトを作成します。FevalFutures を複数作成する場合は、parfeval を複数回呼び出します。たとえば、FevalFutures のベクトルを for ループで作成できます。

  • parfevalOnAll を使用して、並列プールの各ワーカーで実行される関数を指定する。関数 parfevalOnAll は、関数の実行を表して結果を保持する FevalOnAllFuture オブジェクトを作成します。

  • afterAll を使用して、すべての Future オブジェクトが完了した後に MATLAB クライアントで実行される関数を指定する。関数 afterAll は、関数の実行を表して結果を保持する AfterAllFuture オブジェクトを作成します。

  • afterEach を使用して、個々の Future オブジェクトが完了した後に MATLAB クライアントで実行される関数を指定する。関数 afterEach は、関数の実行を表して結果を保持する AfterEachFuture オブジェクトを作成します。

次の表は、使用可能な Future オブジェクトのタイプの説明をまとめています。

Future オブジェクト説明
FevalFuture単一の parfeval Future インスタンス
FevalOnAllFutureparfevalOnAll Future インスタンス
AfterAllFutureafterAll Future インスタンス
AfterEachFutureafterEach Future インスタンス

Future オブジェクトはローカル オブジェクトであり、それを作成した MATLAB セッションでのみアクセスできます。

プロパティ

すべて展開する

一般オプション

このプロパティは読み取り専用です。

この Future が作成された日付と時刻。datetime オブジェクトとして指定します。

データ型: datetime

このプロパティは読み取り専用です。

エラー情報。例外として指定します。Future がエラーなしで完了した場合、このフィールドは空になります。

このプロパティは読み取り専用です。

この Future の実行が完了した日付と時刻。datetime オブジェクトとして指定します。

データ型: datetime

このプロパティは読み取り専用です。

評価対象の関数。関数ハンドルとして指定します。

例: @rand

データ型: function_handle

このプロパティは読み取り専用です。

Future の数値識別子。整数として指定します。

データ型: double

このプロパティは読み取り専用です。

実行する関数の入力引数。cell 配列として指定します。

例: {[1]}

例: {[1,2], [2,1]}

データ型: cell

このプロパティは読み取り専用です。

実行する関数により返される引数の数。整数として指定します。

データ型: double

このプロパティは読み取り専用です。

出力引数。実行を完了した実行関数からの結果の cell 配列として指定します。エラーが発生して Future が完了した場合、このフィールドは空になります。エラーを確認するには、Error プロパティをチェックします。

例: {[3.14]}

データ型: cell

このプロパティは読み取り専用です。

この Future の実行が開始された日付と時刻。datetime オブジェクトとして指定します。

データ型: datetime

このプロパティは読み取り専用です。

Future の現在の状態。'pending''queued''running''finished''failed' または 'unavailable' の値のいずれかとして指定します。

データ型: char

FevalFuture のオプション

このプロパティは読み取り専用です。

関数の実行により生成されるテキスト。char 配列として指定します。

データ型: char

このプロパティは読み取り専用です。

この Future を含む Future オブジェクトのキュー。FevalQueue として指定します。実行中またはキューに登録されている Future オブジェクトの数を特定するには、このキューをチェックします。

データ型: FevalQueue

このプロパティは読み取り専用です。

出力が fetchNext または fetchOutputs によって読み取り済みかどうかを示す指標。logical として指定します。

データ型: logical

FevalOnAllFuture のオプション

このプロパティは読み取り専用です。

関数の実行により生成されるテキスト。各ワーカーに関するテキストを含む文字配列の cell 配列として指定します。

データ型: cell

このプロパティは読み取り専用です。

この Future を含む Future オブジェクトのキュー。FevalQueue として指定します。実行中またはキューに登録されている Future オブジェクトの数を特定するには、このキューをチェックします。

データ型: FevalQueue

オブジェクト関数

すべて展開する

afterAllすべての parallel.Future の完了後に呼び出す関数を指定
afterEachparallel.Future が完了するたびに呼び出す関数を指定する
cancelキューに登録されている Future または実行中の Future をキャンセルする
fetchOutputsFuture からのすべての出力引数を取得する
isequalFuture の ID が同じであれば true を返す
waitFuture が完了するまで待機する
fetchNext利用可能な次の未読の FevalFuture 出力を取得する

すべて折りたたむ

afterEach afterAll を組み合わせて、Future の結果に対して、さらに関数を自動的に呼び出すことができます。afterEachafterAll はいずれも、afterEachafterAll で再利用可能な future 変数を生成します。

parfeval を使用して、ワーカーで乱数ベクトルを計算します。parfevalparpool が作成されていなければ、自動的に既定の設定で作成します。

for idx= 1:10
    f(idx) = parfeval(@rand, 1, 1000, 1);
end
Starting parallel pool (parpool) using the 'local' profile ...
connected to 8 workers.

ベクトルが使用可能になったら、各ベクトルの最大要素を計算します。afterEach は、Future が使用可能になったら、各 Future の出力に対して関数ハンドルを実行し、別の Future を作成して結果を格納します。

maxFuture = afterEach(f, @(r) max(r), 1);

これらの最小値を計算するために、この新しい Future について afterAll を呼び出します。afterAll は、すべての Future が完了した後、すべての Future の出力引数の結合に対して関数を実行します。この場合、afterAll は、maxFuture の完了後にその出力に対して関数 min を実行し、別の Future を作成して結果を格納します。

minFuture = afterAll(maxFuture, @(r) min(r), 1);

この結果は、fetchOutputs を使用して取得できます。fetchOutputs は、Future が結果の収集を完了するまで待ちます。

fetchOutputs(minFuture)
ans = 0.9973

fetchOutputs を future 変数で呼び出して、afterEach の結果を確認できます。

fetchOutputs(maxFuture)
ans = 10×1

    0.9996
    0.9989
    0.9994
    0.9973
    1.0000
    1.0000
    0.9989
    0.9994
    0.9998
    0.9999

R2013b で導入