Mad*_*ent 13 linux bash shell awk slurm
我正在尝试从另一个文件中获取值,并在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
Run Code Online (Sandbox Code Playgroud)
当我将其作为普通的Bash shell脚本运行时,它会正确打印出proc的数量并进行正确的mpirun调用.因此,该awk命令正确地解析了proc的数量,并且按预期解除引用变量.
但是,当我使用以下内容将其提交给SLURM时:
sbatch myScript.sh
Run Code Online (Sandbox Code Playgroud)
我收到错误:
sbatch: error: Invalid numeric value "`$numProcs`" for number of tasks.
Run Code Online (Sandbox Code Playgroud)
有人能帮忙吗?
jan*_*neb 10
这不行.跑步时会发生什么
sbatch myscript.sh
是slurm解析那些特殊的#SBATCH行的脚本,生成一个作业记录,将批处理脚本存储在某处.批处理脚本仅在作业运行时执行.
因此,您需要以稍微不同的方式构建工作流,并在提交作业之前首先计算所需的过程数.请注意,您可以使用类似的东西
sbatch -n $numProcs myscript.sh
,你不需要自动生成脚本(同样,mpirun应该能够自动获得你的分配中的proc数量,不需要使用"-np").
| 归档时间: |
|
| 查看次数: |
5213 次 |
| 最近记录: |