【问题标题】:Non blocking receive in mpi+ocaml?mpi+ocaml 中的非阻塞接收?
【发布时间】:2011-05-03 03:39:09
【问题描述】:

OcamlMpi 有阻止发送和接收的说明。有没有人为 ocamlmpi 做过非阻塞接收?

【问题讨论】:

    标签: ocaml mpi


    【解决方案1】:

    不幸的是,在 OcamlMPI 源中似乎没有对非阻塞 MPI 调用的任何引用。但是,我注意到对于阻塞版本,正在使用 MPI_Send。在某些情况下,MPI_Send 的行为类似于非阻塞调用(例如对于适合默认传出消息缓冲区的小消息),但是该行为取决于实现,不是您可以依赖的。

    从 OcamlMPI 源代码来看,我认为实现自己的非阻塞等效项并不困难,请查看“msgs.c”(OcamlMPI 源代码中的文件),函数“caml_mpi_send " 包含标准发送的代码。用 MPI_Isend 替换 MPI_Send 并处理 MPI_Request 数据结构的返回应该可以解决问题。哦,你需要为 MPI_Wait 添加另一个函数。查看MPI standard 了解更多信息。

    希望有帮助!

    【讨论】:

      【解决方案2】:

      Mpi.iprobe 在最新的 ocamlmpi Subversion 主干中可用:

      http://forge.ocamlcore.org/projects/ocamlmpi/

      这为新消息提供了非阻塞检查。一旦消息可用,就可以使用正常的阻塞接收来检索消息。

      【讨论】:

        猜你喜欢
        • 2012-08-24
        • 2021-12-30
        • 2012-02-26
        • 1970-01-01
        • 2014-08-15
        • 2013-03-07
        • 2017-01-29
        • 2022-12-03
        • 1970-01-01
        相关资源
        最近更新 更多