首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BSUB很多matlab作业到一个集群?

BSUB很多matlab作业到一个集群?
EN

Stack Overflow用户
提问于 2015-12-17 04:38:34
回答 2查看 467关注 0票数 2

我使用下面的bash文件向集群提交matlab作业,

代码语言:javascript
运行
复制
#!/bin/bash
#BSUB -L /bin/bash
#BSUB -J matlab.01
#BSUB -q long
#BSUB -n 32
#BSUB -R "span[hosts=1]"
#BSUB -W 20:00
#BSUB -R "rusage[mem=3072]"

#BSUB -o %J.out
#BSUB -e %J.err

# the working directory
work=/home/models
cd $work

# run matlab on the main function
matlab -logfile ./output.txt -nodisplay -r "foo('model', day);"

假设文件名为mat.bash,则使用以下命令

代码语言:javascript
运行
复制
bsub < mat.bash 

若要向群集提交一个作业,请执行以下操作。bash文件中的最后一行包含一个函数。

代码语言:javascript
运行
复制
fool(model, day)

在这个函数中,模型将有四个备选方案,day将有200个备选方案,这意味着我有4X400=800个作业要提交到集群,每个作业将运行大约16个小时。

提交800份工作最方便的方法是什么,而不是一个接一个提交?

目标是使多个作业可以同时在集群上运行,不需要等待一个作业完成而不是启动另一个作业。

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2015-12-17 16:26:19

我的建议是从脚本中删除对matlab的实际调用,然后编写一个单独的脚本来迭代“model”和“day”的可能值,添加相应的matlab调用,并为您提交每个作业。

类似于:

代码语言:javascript
运行
复制
#!/bin/sh

for model in one two three four
do
    for day in `seq 200`
    do  
        cp mat.bash mat.bash.$model.$day
        echo "matlab -logfile ./output.txt -nodisplay -r \"foo('$model', $day);\"" >> mat.bash.$model.$day
        bsub < mat.bash.$model.$day
        rm mat.bash.$model.$day
    done
done
票数 1
EN

Stack Overflow用户

发布于 2015-12-18 02:11:37

您可以尝试使用作业阵列。对数组索引进行分解,得到模型和日参数。就像这样:

代码语言:javascript
运行
复制
#!/bin/bash
#BSUB -L /bin/bash
#BSUB -J matlab.01[1-6]
#BSUB -R "span[hosts=1]"

#BSUB -o %J-%I.out
#BSUB -e %J-%I.err

PARAM1=$(((LSB_JOBINDEX-1)%2))
PARAM2=$(((LSB_JOBINDEX-1)/2))
echo "PARAM1=$PARAM1"
echo "PARAM2=$PARAM2"

然后,您可以使用单个bsub提交所有作业。

代码语言:javascript
运行
复制
bsub < testit.bash

这将运行6个作业,PARAM1的范围为0-1,PARAM2的范围为0-2.

我在对你的模型和日参数做一些假设。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34326718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档