0

boost::MPI次のCMPIコードに相当するものはありますか?ここにある基本的なマスタースレーブテンプレートである次の標準MPIコードを移植しようとしています。ブーストmpiのドキュメントに続いて、mpi_sendまたはmpi_recvランク、タグ、およびバッファーの3つのパラメーターのみがあります。

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また、コンテンツを構造に変換するための2つのキャスト演算子も提供します。

于 2012-12-15T21:37:40.280 に答える