Есть ли тайм-аут-механизм в MPI? - PullRequest
5 голосов
/ 30 ноября 2010

Все это название.Моя команда и я в настоящее время работаем над проектом, и мы используем MPI.В одном месте мы выполняем запрос MPI_send для ресурса с таймаутом.Если ресурс доступен, мы возвращаем 1, а если нет, и время ожидания заканчивается, мы возвращаем 0. Мы пытались использовать сигналы, такие как SIGALRM, но это не работает, потому что каждый новый запрос отменяет старые, устанавливая новый сигнал тревоги.

Спасибо за ваш ответ !!

Ответы [ 2 ]

7 голосов
/ 30 ноября 2010

Вы должны исследовать неблокирующие примитивы связи точка-точка, такие как MPI_Isend, MPI_Irecv и MPI_Iprobe.Затем вы можете самостоятельно установить время ожидания и использовать MPI_Cancel, если хотите.

2 голосов
/ 01 декабря 2010

Нет стандартного способа сделать это.

Реализация пары send / recv с неблокирующими вызовами (например, MPI_Isend, MPI_Irecv) и использование MPI_Test и MPI_Cancel является одним из возможных решений.

В зависимости от характера ресурса и количества раз, которое в программе требуется эта функция, вы также можете рассмотреть возможность реализации MPI_ISend как объекта «постоянного запроса».Здесь больше информации: Постоянные сообщения .

Преимущество постоянного запроса заключается в том, что запрос может быть сформирован и затем выполнен только в том случае, если ресурс действительно доступен ... при условии, что ресурс можно проверить независимо от фактического вызова MPI_ *.Постоянный запрос на связь может многократно использоваться в программе без необходимости реформирования всего вызова MPI_Send / MPI_Recv.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...