【问题标题】:python on HPC cluster computerHPC集群计算机上的python
【发布时间】: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


    【解决方案1】:

    我对 Cray 机器一无所知,但无论如何我都会尝试一下。我注意到你提到了 qsub,这让我觉得系统正在使用 PBS 或 Torque。两者似乎都支持可能与您正在寻找的内容相符的作业数组。

    作业数组将使队列系统负责作业管理。每个子作业都将分配一个超出您指定范围的数组 ID,并将分配您使用 -l 请求的任何资源。在 Torque 中,“#PBS -l nodes=1”和“#PBS -t 1-64”将创建 64 个子作业,索引从 1 到 64,每个子作业都分配一个节点。手册页和 Google 将是一个很好的资源,据我所见,Torque 和 PBS 在语法上有所不同。如果这不起作用,您可以查看在单个更大的作业中使用 pbsdsh。

    另外,我想提一下,互联网上陌生人的建议只能带您到此为止。您的本地管理员可能有限制或计划策略,您可能会限制您的选择。您还可以从管理员那里获得一些建议,了解其他可以解决问题的行之有效的方法。

    【讨论】:

    • 感谢您的帮助。它使用 PBS 调度系统。真正的问题是我正在运行的作业是从可以删除和添加到的数据库中读取的,因此在它们启动之前没有一个作业被锁定为固定的。我刚刚创建了一个查找工作类并添加了一个迭代器和一个 next 并且迭代它工作正常。问题是找到一种让脚本相互通信的方法。我知道这是一个相当广泛的问题,我非常感谢您抽出时间提供帮助。 ccmrun 就像您所描述的那样。
    • 您能否在数据库中添加一个包含作业 ID 的列?然后你可以做一个'select * from data where jobid=NULL',
    • 这就是我试图用调度程序做的事情,但是我如何将它传递给等待运行作业的脚本呢?我试图将其包含在脚本本身而不是调度程序中,但遇到了所有这些都在同时读取数据库的问题,即使它是写保护的,除了一个连接,他们仍在读取该作业还没有运行,然后都试图运行相同的作业。
    • 我想知道这是否有问题。您可能需要另一个表,其中可以存储新的作业 ID 作为节点签入。然后您将有一个正在运行的“作业管理”,在您的作业运行时每 10 秒左右运行一次。该节点将执行“INSERT INTO JOBS (jobid) VALUES($PBS_JOBID)”,睡眠 60,“SELECT * FROM DATA WHERE jobid='$PBS_JOBID'”。在“sleep 60”期间的某个时候,“作业管理”进程会从 JOBS 表中获取一个作业 ID 并将其删除。然后它会在你的 DATA 表的 jobid 列中插入相同的 jobid。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 2019-12-23
    • 2018-05-15
    • 2015-04-26
    • 1970-01-01
    相关资源
    最近更新 更多