повысить mpi-эквивалент status.MPI_SOURCE

существует ли boost::MPI эквивалент следующего кода C MPI? Я пытаюсь портировать следующий стандартный код MPI, который представляет собой базовый шаблон master-slave, найденный здесь. Согласно документации 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();
  }

person pyCthon    schedule 15.12.2012    source источник


Ответы (1)


Из документации по 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.

person Hristo Iliev    schedule 15.12.2012