我正在尝试在群集中运行matlab脚本(ga_opt_main.m)。我必须编写一个作业提交文件,它本质上只是一个shell脚本。但我从来没有写过shell脚本,这就是我写的
#!/bin/bash
#PBS -q *queuename*
#PBS -l nodes=1:ppn=20
#PBS -l walltime=02:00:00
#PBS -N ga_opt_main
module load matlab/R2011b
module list
unset DISPLAY
matlab -nodisplay -nodesktop -r *directory path/ga_opt_main.m*
MATLAB在后台打开,但我的工作没有运行。相反,我得到一个错误文件说
bash: -c: line 0: syntax error in conditional expression
bash: -c: line 0: syntax error near `fraction'
关于为什么会发生这种情况以及如何避免这种情况的任何想法? 谢谢!
答案 0 :(得分:2)
我之前从未使用过PBS,但要从shell运行MATLAB脚本,请尝试以下操作:
matlab -nodesktop -nodisplay -r "addpath('/directory/path'); ga_opt_main; quit;"
其中ga_opt_main.m
是脚本文件的名称,'/directory/path'
是它所在的目录。请注意,您还必须在MATLAB路径上对此脚本具有任何其他依赖关系。
还有一个方便的RUN函数可以执行类似的操作:
matlab ... -r "run('/directory/path/ga_opt_main.m'); quit;"
答案 1 :(得分:1)
###############################
#!/bin/sh
#PBS -l nodes=1
#PBS -l walltime=2:0:0
#PBS -j oe
#PBS -o localhost:/dev/null
#PBS -d /your/working/directory
cd $PBS_O_WORKDIR
matlab -nodisplay -nodesktop -nojvm -nosplash -r "your_matlab_function"
我想将addpath(genpath('~/your/script's/home'));
添加到实际的matlab脚本/函数中。另外,不要在您的matlab文件名中添加“.m”。