在Sun Grid Engine中运行Python MPI程序

3 投票
1 回答
1314 浏览
提问于 2025-04-17 12:10

我一直在用C语言编写一些简单的MPI程序。虽然我对C不太熟悉,但对Python还是挺有信心的。我了解到Python有MPI的绑定库。现在我在使用Sun Grid Engine作为分布式资源管理系统。在开始使用Python的MPI之前,我想知道是否可以将Python的MPI程序提交给Sun Grid Engine,以利用系统中所有可用的分布式处理器的能力。

那么,是否可以将Python的MPI程序提交给Sun Grid Engine呢?

1 个回答

2

是的,这是可能的,而且和用 mpirun 运行编译好的 MPI 代码没有什么不同。通常需要注意的事项,比如确保你的代码在每个节点上运行所需的可执行文件、库和支持文件,Python 代码和编译好的 MPI 应用程序一样都需要这些。

Grid Engine 本身(或者说我用过的那些早期版本,在 Oracle 之前的商业版本)对 MPI 并不了解,所以在你的工作任务从资源管理器那里获得了插槽分配后,你的 SGE 作业脚本可能需要自己创建一个机器文件(或者运行一个启动脚本),来准备运行你代码的节点。旧版 SGE 的维基和邮件列表上有很多关于在运行的 SGE 作业脚本中设置 MPI 机器文件的有用示例。这些具体细节几乎完全是针对 MPI 的,和 SGE 关系不大,所以很难提供具体的步骤,但最后在作业文件中运行你的 Python 应用程序的命令可以简单到:

mpirun <options here> python yourapp.py

或者

mpirun <options here> yourapp.py

前提是 yourapp.py 有可执行权限,并且里面有合适的 shebang 行。我曾经用 MPICH2 和 SGE 运行过一些相当大的 mpi4py 应用程序,没遇到什么困难。

撰写回答