2010-10-31 1 views

ответ

2

К сожалению, в источнике OcamlMPI отсутствуют ссылки на неблокирующие вызовы MPI. Однако я заметил, что для блокирующих версий используется MPI_Send. При определенных условиях MPI_Send будет вести себя как неблокирующий вызов (например, для небольших сообщений, которые подходят к буферам исходящих сообщений по умолчанию), однако это поведение зависит от реализации, и на него нельзя положиться.

По внешнему виду источника OcamlMPI я не думаю, что было бы сложно реализовать ваши собственные неблокирующие эквиваленты, посмотрите в «msgs.c» (файл в источнике OcamlMPI), функция " caml_mpi_send "содержит код стандартной отправки. Замена MPI_Send на MPI_Isend и обработка возврата структуры данных MPI_Request должны сделать трюк. О, и вам нужно будет добавить еще одну функцию для MPI_Wait. Для получения дополнительной информации просмотрите MPI standard.

Надеюсь, что это поможет!

1

Mpi.iprobe доступен в последнем стволу ocamlmpi Subversion:

http://forge.ocamlcore.org/projects/ocamlmpi/

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