2012-12-15 85 views
0

是否有boost::MPI等效於以下C MPI代碼?我試圖移植下面的標準MPI代碼,它是一個基本的主從模板,找到here。在boost mpi文檔之後,只有3個參數,用於mpi_send或mpi_recv等級,標記和緩衝區。提升mpi相當於狀態.MPI_SOURCE

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(); 
    } 

回答

2

boost.MPI documentation

  • MPI_ANY_SOURCE成爲any_source
  • MPI_ANY_TAG成爲any_tag

communicator::recv()方法返回status類,提供你需要的所有信息的實例:

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

返回它還提供了兩種轉換操作符到它的內容隱蔽到MPI_Status結構。