Коды ошибок, возвращаемых MPI, полностью приведены в реализации MPI (за исключением MPI_SUCCESS). Это сделано для того, чтобы позволить реализации представить как можно больше информации об ошибках (для использования с MPI_ERROR_STRING).
Чтобы приложения могли интерпретировать код ошибки, процедура MPI_ERROR_CLASS преобразует код любой ошибки в один из кодов небольшого набора кодов стандартных ошибок, названный классом ошибок. Правильные классы ошибок удовлетворяют условию:
Классы ошибок являются подмножеством кодов ошибок: функция MPI может возвращать номер класса ошибки, а функция MPI_ERROR_STRING может использоваться, чтобы вычислить строку ошибки, связанную с классом ошибки.
Коды ошибок удовлетворяют выражению:
0 = const MPI_SUCCESS < constMPI_ERR_... MPI_ERR_LASTCODE.
Объяснение: Разница между MPI_ERR_UNKNOWN и MPI_ERR_OTHER состоит в том, что
MPI_ERROR_STRING
может возвращать полезную информацию о MPI_ERR_OTHER.
Заметим, что MPI_SUCCESS = 0 необходимо для соответствия языку Си; разделение классов ошибки и кодов ошибки допускает определение класса ошибки этим способом. Наличие известного LASTCODE - часто хороший контроль готовности к работе.[]
MPI_SUCCESS | Ошибки нет |
MPI_ERR_BUFFER | Неправильный указатель буфера |
MPI_ERR_COUNT | Неверное количество аргумента |
MPI_ERR_TYPE | Неправильный тип аргумента |
MPI_ERR_TAG | Неправильный тэг аргумента |
MPI_ERR_COMM | Неправильный коммуникатор |
MPI_ERR_RANK | Неправильный номер |
MPI_ERR_REQUEST | Неверный запрос (дескриптор) |
MPI_ERR_ROOT | Неверный корневой идентификатор |
MPI_ERR_GROUP | Неправильная группа |
MPI_ERR_OP | Неправильная операция |
MPI_ERR_TOPOLOGY | Неверная топология |
MPI_ERR_DIMS | Неправильная размерность аргумента |
MPI_ERR_ARG | Ошибка аргумента некоторого другого типа |
MPI_ERR_UNKNOWN | Неизвестная ошибка |
MPI_ERR_TRUNCATE | Неправильное округление |
MPI_ERR_OTHER | Известная ошибка не из этого списка |
MPI_ERR_INTERN | Внутренняя ошибка реализации MPI |
MPI_ERR_IN_STATUS | Неправильный код статуса |
MPI_ERR_PENDING | Зависший запрос |
MPI_ERR_LASTCODE | Последний код в списке |
Синтаксис функции MPI_ERROR_CLASS представлен ниже.
MPI_ERROR_CLASS(errorcode, errorclass)
IN | errorcode | код ошибки, возвращаемый процедурой MPI | |
OUT | errorclass | класс ошибки, связанный с errorcode |
int MPI_Error_class(int errorcode, int *errorclass)
MPI_ERROR_CLASS(ERRORCODE, ERRORCLASS, IERROR)
INTEGER ERRORCODE, ERRORCLASS, IERROR
int MPI::Get_error_class(int errorcode)
Функция MPI_ERROR_CLASS отображает код каждой стандартной ошибки (класс ошибки) на себя.