12.2. Open MPI 运行时调试选项

Open MPI 为MPI层本身提供了一系列用于调试的MCA参数。 这些参数可以通过常规方式设置。 可以通过以下命令显示MPI级别的MCA参数:

# Use "--level 9" to see all the MCA parameters
# (the default is "--level 1"):
shell$ ompi_info --param mpi all --level 9

以下是MPI层的调试参数摘要:

  • mpi_param_check: 如果设置为true(任何正值),并且当 Open MPI在启用参数检查的情况下编译(默认设置)时, 每个MPI函数的参数都会经过一系列正确性检查。 诸如传递非法值(例如NULL或MPI_DATATYPE_NULL或其他"错误"值)等问题 将在运行时被发现,并触发MPI异常(默认行为是打印简短消息并中止整个 MPI作业)。如果设置为false,则禁用这些检查,略微提高性能。

  • mpi_show_handle_leaks: 如果设置为true(任何正值), Open MPI将显示在MPI_Finalize(3)之前未被释放的所有MPI句柄列表 (例如通信器、数据类型、请求等)

  • mpi_no_free_handles:如果设置为true(任何正值),当调用对应的MPI"释放"函数时(例如调用MPI_Comm_free(3)时),实际上不会释放MPI对象。这有助于追踪那些意外继续使用已释放MPI句柄的应用程序。

  • mpi_show_mca_params: 如果设置为true(任何正值),在MPI初始化时显示所有MCA参数及其值的列表。这对于MPI应用程序的可复现性非常有帮助。

  • mpi_show_mca_params_file: 如果设置为非空值,且当mpi_show_mca_params值为true时,将MCA参数列表输出到指定文件名。如果该参数为空值,则列表会被发送到stderr

  • mpi_abort_delay: 如果设为非零值,当调用MPI_Abort(3)时会打印包含主机名和调用进程PID的标识信息,并在退出前延迟指定的秒数。负值表示无限期延迟。这允许用户在发生错误时手动连接调试器。请注意默认的MPI错误处理程序MPI_ERRORS_ABORT会调用MPI_Abort(3),因此该参数有助于发现由mpi_param_check识别的问题。

  • mpi_abort_print_stack: 如果非零,当调用MPI_Abort(3)时打印堆栈跟踪信息(在支持的系统上)。