OcamlMpi有阻止发送和接收的说明。有没有人为ocamlmpi做过非阻塞接收?
答案 0 :(得分:2)
不幸的是,似乎没有任何对OcamlMPI源中的非阻塞MPI调用的引用。但是,我注意到阻塞版本正在使用MPI_Send。在某些情况下,MPI_Send的行为类似于非阻塞调用(例如,适用于默认传出消息缓冲区的小消息),但该行为取决于实现,并且不是您可以依赖的。
通过OcamlMPI源代码的外观,我认为实现自己的非阻塞等价物并不困难,请查看“msgs.c”(OcamlMPI源代码中的文件),函数“caml_mpi_send “包含标准发送的代码。用MPI_Isend替换MPI_Send并处理MPI_Request数据结构的返回应该可以解决问题。哦,你需要为MPI_Wait添加另一个函数。查看MPI standard了解详情。
希望有所帮助!
答案 1 :(得分:1)
Mpi.iprobe在最新的ocamlmpi Subversion主干中可用:
http://forge.ocamlcore.org/projects/ocamlmpi/
这为新邮件提供了非阻止检查。消息可用后,可以使用正常的阻止接收来检索消息。