mpi4py 中的 run 模块

mpi4py的run模块提供了命令行执行机制,用于解决自动MPI初始化和未处理异常可能导致的死锁问题。通过`-m mpi4py`参数,当Python程序中出现未捕获异常时,会调用MPI_Abort强制结束MPI环境,防止程序死锁。四种使用方式包括指定pyfile、模块(mod)、命令(cmd)或从标准输入读取执行语句。
摘要由CSDN通过智能技术生成

本文从本人简书博客同步过来

上一篇中我们介绍了 mpi4py 中的 futures 模块,下面我们将介绍 mpi4py 中的 run 模块。

mpi4py初始化和运行时设置中介绍过,默认情况下,在导入模块时,mpi4py 会调用 MPI_Init_thread() 以初始化 MPI 执行环境并设置退出钩子以使程序退出前会自动调用 MPI_Finalize() 结束 MPI 执行环境。此外,mpi4py 还重载了默认的 MPI.ERRORS_ARE_FATAL 错误处理函数,将其设置为 MPI.ERRORS_RETURN 以传递 MPI 错误成 Python 的相关异常。这些偏离 MPI 标准的行为对 Python 这样的高动态编程语言是合适的和方便的。使用 mpi4py 时只需一句简单的 from mpi4py import MPI 即可调用 MPI 相关功能而无需冗长而模式化的初始化和结束处理。同时,在调用 MPI 过程中发生的错误,只要其传递成了 Python 异常,就可以使用 Python 中的 try … except … finally 语句进行异常捕获及处理,没有被处理的那些异常会打印调用栈信息以帮助定位有问题的程序代码。

不幸的是,自动的 MPI 初始化和未处理的异常可能会导致死锁,比如说下面这段 Python 代码,假定这段代码是存储在标准的 Python 脚本文件中并且使用 mpiexec 运行(使用 2 个或 2个以上进程)。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值