Теория и практика параллельных вычислений



Режимы передачи данных - часть 2


int MPI_Buffer_attach(void *buf, int size),

где

  • buf — адрес буфера памяти;
  • size — размер буфера.

После завершения работы с буфером он должен быть отключен от MPI при помощи функции:

int MPI_Buffer_detach(void *buf, int *size),

где

  • buf — адрес буфера памяти;
  • size — возвращаемый размер буфера.

По практическому использованию режимов можно привести следующие рекомендации:

  • стандартный режим обычно реализуется как буферизированный или синхронный, в зависимости от размера передаваемого сообщения, и зачастую является наиболее оптимизированным по производительности;
  • режим передачи по готовности формально является наиболее быстрым, но используется достаточно редко, т. к. обычно сложно гарантировать готовность операции приема;
  • буферизованный режим также выполняется достаточно быстро, но может приводить к большим расходам ресурсов (памяти), – в целом может быть рекомендован для передачи коротких сообщений;
  • синхронный режим является наиболее медленным, т.к. требует подтверждения приема, однако не нуждается в дополнительной памяти для хранения сообщения. Этот режим может быть рекомендован для передачи длинных сообщений.

В заключение отметим, что для функции приема MPI_Recv не существует различных режимов работы.




Содержание  Назад  Вперед