3

我正在尝试在集群中运行 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'

关于为什么会发生这种情况以及如何避免这种情况的任何想法?谢谢!

4

2 回答 2

2

我以前从未使用过 PBS,但要从 shell 运行 MATLAB 脚本,请尝试以下操作:

matlab -nodesktop -nodisplay -r "addpath('/directory/path'); ga_opt_main; quit;"

wherega_opt_main.m是脚本文件的名称,'/directory/path'是它所在的目录。请注意,您还必须在 MATLAB 路径上对该脚本有任何其他依赖项。

还有一个方便的RUN函数可以做类似的事情:

matlab ... -r "run('/directory/path/ga_opt_main.m'); quit;"
于 2012-08-04T00:25:27.817 回答
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 脚本/函数中。另外,不要将“.m”添加到您的 matlab 文件名中。

于 2012-08-04T00:49:28.827 回答