Поделиться через


функция обратного вызова MPI_Grequest_free_function

MPI_Grequest_free_function — это заполнитель для имени функции, определяемой приложением.

Синтаксис

int MPI_Grequest_free_function(
  _In_opt_ void *extra_state
);

Параметры

  • extra_state [в, необязательно]
    Дополнительное состояние.

Возвращаемое значение

Все функции обратного вызова возвращают код ошибки. Код передается обратно и рассматривается в соответствии с кодом ошибки функцией MPI, которая вызвала функцию обратного вызова. Например, если возвращаются коды ошибок, код ошибки, возвращенный функцией обратного вызова, будет возвращен функцией MPI, которая вызвала функцию обратного вызова. В случае вызова MPI_Waitany и MPI_Testany , который вызывает как query_fn , так и free_fn, вызов MPI вернет код ошибки, возвращенный последним обратным вызовом, а именно free_fn. Если не удалось выполнить один или несколько запросов в вызове MPI_Waitsome, MPI_Waitall, MPI_Testsome или MPI_Testall , вызов MPI вернет MPI_ERR_IN_STATUS. В таком случае, если вызовУ MPI был передан массив состояний, то MPI вернет в каждом из состояний, соответствующих завершенному обобщенному запросу код ошибки, возвращенный соответствующим вызовом функции обратного вызова free_fn . Однако если функция MPI была передана MPI_STATUSES_IGNORE, то отдельные коды ошибок, возвращаемые каждой функцией обратного вызова, будут потеряны.

Fortran

    SUBROUTINE GREQUEST_FREE_FUNCTION(EXTRA_STATE, IERROR)
        INTEGER IERROR
        INTEGER(KIND=MPI_ADDRESS_KIND) EXTRA_STATE

Комментарии

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

Обратный вызов free_fn вызывается MPI_{Wait|Вызов Test}{any|some|all} , который завершил обобщенный запрос, связанный с этим обратным вызовом. free_fn вызывается после вызова query_fn для того же запроса. Однако если вызов MPI завершил несколько обобщенных запросов, порядок вызова функций обратного вызова free_fn не определяется MPI.

Обратный вызов free_fn также вызывается для обобщенных запросов, освобожденных вызовом MPI_Request_free (без вызова MPI_{Wait|Для такого запроса будет выполнен тест}{any|some|all} ). В этом случае функция обратного вызова будет вызываться либо в MPI_Request_free вызова MPI, либо в MPI_Grequest_complete вызова MPI, в зависимости от того, что произойдет в последний раз, т. е. в этом случае фактический код освобождения выполняется сразу после того, как вызовы MPI_Request_free и MPI_Grequest_complete произошли. Запрос не освобождается до завершения free_fn . Обратите внимание, что free_fn будет вызываться только один раз для каждого запроса правильной программой.

Требования

Продукт

Распространяемый пакет HPC 2012 MS-MPI, пакет HPC 2008 R2 распространяемый пакет MS-MPI, пакет HPC 2008 MS-MPI распространяемый пакет или служебные программы клиента ПАКЕТА HPC 2008

Заголовок

Mpi.h; Mpif.h

См. также раздел

Внешние функции MPI

MPI_Grequest_start

MPI_Waitall

MPI_Waitsome

MPI_Waitany

MPI_Testall

MPI_Testsome

MPI_Testany