【发布时间】: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.m、f.m、td.sh所在的文件夹在终端输入
qsub td.sh
问题:我需要更改上面的 bash 文件,因为脚本 f.m 调用了许可证为单节点单用户的求解器 (Gurobi)。这是我被告知的:
" 此许可证已安装,并且仅适用于节点 A。
您将无法 qsub 您的脚本,因为作业必须在此节点上运行。
相反,您应该将 ssh 放入节点 A 并直接在该节点上运行作业
提交给调度器。 "
您能指导我理解我应该如何更改上面的 bash 文件吗?特别是,我应该如何强制执行到节点A?
即使我仅限于一个节点,我仍然可以使用数组作业进行并行化吗?还是按照定义在多个节点上执行数组作业?
【问题讨论】: