Grid[Receive] - 他ノードから送られたメッセージを受信
|
使い方
|
|
Receive()
Receive(node)
|
|
パラメータ
|
|
node
|
-
|
(オプション)メッセージ送信元のノードを表す整数
|
|
|
|
|
説明
|
|
•
|
Receive は、並列計算の過程で実行される Maple コードから利用するためのコマンドです。
|
•
|
並列ジョブが N 個のサーバー上で起動されたとします。この計算中、各サーバーは 0 から N-1 までの整数の識別番号を割り当てられます。node パラメータは、メッセージの送信元ノードを識別する整数値を指定します。
|
•
|
Receive コマンドは、指定されたノードからメッセージが到着するまでブロックします。ノードの指定がない場合、Receive は送信元がどのノードであるかにかかわらず最初に到着したメッセージを戻します。
|
•
|
全ノードが、計算終了かメッセージ待ちの状態になるとデッドロックが発生します。このようなデッドロックは検知され、ジョブは自動的に中止されます。
|
|
|
互換性
|
|
•
|
Grid[Receive] コマンドは Maple 15 より導入されています。
|
|
|
例
|
|
>
|
fib := proc()
uses Grid;
local me, n, dest;
me := MyNode():
n := NumNodes():
dest := me+1 mod n:
if me=0 then
# create a message
msg := [1,1];
# send it on to node number 1
Send(dest, msg);
# wait for a message to come back
return Receive();
else
# wait for a message to arrive
msg := Receive(me-1);
# add to the sequence and send it on to the next node
Send(dest, [op(msg),msg[-1]+msg[-2]] );
end if;
end proc;
|
Warning, `msg` is implicitly declared local to procedure `fib`
| |
| (5.1) |
>
|
Grid:-Launch(fib,numnodes=8);
|
| (5.2) |
|
|
Download Help Document
Was this information helpful?