Bash解决方法,在评论中打印环境变量

时间:2017-01-27 15:17:55

标签: bash makefile

我使用makefile来运行管道,核心数量在makefile中设置为环境变量。

在管道中的某一点,makefile将执行一个包装脚本,它将启动一个LSF作业数组(HPC)。

#!/bin/bash
#BSUB -J hybrid_job_name      # job name
#BSUB -n 32                   # number of cores in job
#BSUB -o output.%J.hybrid     # output file name

mpirun.lsf ./program_name.exe

这里唯一的问题是在包装器脚本中,-n标志应由' CORES'设置。环境变量,并没有硬编码为32.无论如何要解决这个问题,我可以将CORES环境变量传递给-n标志。

1 个答案:

答案 0 :(得分:1)

您可以生成包含" #BSUB"的包装器脚本。在将其提交给LSF之前,指令即时。例如。事先创建job_script.tmpl等模板:

#!/bin/bash
#BSUB -J hybrid_job_name      # job name
#BSUB -n %CORES%              # number of cores in job
#BSUB -o output.%J.hybrid     # output file name

mpirun.lsf ./program_name.exe

然后在你的makefile中执行:

sed s/%CORES%/${CORES}/g job_script.tmpl > job_script.lsf
bsub < job_script.lsf

或者,您可以在命令行上将选项设置为bsub,也可以在作业脚本中通过#BSUB指令设置选项。所以在makefile中执行:

bsub -n $CORES < job_script.lsf

在命令行上传递给bsub的值将覆盖作业脚本中#BSUB -n指令定义的值。这种方式稍微简单一些,但第一种方法可以记录作业中使用的核心数量,以备将来参考。