我一直在用 C 编写非常简单的 MPI 程序。我不太擅长 C,但对 Python 非常有信心。我开始知道 Python 有 MPI 绑定。我使用 Sun Grid Engine 作为 DRMS(分布式资源管理系统)。在进入 python MPI 之前,我想知道是否可以将 python mpi 程序提交给 Sun Grid Engine,以利用系统中所有可用分布式处理器的功能。
那么,是否可以向 Sun Grid Engine 提交 python mpi 程序?
我一直在用 C 编写非常简单的 MPI 程序。我不太擅长 C,但对 Python 非常有信心。我开始知道 Python 有 MPI 绑定。我使用 Sun Grid Engine 作为 DRMS(分布式资源管理系统)。在进入 python MPI 之前,我想知道是否可以将 python mpi 程序提交给 Sun Grid Engine,以利用系统中所有可用分布式处理器的功能。
那么,是否可以向 Sun Grid Engine 提交 python mpi 程序?
是的,这是可能的,并且与使用mpirun. 关于确保您的代码需要在每个节点上运行的可执行文件、库和支持文件的所有通常注意事项同样适用于 python 和已编译的 MPI 应用程序。
Grid Engine 本身(或者至少是我使用过的 pre-Oracle、pre-commercial 版本)本身对 MPI 一无所知,因此在您从资源管理器获得插槽分配之后,您的 SGE 作业脚本可能需要为运行创建自己的机器文件(或运行启动脚本)并执行任何其他必要的咒语来准备将运行您的代码以执行的节点。旧的 SGE wiki 和邮件列表有很多有用的示例,用于在运行的 SGE 作业脚本中设置 MPI 机器文件。其内部细节几乎完全是 MPI 风格特有的,并且大部分独立于 SGE,因此提供细节有点困难,但最后在作业文件中运行 Python 应用程序的命令可以简单到
mpirun <options here> python yourapp.py
或者
mpirun <options here> yourapp.py
ifyourapp.py具有可执行权限和合适的shebang行。我已经用 MPICH2 和 SGE运行了一些相当大的 mpi4py应用程序,后者没有困难。