繁体   English   中英

HPC群集计算机上的python

[英]python on HPC cluster computer

我问了一个非常接近这个问题的问题,但没有得到回答,从那时起,我希望我学会了更好地提出这个问题。

我很好奇如何在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 jobscheduler.py&ccmrun jobrunner.py 63&#鉴于我以64个处理器开始了这项工作。 我可能需要在这里进行bash循环,但这没问题。

一旦开始,我希望他们能够彼此通信,但是如果没有MPI,我不确定这样做的有效方法。 如果有人能让我走上正确的道路,我将不胜感激。 可能会进行腌制转储并将其锁定,并在工作运行者将其捡起时将其删除。 可能有一种非常简单的方法来执行此操作,但是我对此很陌生。

谢谢!

我对Cray机器一无所知,但是无论如何我都会刺中。 我注意到您提到了qsub,这使我认为系统正在使用PBS或Torque。 两者似乎都支持Job Array,这可能与您要查找的内容相似。

作业阵列将使队列系统负责作业管理。 将为每个子作业分配一个数组ID,该数组ID超出您指定的范围,并且将分配给您使用-l请求的任何资源。 在Torque中,“#PBS -l个节点= 1”和“ #PBS -t 1-64”将创建64个子作业,索引从1到64分别分配一个节点。 手册页和Google将是一个很好的资源,从我所见,Torque和PBS在语法上有所不同。 如果那行不通,您可以考虑在一个较大的工作中使用pbsdsh。

另外,我想提及的是,互联网上陌生人的建议只会带您走远。 您的本地管理员可能有限制或调度策略,可能会限制您的选择。 您也许还可以从管理员那里获得一些建议,以了解其他可以解决问题的可靠方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM