我正在运行一个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
你用什么命令来调用matlab?一切都是从您从命令行调用的脚本完成的吗? – houtanb
#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所在的目录 –
您可以在您的问题中提出这个问题吗?在评论中很难阅读 – houtanb