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


функция MPI_Grequest_start

Создает и возвращает определяемый пользователем запрос.

Синтаксис

int MPIAPI MPI_Grequest_start(
  _In_     MPI_Grequest_query_function  *query_fn,
  _In_     MPI_Grequest_free_function   *free_fn,
  _In_     MPI_Grequest_cancel_function *cancel_fn,
  _In_opt_ void                         *extra_state,
  _Out_    MPI_Request                  *request
);

Параметры

  • query_fn [in]
    Функция обратного вызова, вызываемая при запросе состояния запроса.

  • free_fn [in]
    Функция обратного вызова, вызываемая при освобождении запроса.

  • cancel_fn [in]
    Функция обратного вызова, вызываемая при отмене запроса.

  • extra_state [в, необязательно]
    Дополнительное состояние, переданное указанным выше функциям.

  • request [out]
    Обобщенный запрос.

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

Возвращает MPI_SUCCESS при успешном выполнении. В противном случае возвращаемое значение представляет собой код ошибки.

В Fortran возвращаемое значение хранится в параметре IERROR .

Fortran

    MPI_GREQUEST_START(QUERY_FN, FREE_FN, CANCEL_FN, EXTRA_STATE, REQUEST, IERROR)
        INTEGER REQUEST, IERROR
        EXTERNAL QUERY_FN, FREE_FN, CANCEL_FN
        INTEGER (KIND=MPI_ADDRESS_KIND) EXTRA_STATE

Комментарии

Возвращаемые значения функций обратного вызова должны быть допустимым кодом ошибки MPI или классом. Это значение может быть возвращаемым значением из любой подпрограммы MPI (за одним исключением, указанным ниже), или любым из классов ошибок MPI. Для переносимых программ можно использовать MPI_ERR_OTHER ; Чтобы предоставить более конкретные сведения, создайте новый класс ошибок MPI или код с MPI_Add_error_class или MPI_Add_error_code и возвратите это значение.

Стандарт MPI не является ясным для возвращаемых значений из процедур обратного вызова. Однако в стандарте есть примечания, которые подразумевают, что это коды ошибок MPI. Например, страницы 169 строки 46–170, строка 1 требуют, чтобы free_fn возвращал код ошибки MPI, который может использоваться в функциях завершения MPI, когда они возвращают MPI_ERR_IN_STATUS.

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

Требования

Продукт

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

Заголовок

Mpi.h; Mpif.h

Библиотека

Msmpi.lib

DLL

Msmpi.dll

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

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

MPI_Grequest_query_function

MPI_Grequest_free_function

MPI_Grequest_cancel_function