使用 Python 向超级计算机提交多个作业

     2023-02-24     94

关键词:

【中文标题】使用 Python 向超级计算机提交多个作业【英文标题】:Using Python to Submit Multiple Jobs to a Supercomputer 【发布时间】:2017-07-03 18:21:56 【问题描述】:

我目前正在使用超级计算机进行各种量子力学计算。我需要在任何给定时间提交大量文件(280 份单独提交)。我正在尝试使用 python 来自动化这个过程,但对使用 python 运行单独的提交脚本几乎没有经验。我使用的提交脚本(名为 subOrca_mpi.sh)是:

#!/bin/bash
string=".inp"
root="$1%$string"

#if [ -z $1 ]
#then
#  echo 'Usage: subGamess.sh <jobinput>'
#  exit 1
#fi

#if [ ! -f ./$root.inp ]
#then
#  echo '<jobinput> does not look like an Orca input \(*.inp\)'
#  exit 1
#fi

if [ -f $root.slurm ]
then
   rm $root.slurm
fi

echo '#!/bin/bash'>>$root.slurm
echo '#SBATCH --job-name='$root>>$root.slurm
echo '#SBATCH --output='$root'.out'>>$root.slurm
echo '#SBATCH --nodes=1'>>$root.slurm
echo '#SBATCH --ntasks-per-node=12 '>>$root.slurm
echo '#SBATCH --time=0-48:00:00 '>>$root.slurm
echo '#SBATCH --cluster=smp'>>$root.slurm

echo 'cd $SBATCH_O_WORKDIR'>>$root.slurm
echo 'module purge'>>$root.slurm
echo 'module load orca/3.0.3'>>$root.slurm

echo 'files=('>>$root.slurm
echo  $root'.inp'>>$root.slurm
echo ')'>>$root.slurm
echo 'for i in $files[@]; do'>>$root.slurm
echo '     sbcast $SLURM_SUBMIT_DIR/$i $SLURM_SCRATCH/$i'>>$root.slurm
echo 'done'>>$root.slurm

echo 'export LD_LIBRARY_PATH=/usr/lib64/openmpi-
1.10/lib:$LD_LIBRARY_PATH'>>$root.slurm
echo 'export PATH=/usr/lib64/openmpi-1.10/bin:$PATH'>>$root.slurm

echo 'cd $SLURM_SCRATCH'>>$root.slurm

echo '$(which orca) '$root'.inp'>>$root.slurm
echo 'cp $SLURM_SCRATCH/*.gbw,prop $SLURM_SUBMIT_DIR'>>$root.slurm

sbatch $root.slurm

exit

据我所知,我需要导入 os,但我基本上迷路了。到目前为止,我唯一的代码是:

import os
import glob
def orcasubmit():
    for filename in glob.glob('*.inp'):
        #execute subOrca_mpi.sh for all input files in given folder

orcasubmit()

任何输入都会非常有帮助。

【问题讨论】:

docs.python.org/3/library/subprocess.html 这是你需要的模块。 谢谢。我会看看这个。 【参考方案1】:

这里有两种选择。您可能已经猜到,第一个是使用os.system。你可以这样做:

for filename in glob.glob('*.inp'):
    os.system('./' + filename) # assuming these files lie in the same directory

或者,您可以使用subprocess.Popen 模块,我推荐这个。

from subprocess import Popen
for filename in glob.glob('*.inp'):
    process = Popen(['/bin/bash', filename])

【讨论】:

subprocess.check_output() 对于 OP 来说可能已经足够了,而且更容易掌握/使用。 @Anthon 在命令运行之前不会阻塞吗? OP 会希望它在后台调度。这会很好。 我将尝试第一个选项,看看它是如何工作的。谢谢 @celani99 当然,如果有帮助/没有帮助,请告诉我。谢谢。 @coldspeed,我会的。

国家超级计算深圳中心的软件环境

...,更提高了整个系统的利用率。作业管理系统是整个超级计算机最重要的软件环境之一,目前在曙光6000超级计算机上使用的作业管理系统是Platform公司的LSF(LoadSharingFacility)作业管理系统。  3.编译器和并行实现  曙光6000主机... 查看详情

向 dataproc 集群提交 pyspark 作业时出错(找不到作业)

...时间】:2017-09-2017:21:17【问题描述】:我有一个基于GCP的python客户端库的脚本,用于配置集群并向它们提交作业。当我运行脚本时,它成功地将文件上传到谷歌存储,创建集群并提交作业。当它运行我的“wait_for_ 查看详情

pbs作业管理系统

...程序的方法。前面我们所给出的各个例程一般都是在单台计算机上直接使用mpiexec或mpirun执行的,但是在实际应用中,对规模比较大的高性能计算任务,一般会提交到集群或超级计算机平台上进行计算。集群系统具有低成本、高... 查看详情

