Можно ли указать набор тегов для функции MPI_Recv?Набор тегов MPI
Мой сценарий:
Я работаю с приложением, которое имеет несколько потоков, которые одновременно выполнять функцию MPI_RECV. Я намерен использовать тег mpi для управления тем потоком, который получит сообщение. Но мне также нужно контролировать, является ли сообщение data_message или stop_message.
Итак, можно ли определить набор тегов для MPI_Recv? Семантически, было бы что-то вроде «Получить сообщения с тегами 0 или 1» или «Получить сообщения с тегами 10 или 11» и т. Д. Это должно быть несколько значений.
Используя этот подход можно было бы использовать теги thread_id * 2 в data_message и thread_id * 2 + 1 как stop_message.
'MPI_Testany' и' MPI_Waitany' являются источниками недетерминизма. Он будет работать только в том случае, если OP может гарантировать, что сообщение _stop_message_ не будет отправлено до того, как будет гарантировано получение предыдущего _data_message_. –
Это хороший момент. Мое предложение зависит только от одного или другого из тех сообщений, которые действительно доступны для соответствия, поскольку семантика упорядочения не поможет между разными указанными тегами при разных приемах. – Novelocrat