3

クラスターで matlab スクリプト (ga_opt_main.m) を実行しようとしています。基本的に単なるシェル スクリプトであるジョブ送信ファイルを作成する必要があります。しかし、私はシェルスクリプトを書いたことがなく、これは私が書いたものです

  #!/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 を使用したことはありませんが、シェルから 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;"
于 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 に答える