0

是否有boost::MPI等效于以下 C MPI 代码?我正在尝试移植以下标准 MPI 代码,这是在此处找到的基本主从模板。在 boost mpi 文档之后,只有 3 个参数,用于 mpi_send 或 mpi_recv 等级、标记和缓冲区。

while (work != NULL) {

    /* Receive results from a slave */

    MPI_Recv(&result,           /* message buffer */
             1,                 /* one data item */
             MPI_INT,        /* of type double real */
             MPI_ANY_SOURCE,    /* receive from any sender */
             MPI_ANY_TAG,       /* any type of message */
             MPI_COMM_WORLD,    /* default communicator */
             &status);          /* info about the received message */

    /* Send the slave a new work unit */

    MPI_Send(&work,             /* message buffer */
             1,                 /* one data item */
             MPI_INT,           /* data item is an integer */
             status.MPI_SOURCE, /* to who we just received from */
             WORKTAG,           /* user chosen message tag */
             MPI_COMM_WORLD);   /* default communicator */

    /* Get the next unit of work to be done */

    work = get_next_work_item();
  }
4

1 回答 1

2

boost.MPI 文档

  • MPI_ANY_SOURCE变成any_source
  • MPI_ANY_TAG变成any_tag

该方法返回提供您需要的所有信息的状态communicator::recv()类的实例:

  • status.MPI_SOURCE由返回status::source()
  • status.MPI_TAG由返回status::tag()

它还提供了两个转换运算符来将其内容转换为MPI_Status结构。

于 2012-12-15T21:37:40.280 回答