mpi.send(Rmpi)
mpi.send()所属R语言包:Rmpi
MPI\_Send, MPI\_Isend, MPI\_Recv, and MPI\_Irecv APIs
MPI \ _Send,MPI \ _Isend,MPI \ _Recv,和MPI \ _Irecv的API
译者:生物统计家园网 机器人LoveR
描述----------Description----------
The pair mpi.send and mpi.recv are two most used blocking calls for point-to-point communications. An int, double or char vector can be transmitted from any source to any destination.
对mpi.send和mpi.recv是两个最常用的点至点的通讯阻塞调用。一个整数,双精度或字符向量可以传输从任何源到任何目的地。
The pair mpi.isend and mpi.irecv are the same except that they are nonblocking calls.
的对mpi.isend和mpi.irecv是一样的,除了他们是非阻塞的调用。
Blocking and nonblocking calls are interchangeable, e.g., nonblocking sends can be matched with blocking receives, and vice-versa.
阻塞和非阻塞的调用是可以互换的,例如,非阻塞发送,可与阻塞接收,反之亦然。
用法----------Usage----------
mpi.send(x, type, dest, tag, comm = 1)
mpi.isend(x, type, dest, tag, comm = 1, request=0)
mpi.recv(x, type, source, tag, comm = 1, status = 0)
mpi.irecv(x, type, source, tag, comm = 1, request = 0)
参数----------Arguments----------
参数:x
data to be sent or received. Must be the same type for source and destination. The receive buffer must be as large as the send buffer.
数据的发送或接收。必须是相同类型的源和目标。接收缓冲区必须是一样大的发送缓冲区。
参数:type
1 for integer, 2 for double, and 3 for character. Others are not supported.
1为整数,2双,和3的每个字符。其他不被支持。
参数:dest
the destination rank. Use mpi.proc.null for a fake destination.
目的地排名。使用mpi.proc.null的假目标。
参数:source
the source rank. Use mpi.any.source for any source. Use mpi.proc.null for a fake source.
来源排名。使用mpi.any.source任何来源。使用mpi.proc.null一个假冒的源。
参数:tag
non-negative integer. Use mpi.any.tag for any tag flag.
非负整数。使用mpi.any.tag的任何标记的标志。
参数:comm
a communicator number.
传播者数量。
参数:request
a request number.
的请求号码。
参数:status
a status number.
状态数。
Details
详细信息----------Details----------
The pair mpi.send (or mpi.isend) and mpi.recv (or mpi.irecv) must be used together, i.e., if there is a sender, then there must be a receiver. Any mismatch will result a deadlock situation, i.e., programs stop responding. The receive buffer must be large enough to contain an incoming message otherwise programs will be crashed. One can use mpi.probe (or mpi.iprobe) and mpi.get.count to find the length of an incoming message before calling mpi.recv. If mpi.any.source or mpi.any.tag is used in mpi.recv, one can use mpi.get.sourcetag to find out the source or tag of the received message. To send/receive an R object rather than an int, double or char vector, please use the pair mpi.send.Robj and mpi.recv.Robj.
对mpi.send(mpi.isend)mpi.recv(mpi.irecv)必须一起使用,例如,如果有一个发送者,那么就必须有一个接收器。任何不匹配将导致死锁的情况,即,程序停止响应。接收缓冲区必须足够大,以包含传入的消息,否则程序将崩溃。我们可以使用mpi.probe(或mpi.iprobe)和mpi.get.count找到的传入消息的长度,然后再调用mpi.recv。如果mpi.any.source或mpi.any.tag中mpi.recv,人们可以使用mpi.get.sourcetag找到了接收到的消息源或标签。发送/接收的R对象,而不是一个整数,双精度或char矢量,请使用对mpi.send.Robj和mpi.recv.Robj。
Since mpi.irecv is a nonblocking call, x with enough buffer must be created before using it. Then use nonblocking completion calls such as mpi.wait or mpi.test to test if x contains data from sender.
由于mpi.irecv是一个非阻塞检测,x的在使用它之前必须建立足够的缓冲。如mpi.wait或mpi.test测试x包含来自发送方的数据,然后使用非阻塞完成调用。
If multiple nonblocking sends or receives are used, please use request number consecutively from 0. For example, to receive two messages from two slaves, try mpi.irecv(x,1,source=1,tag=0,comm=1,request=0) mpi.irecv(y,1,source=2,tag=0,comm=1,request=1) Then mpi.waitany, mpi.waitsome or mpi.waitall can be used to complete the operations.
如果有多个非阻塞发送或接收使用,请使用请求数从0连续。例如,收到两条消息,从两个奴隶,尝试mpi.irecv(x,1,源= 1,标记= 0,COMM = 1,请求= 0)mpi.irecv(Y,1,源= 2,标签= 0,通讯= 1,请求= 1),然后mpi.waitany,mpi.waitsome或mpi.waitall可以用来完成操作。
值----------Value----------
mpi.send and mpi.isend return no value. mpi.recv returns the int, double or char vector sent from source. However, mpi.irecv returns no value. See details for explanation.
mpi.send和mpi.isend没有返回值。 mpi.recv返回整数,双精度或char矢量发送source。然而,mpi.irecv没有返回值。查看详细解释。
(作者)----------Author(s)----------
Hao Yu
参考文献----------References----------
http://www-unix.mcs.anl.gov/mpi/www/www3/
参见----------See Also----------
mpi.send.Robj, mpi.recv.Robj, mpi.probe, mpi.wait, mpi.get.count, mpi.get.sourcetag.
mpi.send.Robj,mpi.recv.Robj,mpi.probe,mpi.wait,mpi.get.count,mpi.get.sourcetag。
实例----------Examples----------
## Not run: [#不运行:]
#on a slave[在从属]
mpi.send(1:10,1,0,0)
#on master[在主]
x <- integer(10)
mpi.irecv(x,1,1,0)
x
mpi.wait()
x
## End(Not run)[#(不执行)]
转载请注明:出自 生物统计家园网(http://www.biostatistic.net)。
注:
注1:为了方便大家学习,本文档为生物统计家园网机器人LoveR翻译而成,仅供个人R语言学习参考使用,生物统计家园保留版权。
注2:由于是机器人自动翻译,难免有不准确之处,使用时仔细对照中、英文内容进行反复理解,可以帮助R语言的学习。
注3:如遇到不准确之处,请在本贴的后面进行回帖,我们会逐渐进行修订。
|