【发布时间】:2015-01-07 09:59:00
【问题描述】:
我问了一个非常接近这个问题的问题,但没有得到回答,从那以后我希望我学会了更好地提出这个问题。
我很好奇如何在 Cray XE6 机器上连续运行许多作业。您通常使用 ccmrun(用于串行作业)或 aprun(而不是 mpirun 或 mpiexec)来 qsub 事物。我首先想使用 Pool() 函数,但由于它不是基于 SMP 的硬件,因此它仅限于 32 个处理器。即使是诸如池之类的 mpi4py 应用程序也无法工作,因为我没有将所有处理器都提供给主程序。如果我说 aprun -n 64 mpipool.py,我会运行该脚本 64 次,而如果我执行类似 aprun -n 1 -d 32 pool.py 之类的操作,它确实有效。
我查看了https://wiki.python.org/moin/ParallelProcessing 网站,想知道是否有人有在集群计算机上运行多个串行作业的经验。我确实编写了一个 mpi4py 代码,它基本上具有 0 级来完成所有工作选择,然后将它们分发给其他处理器。它不想在机器上玩得很好,因为我需要使用子进程来启动大量的 C 代码。所以,最后一个警告是它必须与子进程配合得很好。
我想让它看看选择的节点数量,然后基本上按照以下方式做一些事情:
ccmrun 作业调度程序.py & ccmrun jobrunner.py 63 & # 假设我用 64 个处理器开始了这项工作。我可能需要在这里做一个 bash 循环,但这没问题。
一旦开始,我希望他们能够相互通信,但如果没有 MPI,我不确定这样做的有效方法。如果有人能让我走上正确的道路,我将不胜感激。也许做泡菜转储并锁定它们并在工作人员捡起时将其删除。可能有一种非常简单的方法可以做到这一点,但我对此很陌生。
谢谢!
【问题讨论】:
标签: python subprocess mpi cluster-computing hpc