【问题标题】:How to adjust bash file to execute on a single node如何调整 bash 文件以在单个节点上执行
【发布时间】:2018-12-05 11:09:33
【问题描述】:

我希望您能帮助我了解是否可以(如果可以,如何)调整下面的 bash 文件。


我有一个主要的 Matlab 脚本 main.m,它又调用另一个 Matlab 脚本 f.m

f.m 应该使用不同的输入多次执行。

我将其构建为一个数组作业。

我通常使用以下名为 td.sh 的 bash 文件将数组作业执行到我大学的 HPC 中

#$ -S /bin/bash
#$ -l h_vmem=5G
#$ -l tmem=5G
#$ -l h_rt=480:0:0
#$ -cwd
#$ -j y

#Run 237 tasks where each task has a different $SGE_TASK_ID ranging from 1 to 237
#$ -t 1-237

#$ -N mod
date
hostname

#Output the Task ID
echo "Task ID is $SGE_TASK_ID"

/share/[...]/matlab -nodisplay -nodesktop -nojvm -nosplash -r "main; ID = $SGE_TASK_ID; f; exit"

我在终端做的是

  • cd到脚本main.mf.mtd.sh所在的文件夹

  • 在终端输入qsub td.sh


问题:我需要更改上面的 bash 文件,因为脚本 f.m 调用了许可证为单节点单用户的求解器 (Gurobi)。这是我被告知的:

" 此许可证已安装,并且仅适用于节点 A。 您将无法 qsub 您的脚本,因为作业必须在此节点上运行。 相反,您应该将 ssh 放入节点 A 并直接在该节点上运行作业 提交给调度器。 "

您能指导我理解我应该如何更改上面的 bash 文件吗?特别是,我应该如何强制执行到节点A

即使我仅限于一个节点,我仍然可以使用数组作业进行并行化吗?还是按照定义在多个节点上执行数组作业?

【问题讨论】:

    标签: bash matlab


    【解决方案1】:

    如果你不能使用你的调度器,那么你就不能使用它的数组作业。您将不得不找到另一种方法来并行化这些作业。根据定义,数组作业不会在多个节点上执行(但由于资源可用性,它们通常会在多个节点上执行)。

    关于脚本的调整,只需遵循系统管理员提供的指南:忘记 SGE,并通过 ssh 直接针对您被告知的节点开始计算:

    date
    hostname
    
    for TASK_ID in {1..237}
    do
        #Output the Task ID
        echo "Task ID is $TASK_ID"
    
        ssh user@A "/share/[...]/matlab -nodisplay -nodesktop -nojvm -nosplash -r \"main; ID = $TASK_ID; f; exit\""
    done
    

    如果许可是单节点单用户(但同时执行多个),您可以尝试并行化演算。您必须考虑节点 A 中可用的资源(CPU 数量、内存...)以及每次执行所需的资源,然后在不使节点超载的情况下同时启动尽可能多的演算(否则他们将花费更长的时间甚至失败)。

    【讨论】:

    • 谢谢。当您说If the license is single node and single user (but multiple simultaneous execution), you can try to parallelize the calculus [...] 时,您的意思是例如使用parfor 吗?
    • 但这意味着我可以使用的并行工作器数量非常有限,对吗?
    • 您可以使用任何您想要的并行化方法:parforparallel、bash 作业监控系统...由您决定。关于您可以使用的并行工作人员的限制......限制是由许可证和硬件强加的。如果您可以在单个节点上运行,则只有适合该节点的工作人员。节点越大,它可以处理的工作人员就越多。
    • 谢谢。我已经接受了你的回答。我还有其他与并行化相关的疑问(对不起,我是一个非常初学者),但我会在一个单独的问题中问他们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2018-05-29
    • 1970-01-01
    • 2012-10-16
    • 2014-09-19
    • 1970-01-01
    • 2017-02-02
    相关资源
    最近更新 更多