2016-09-29 29 views
0

我正在运行一个bash脚本,它在基于Linux的群集上多次提交一些pbs作业。每个提交调用Matlab,读取一些数据,执行计算,并将结果写回到我的目录。在基于Linux的群集上调用Matlab:matlab会话在m文件完全执行之前停止

这个过程没有任何例外地正常工作。对于一些计算,m文件开始加载所有内容,而不是执行计算,但在将结果打印到标准输出时,Job终止。

pbs的日志文件显示无错误消息,matlab显示无错误消息。代码在我的电脑上完美运行。我没有想法。

如果有人想知道我能做什么,我将不胜感激。

在此先感谢 jbug

编辑: 是有可能迫使MATLAB达到文件的结尾?可能有帮助吗?

编辑@ 18:00: 如在下面的评论通过HBHB要求这里展示了如何MATLAB是由外部* sh文件名为评论

#PBS -l nodes=1:ppn=2 
#PBS -l pmem=1gb 
#PBS -l mem=1gb 
#PBS -l walltime=00:05:00 
module load MATLAB/R2015b 
cd $PBS_O_WORKDIR 

matlab -nosplash -nodisplay -nojvm -r "addpath('./data/calc');myFunc("$a","$b"),quit()" 

其中$和$ B来到从呼叫者bash文件中的循环和./data/calc指向myFunction所在的目录

编辑@ 18:34:如果我手动执行计算而不是一切正常运行。所以给定的数据是好的,似乎缩小到pbs?

edit @ 21:27我把一个直到循环周围的matlab调用,检查matlab是否返回所需的数据。如果没有,它应该在延迟一段时间后重新启动matlab。但仍然。打印完结果(某些矩阵)并完成作业后,matlab在完成调用后停止。重新启动的检查部分将永远不会到达。

我不明白。工作停留在队列中,就像我计划的那样,延迟很小。所以睡眠$ w将被执行?但是如果我检查错误文件,它只是显示我的第一轮冻结的matlab,我可以识别。这是代码的一部分。也许你可以帮我

#w=w wait 
i=1 
until [[ -e ./temp/$b/As$a && -e ./temp/$b/Bs$a && -e ./temp/$b/Cs$a && -e ./temp/$b/lamb$a ]] 
do 
echo $i 
    matlab -nosplash -nodisplay -nojvm -r "addpath('./data/calc');myFunc("$a","$b"),quit()" 
    sleep $w 
((i=i+1)) 
done 
+0

你用什么命令来调用matlab?一切都是从您从命令行调用的脚本完成的吗? – houtanb

+0

#PBS -l节点= 1:PPN = 2 #PBS -l PMEM = 1GB #PBS -l MEM = 1GB #PBS -l walltime = 00:05:00 模块负载MATLAB/R2015b CD $ PBS_O_WORKDIR echo“$ a times” matlab -nosplash -nodisplay -nojvm -r“addpath('./ data/calc'); myFunction(”$ a“,”$ b“),quit()” Where $ a和$ b来自调用者bash文件中的循环和./data/calc指向myFunction所在的目录 –

+0

您可以在您的问题中提出这个问题吗?在评论中很难阅读 – houtanb

回答

3

你很可能窒息你的matlab过程与有限的内存。您的PBS文件:

#PBS -l nodes=1:ppn=2 
#PBS -l pmem=1gb 
#PBS -l mem=1gb 
#PBS -l walltime=00:05:00 

您正在将您的物理内存设置为1GB。没有任何文件的Matlab运行大约900MB的虚拟内存。请尝试:

#PBS -l nodes=1:ppn=1 
#PBS -l pvmem=5gb 
#PBS -l walltime=00:05:00 

此外,您应该联系本地系统管理员。没有系统日志,我无法确定你的工作为什么缩短(但我的猜测是资源限制)。作为高性能计算中心的SA,我可以告诉你他们可以在5分钟内告诉你为什么你的工作无法正常工作。另外,不同的HPC中心使用不同的PBS配置。所以mem甚至可能不被认可;这是你的本地管理员可以帮助你更好的然后StackOverflow。

相关问题