linux - 在基于 linux 的集群 : matlab sessions stops before m file is completly executed 上调用 Matlab

标签 linux bash matlab pbs

我正在运行一个 bash 脚本,该脚本多次在基于 Linux 的集群上提交一些 pbs 作业。每个提交调用 Matlab,读取一些数据,执行计算,并将结果写回我的目录。

此过程无一异常。对于某些计算,m 文件开始,加载所有内容,然后执行计算,但在将结果打印到标准输出时,作业终止。

pbs的日志文件没有显示错误信息,matlab没有显示错误信息。 代码在我的电脑上完美运行。我没主意了。

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

提前致谢 错误

编辑: 是否有可能强制 matlab 到达文件末尾?有帮助吗?

编辑@18:00: 正如 HBHB 在下面的评论中所要求的,这里是显示外部 *.sh 文件如何调用 matlab 的评论

#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()" 

其中 $a 和 $b 来自调用者 bash 文件中的一个循环,并且 ./data/calc 指向 myFunction 所在的目录

编辑 @18:34:如果我手动执行计算,那么一切都运行良好。所以给定的数据很好,似乎缩小到 pbs?

编辑 @21:27 我在 matlab 调用周围放置一个 until 循环,检查 matlab 是否返回所需数据。如果没有,它应该在一段时间后重新启动 matlab。但仍然。 matlab 在完成计算后停止,同时打印结果(一些矩阵),甚至作业完成。永远不会到达重启的检查部分。

什么我不明白。作业留在队列中,就像我计划的那样,稍有延迟。所以 sleep$w 会被执行吗?但是如果我检查错误文件,它只会向我显示第一轮卡住的 matlab,可被 i 识别。这是那部分代码。也许你可以帮助我

#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 进程。您的 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

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

关于linux - 在基于 linux 的集群 : matlab sessions stops before m file is completly executed 上调用 Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39771399/

相关文章:

linux - 编写一个 ping 当前网络的基本脚本

ruby - 命令行Matlab中的vi输入模式?

algorithm - 如何选择部分密集数据集的均匀分布子集?

python - 如果文件在两台机器中都丢失,如何以非零状态退出 shell 脚本?

regex - grep 可以只打印匹配的缓冲区吗?

bash - 无法从我的服务器到我的电脑

matlab - matlab 图中的子图标签

php - 在 LINUX 服务器中的 XAMPP 服务器中安装 Solr

php - 500 内部服务器 - Apache

c++ - 找不到 SDL.h 时