17.2.92. MPI错误

所有MPI例程(除了MPI_WtimeMPI_Wtick)都会返回一个错误值;C语言例程通过函数返回值返回,Fortran例程通过最后一个参数返回。在返回值之前,会调用当前的MPI错误处理程序。默认情况下,该错误处理程序会中止MPI作业。可以通过MPI_Comm_set_errhandler来更改错误处理程序;预定义错误处理程序MPI_ERRORS_RETURN可用于使错误值被返回。请注意,MPI不保证MPI程序在出错后能够继续执行。

有关Open MPI错误代码的更多信息,请参阅include目录中的mpi.h文件。

Open MPI的标准错误返回类:

错误名称

数值

描述

MPI_SUCCESS

0

成功返回码。

MPI_ERR_BUFFER

1

无效的缓冲区指针。

MPI_ERR_COUNT

2

无效的计数参数。

MPI_ERR_TYPE

3

无效的数据类型参数。

MPI_ERR_TAG

4

无效的标签参数。

MPI_ERR_COMM

5

无效的通信器。

MPI_ERR_RANK

6

无效的等级。

MPI_ERR_REQUEST

7

无效的MPI_Request句柄。

MPI_ERR_ROOT

8

无效的根节点。

MPI_ERR_GROUP

9

向函数传递了空组。

MPI_ERR_OP

10

无效操作。

MPI_ERR_TOPOLOGY

11

无效的拓扑结构。

MPI_ERR_DIMS

12

非法的维度参数。

MPI_ERR_ARG

13

无效参数。

MPI_ERR_UNKNOWN

14

未知错误。

MPI_ERR_TRUNCATE

15

接收消息时被截断。

MPI_ERR_OTHER

16

其他错误;请使用Error_string。

MPI_ERR_INTERN

17

内部错误代码。

MPI_ERR_IN_STATUS

18

在状态中查找错误值。

MPI_ERR_PENDING

19

待处理的请求。

MPI_ERR_ACCESS

20

权限被拒绝。

MPI_ERR_AMODE

21

传递给open的amode不被支持。

MPI_ERR_ASSERT

22

无效断言。

MPI_ERR_BAD_FILE

23

无效的文件名(例如,路径名过长)。

MPI_ERR_BASE

24

无效的基础值。

MPI_ERR_CONVERSION

25

用户提供的数据转换函数中发生错误。

MPI_ERR_DISP

26

无效的位移量。

MPI_ERR_DUP_DATAREP

27

无法注册转换函数,因为向MPI_Register_datarep传递了已定义的数据表示标识符。

MPI_ERR_FILE_EXISTS

28

文件已存在。

MPI_ERR_FILE_IN_USE

29

文件操作无法完成,因为该文件当前已被某个进程打开。

MPI_ERR_FILE

30

无效的文件句柄。

MPI_ERR_INFO_KEY

31

非法信息键。

MPI_ERR_INFO_NOKEY

32

无此键值。

MPI_ERR_INFO_VALUE

33

非法的信息值。

MPI_ERR_INFO

34

无效的信息对象。

MPI_ERR_IO

35

输入/输出错误。

MPI_ERR_KEYVAL

36

非法的键值。

MPI_ERR_LOCKTYPE

37

无效的锁类型。

MPI_ERR_NAME

38

未找到名称。

MPI_ERR_NO_MEM

39

内存耗尽。

MPI_ERR_NOT_SAME

40

集合参数在所有进程中不一致,或不同进程以不同顺序调用了集合例程。

MPI_ERR_NO_SPACE

41

Not enough space.

MPI_ERR_NO_SUCH_FILE

42

文件(或目录)不存在。

MPI_ERR_PORT

43

无效端口。

MPI_ERR_PROC_ABORTED

74

操作失败,因为远程节点已中止。

MPI_ERR_QUOTA

44

超出配额限制。

MPI_ERR_READ_ONLY

45

只读文件系统。

MPI_ERR_RMA_CONFLICT

46

对窗口的访问冲突。

MPI_ERR_RMA_SYNC

47

错误的RMA同步。

MPI_ERR_SERVICE

48

无效的发布/取消发布操作。

MPI_ERR_SIZE

49

无效的大小。

MPI_ERR_SPAWN

50

生成进程时出错。

MPI_ERR_UNSUPPORTED_DATAREP

51

传递给MPI_File_set_view的数据表示格式不受支持。

MPI_ERR_UNSUPPORTED_OPERATION

52

不支持的操作,例如在仅支持顺序访问的文件上进行查找。

MPI_ERR_WIN

53

无效的窗口。

MPI_T_ERR_MEMORY

54

Out of memory.

MPI_T_ERR_NOT_INITIALIZED

55

接口未初始化。

MPI_T_ERR_CANNOT_INIT

56

接口未处于可初始化状态。

MPI_T_ERR_INVALID_INDEX

57

枚举索引无效。

MPI_T_ERR_INVALID_ITEM

8

查询的项目索引超出范围。

MPI_T_ERR_INVALID_HANDLE

59

句柄无效。

MPI_T_ERR_OUT_OF_HANDLES

60

无更多可用句柄。

MPI_T_ERR_OUT_OF_SESSIONS

61

没有可用的会话。

MPI_T_ERR_INVALID_SESSION

62

会话参数不是有效的会话。

MPI_T_ERR_CVAR_SET_NOT_NOW

63

当前无法设置该变量。

MPI_T_ERR_CVAR_SET_NEVER

64

变量在执行结束前无法被设置。

MPI_T_ERR_PVAR_NO_STARTSTOP

65

变量无法启动或停止。

MPI_T_ERR_PVAR_NO_WRITE

6

变量无法写入或重置。

MPI_T_ERR_PVAR_NO_ATOMIC

67

变量无法以原子方式读写。

MPI_ERR_RMA_RANGE

68

目标内存不属于窗口范围(对于使用MPI_Win_create_dynamic创建的窗口,目标内存未附加)

MPI_ERR_RMA_ATTACH

69

无法附加内存(例如由于资源耗尽)。

MPI_ERR_RMA_FLAVOR

70

传递的窗口对于被调用的函数具有错误类型。

MPI_ERR_RMA_SHARED

71

内存无法共享(例如,指定通信器组中的某些进程无法暴露共享内存)。

MPI_T_ERR_INVALID

72

接口使用无效或参数值错误。

MPI_T_ERR_INVALID_NAME

73

变量或类别名称无效。

MPI_ERR_SESSION

78

无效会话

MPI_ERR_LASTCODE

93

最后一个错误代码。