Grid[Seq] - グリッド上で計算を分配して数列を生成
|
使い方
|
|
Seq( f, i=m..n ))
Seq( f, i=x ))
|
|
パラメータ
|
|
f
|
-
|
任意の式
|
i
|
-
|
名前
|
m, n
|
-
|
数値
|
x
|
-
|
式
|
|
|
|
|
説明
|
|
•
|
Seq コマンドは並列計算により数列を構築します。最も一般的な使用法は、Seq(f(i), i = 1..n) で、その場合数列 f(1), f(2), ..., f(n) を生成します。各 f(i) の計算は、利用可能な全ノードにわたり均等に分配されます。
|
•
|
Seq コマンドはトップレベルコマンド seq と Threads[Seq] コマンドに似ています。トップレベルコマンド seq は数列全体を直列的に評価します。Threads[Seq] コマンドは、数列の要素を同一プロセス内で別々のスレッドに乗せて並列に処理します。Grid[Seq] コマンドは、数列の要素を別々のプロセスに乗せて並列に処理しますが、この場合はプロセスを複数マシンに分配することも可能です。
|
•
|
Seq は並列計算の全ノードで呼び出されることを想定しています。グリッド外の非計算ノードから、並列計算の一部としてでなく呼び出された場合、Seq は Launch コマンドにより全ノードで同コマンドを起動しようとします。そのとき、f を解析し、f 内にあるアサインされた値を各グリッドノードに予め入れておきます。この方法でほとんどのケースに対応できますが、頑健な方法ではありません。
|
•
|
Seq には Maple の seq コマンドの特殊評価ルールは該当しません。x パラメータでは、一次元を超える構造(行列など)は現在利用できません。
|
•
|
Seq の計算結果はノード 0 でのみ利用可能です。結果として得られる Maple 数式を使って他のノードでさらに計算を進める場合、Send と Receive を用いて直接送る必要があります。
|
|
|
互換性
|
|
•
|
Grid[Seq] コマンドは Maple 15 より導入されています。
|
|
|
例
|
|
>
|
[ Grid[Seq]( i, i=1..4 ) ];
|
| (5.1) |
>
|
f := proc(x,y)
if x > 0 then
trunc(x) + y;
else
y^2 + x;
end if;
end proc;
|
| (5.2) |
| (5.3) |
>
|
g := proc(x) trunc(x) end:
|
>
|
[ Grid:-Seq( 'f(g(i)*a,i)', i=[1.1,2.2,3.3,4.4] ) ];
|
| (5.4) |
>
|
cmd := proc()
uses Grid;
local f, g, a, y;
f := proc(x,y)
if x > 0 then
trunc(x) + y;
else
y^2 + x;
end if;
end proc;
a := 2;
g := proc(x) trunc(x) end:
Seq( 'f(g(i)*a,i)', i=[1.1,2.2,3.3,4.4] );
end proc;
|
| (5.5) |
| (5.6) |
|
|
Download Help Document
Was this information helpful?