【发布时间】:2011-05-03 03:39:09
【问题描述】:
OcamlMpi 有阻止发送和接收的说明。有没有人为 ocamlmpi 做过非阻塞接收?
【问题讨论】:
OcamlMpi 有阻止发送和接收的说明。有没有人为 ocamlmpi 做过非阻塞接收?
【问题讨论】:
不幸的是,在 OcamlMPI 源中似乎没有对非阻塞 MPI 调用的任何引用。但是,我注意到对于阻塞版本,正在使用 MPI_Send。在某些情况下,MPI_Send 的行为类似于非阻塞调用(例如对于适合默认传出消息缓冲区的小消息),但是该行为取决于实现,不是您可以依赖的。
从 OcamlMPI 源代码来看,我认为实现自己的非阻塞等效项并不困难,请查看“msgs.c”(OcamlMPI 源代码中的文件),函数“caml_mpi_send " 包含标准发送的代码。用 MPI_Isend 替换 MPI_Send 并处理 MPI_Request 数据结构的返回应该可以解决问题。哦,你需要为 MPI_Wait 添加另一个函数。查看MPI standard 了解更多信息。
希望有帮助!
【讨论】:
Mpi.iprobe 在最新的 ocamlmpi Subversion 主干中可用:
http://forge.ocamlcore.org/projects/ocamlmpi/
这为新消息提供了非阻塞检查。一旦消息可用,就可以使用正常的阻塞接收来检索消息。
【讨论】: