Grid[Send] - ノードから他ノードへメッセージを送信
|
パラメータ
|
|
node
|
-
|
メッセージの送信先ノードを表す整数
|
msg
|
-
|
送信するメッセージ(任意の Maple 表現)
|
|
|
|
|
説明
|
|
•
|
Send は、並列計算の過程で実行される Maple コードから利用するためのコマンドです。
|
•
|
並列ジョブが N 個のサーバー上で起動されたとします。この計算中、各サーバーは 0 から N-1 までの整数の識別番号を割り当てられます。node パラメータは、メッセージの送信先ノードを識別する整数値を指定します。
|
•
|
グリッドサーバーの受信バッファーは、利用可能なメモリの量だけに制限されます。つまり、Send コマンドはネットワーク上でデータを伝送している時間だけブロックすることになります。
|
•
|
送信先ノードが Receive コマンドでメッセージを受信する前に Send コマンドは戻ります。戻り値は必ず NULL になります。
|
•
|
全ノードが、計算終了かメッセージ待ちの状態になるとデッドロックが発生します。このようなデッドロックは検知され、ジョブは自動的に中止されます。
|
|
|
互換性
|
|
•
|
Grid[Send] コマンドは Maple 15 から導入されています。
|
|
|
例
|
|
この例では、ノード 0 はノード 1 にメッセージを送り、ノード 1 はそれに内容を追加してノード 2 に送り、という操作を繰り返します。全ノードがメッセージを見たら、最後の結果をノード 0 に送り返します。
>
|
circ := proc()
uses Grid;
local r, me := MyNode(), n := NumNodes();
if me = 0 then
Send(1,0);
r := Receive(n-1);
else
r := Receive(me-1);
Send(me+1 mod n, r, me);
end if;
end;
|
| (5.1) |
>
|
[ Grid:-Launch(circ,numnodes=4) ];
|
| (5.2) |
|
|
Download Help Document
Was this information helpful?