2017-01-27 11 views
0

メイクファイルを使用してパイプラインを実行していますが、コアの数は環境変数としてメイクファイルに設定されています。コメントの印刷環境変数であるBash回避策

メイクファイルはパイプラインの一箇所で、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フラグが「コア」環境変数によって決定してください、そしてハード32に符号化されていないので、私は渡すことができます回避するためにとにかくがあるということですCORES環境変数を-nフラグに設定します。

+0

このラッパースクリプトが呼び出される場所のコード行を指定できますか?おそらくあなたがしたいことを達成するための簡単な方法がありますが、このラッパースクリプトを呼び出す方法を変更する必要があります。 – Fred

+1

これは 'bash'という質問ではありません。どのプログラムがそれらのコメントを解釈するかについての質問です。 – chepner

+1

コメントは '#BSUB'で始まりますか?これらの引数を '。/ program_name.exe'に渡したくないのですか? – reinierpost

答えて

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 

、その後の操作を行います。

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

また、あなたが内部#BSUBディレクティブ経由だけでなく、コマンドラインでbsubにオプションを設定することができますジョブスクリプト。だから、メイクファイルで実行します。

bsub -n $CORES < job_script.lsf 

コマンドラインでbsubに渡された値は、ジョブスクリプト内の#BSUB -nディレクティブで定義された値を上書きします。この方法はもう少し簡単ですが、最初の方法は、将来の参照のために、ジョブで使用されるコアの数を記録するという利点があります。

関連する問題