функция обратного вызова 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 |