17

別のファイルから値を取得し、これを SLURM 送信スクリプト内で使用しようとしています。ただし、値が非数値であるというエラーが表示されます。つまり、逆参照されていません。

スクリプトは次のとおりです。

#!/bin/bash
# This reads out the number of procs based on the decomposeParDict                                                                                          
numProcs=`awk '/numberOfSubdomains/ {print $2}' ./meshModel/decomposeParDict`
echo "NumProcs = $numProcs"

#SBATCH --job-name=SnappyHexMesh                                                                                                                            
#SBATCH --output=./logs/SnappyHexMesh.log                                                                                                                   
#                                                                                                                                                           
#SBATCH --ntasks=`$numProcs`                                                                                                                                
#SBATCH --time=240:00                                                                                                                                       
#SBATCH --mem-per-cpu=4000                                                                                                                                  

#First run blockMesh                                                                                                                                        
blockMesh

#Now decompose the mesh                                                                                                                                     
decomposePar

#Now run snappy in parallel                                                                                                                                 
mpirun -np $numProcs snappyHexMesh -parallel -overwrite

これを通常の Bash シェル スクリプトとして実行すると、proc の数が正しく出力され、正しいmpirun呼び出しが行われます。したがって、awkコマンドは proc の数を正しく解析し、変数は期待どおりに逆参照されます。

ただし、これを SLURM に送信すると、次のようになります。

sbatch myScript.sh

エラーが発生します:

sbatch: error: Invalid numeric value "`$numProcs`" for number of tasks.

誰でもこれを手伝ってもらえますか?

4

2 に答える 2

11

これはうまくいきません。走るとどうなるか

sbatch myscript.sh

slurm はこれらの特別な #SBATCH 行のスクリプトを解析し、ジョブ レコードを生成し、バッチ スクリプトをどこかに保存します。バッチ スクリプトは、後でジョブが実行されたときにのみ実行されます。

そのため、ワークフローを少し異なる方法で構築し、ジョブを送信する前にまず必要なプロシージャの数を計算する必要があります。次のようなものを使用できることに注意してください

sbatch -n $numProcs myscript.sh

、スクリプトを自動生成する必要はありません (また、mpirun は割り当て内の proc の数を自動的に取得できるはずです。「-np」を使用する必要はありません)。

于 2014-07-01T12:14:46.810 に答える