ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

for

分散範囲に対する for ループ

構文

FOR variable = drange(colonop)
    statement
    ...
    statement
end

説明

一般的な形式は、次のとおりです。

FOR variable = drange(colonop)
    statement
    ...
    statement
end

colonopstart:increment:finish または start:finish の形式をもつ式です。インクリメントの既定値は 1 です。colonopcodistributed.colon により、ほぼ等しい長さをもつ numlabs 個の隣接するセグメントに分割されます。各セグメントは個々のワーカーで通常の for ループの反復子になります。

ループ本体の最も重要な特性は、各反復が他の反復から独立していなければならないことです。論理的には、反復は任意の順序で実行できます。ループ本体内では、他のワーカーとの通信は許可されていません。通信を行う関数は gopgcatgpluscodistributorcodistributedgather および redistribute です。

各ワーカーでローカルな対話型分散配列の部分にアクセスすることはできますが、対話型分散配列の他の部分にはアクセスできません。

break ステートメントはループを途中で終了するために使用されます。

魔方陣のランクを検出します。対話型分散配列のローカル部分のみにアクセスします。

r = zeros(1, 40, codistributor());
for n = drange(1:40)
   r(n) = rank(magic(n));
end
r = gather(r);

πのモンテ・カルロ近似を実行します。各ワーカーは異なる乱数状態になるよう初期化されます。

m = 10000;
for p = drange(1:numlabs)
   z = rand(m, 1) + i*rand(m, 1);
   c = sum(abs(z) < 1)
end
k = gplus(c)
p = 4*k/(m*numlabs);

フィボナッチ数の計算を試みます。ループ本体同士が依存関係にあるため、これは "機能しません"。

f = zeros(1, 50, codistributor());
f(1) = 1;
f(2) = 2;
for n = drange(3:50)
   f(n) = f(n - 1) + f(n - 2)
end

参考

| |

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