向 Condor 提交作业时,Scala 提交文件会是啥样子?

...子?【发布时间】:2016-03-1520:44:11【问题描述】:我尝试使用我从Scala编译的jar文件向Condor提交作业sbtpackage这只是一个基本的HelloWor 查看详情

如何使用 SFTP 向大型机提交/​​检索批处理作业

】如何使用SFTP向大型机提交/​​检索批处理作业【英文标题】:HowtouseSFTPtosubmit/retrievebatchjobstomainframe【发布时间】:2020-01-0812:43:06【问题描述】:在使用我的C#代码发送sitefiletype=jes之后,我一直在对我的JCL进行简单的ftp。但是... 查看详情

flink运行模式

...#160;独立集群模式,由Flink自身提供计算资源。把Flink应用提交给Yarn的ResourceManagerFlink会根据运行在JobManger上的job的需要的slot的数量动态的分配TaskManager资源Yarn又分3种模式Session-Cluster模式需要先启动Flink集群,向Yarn申请资源。以... 查看详情

从 Airflow(使用气流 Livy 运算符)向 Livy(在 EMR 中)提交 Spark 作业

】从Airflow(使用气流Livy运算符)向Livy(在EMR中)提交Spark作业【英文标题】:SubmittingSparkJobtoLivy(inEMR)fromAirflow(usingairflowLivyoperator)【发布时间】:2021-02-0921:19:20【问题描述】:我正在尝试使用气流livyoperator在EMR中安排工作。这... 查看详情

lsf作业管理系统

...配置灵活的优点。通过LSF集中监控和调度,可以充分利用计算机的CPU、内存、磁盘等资源。可以通过以下三种方法使用bsub来提交作业:可以直接在bsub的命令行中输入完整的参数来提交一个作业,比如:其中所用的参数说明如下... 查看详情

slurm资源管理系统

...容错的集群管理器和作业调度系统,被世界范围内的超级计算机和计算集群广泛采用。SLURM维护着一个待处理工作的队列并管理此工作的整体资源利用。它以一种共享或非共享的方式管理可用的计算节点(取决于资源的需求),... 查看详情

通过sdk提交mapreduce作业

...,有效降低企业成本,并保障数据安全。了解更多通过SDK提交MR作业的步骤如下:步骤一:   编写MR程序,导出jar包,jar包可以不包含main方法(main方法是在本地执行)  查看详情

如何在 Azure ML 服务计算集群上并行工作?

...uster?【发布时间】:2019-12-2221:36:54【问题描述】:我能够使用计算集群向AzureML服务提交作业。它运行良好,自动缩放与自定义环境的良好灵活性相结合似乎正是我所需要的。然而,到目前为止,所有这些作业似乎只使用集群的... 查看详情

python多线程并行计算通过向线程池threadpoolexecutor提交任务的实现方法

...要创建许多生存期较短的线程执行运算任务时,首先考虑使用线程池。线程池任务启动时会创建出最大线程数参数max_workers指定数量的空闲线程,程序只要将执行函数提交给线程池,线程池就会启动一个空闲的线程来执行它。当... 查看详情

在大型更新时从 mysql 触发器向 gearman 发送作业

...pdates【发布时间】:2019-10-2614:15:30【问题描述】:我正在使用gearman的udf从更新后触发器向gearman发送后台作业。文档说明如下:gman_do*函数采用可选的第三个参数,即唯一的作业ID。这允许您在同一个下提交多个作业唯一ID,它们... 查看详情

Databricks-Connect 还返回找不到多个 python 文件作业的模块

...7-1023:15:17【问题描述】:目前,我正在通过databricks-connect使用本地VSCode连接到databricks。但是我的提交都带有找不到模块的错误,这意味着没有 查看详情

作业提交过程之hdfs&mapreduce

作业提交全过程详解(1)作业提交第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。第2步:Client向RM申请一个作业id。第3步:RM给Client返回该job资源的提交路径和作业id。第4步:Client... 查看详情

向网页提交多个表单

...。当我尝试提交表单时,我的页面被重定向,因此我尝试使用iframe保留在当前页面上,以便它可以为每个国家/地区发送 查看详情

使用 MRJob 将作业提交到 EMR 集群

】使用MRJob将作业提交到EMR集群【英文标题】:SubmitjobstoEMRclusterusingMRJob【发布时间】:2016-04-2619:50:57【问题描述】:MRJob等到每个作业完成后再将控制权交还给用户。我将一个大型EMR步骤分解为多个较小的步骤,并希望一次性提... 查看详情

python作业上的Spark提交过程泄漏

...作业完成后泄漏内存。我一直有恰好3个spark提交进程挂在使用客户端模式提交到集群的前3个作业中。来自客户的示例:root15170.34.784127281532876?Sl18:490: 查看详情