Повысить MPI-эквивалент статуса.MPI_SOURCE
Есть ли boost::MPI
эквивалент следующего кода C MPI? Я пытаюсь портировать следующий стандартный код MPI, который является базовым шаблоном master-slave, найденным здесь. Исходя из документации 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();
}
1 ответ
Решение
MPI_ANY_SOURCE
становитсяany_source
MPI_ANY_TAG
становитсяany_tag
communicator::recv()
Метод возвращает экземпляр класса состояния, который предоставляет всю необходимую информацию:
status.MPI_SOURCE
возвращаетсяstatus::source()
status.MPI_TAG
возвращаетсяstatus::tag()
Он также предоставляет два оператора приведения, чтобы скрыть его содержимое MPI_Status
состав.