2014-07-24 72 views
0

我是C++中的批處理,並且想知道是否可以在PBS腳本文件中定義.cpp文件名(請參見下文)。例如,對於我的.cpp文件中的一個,我有兩個版本:並行OpenMP版本(func_parallel.cpp)和序列版本(func_serial.cpp)。我希望能夠有兩個腳本文件(都類似於下面的文件):一個指定我想使用func_parallel.cpp,另一個指定我想使用func_serial.cpp,而不必手動在碼。在PBS批處理腳本文件中定義C++文件/函數名稱

這可能嗎?

腳本文件:

#!/bin/bash 

#PBS -S /bin/bash 
#PBS -l walltime=00:10:00 
#PBS -l select=1:ncpus=4:mem=2gb 
#PBS -q QName 
#PBS -N Name 
#PBS -o Results/output.txt 
#PBS -e Results/error.txt 
#PBS -m abe -M [email protected] 

module purge 
module load intel-compiler/11.1.073 

export OMP_NUM_THREADS=4 

cd $WORKDIR 

./myprog 
+1

你可以在這個PBS文件中使用普通的bash腳本。爲你的文件名定義一個變量是很好的。最好在腳本中解釋要實現的內容。 – Yuan

回答

0

您可以將環境變量傳遞給你的腳本,指示作業是否是平行的。例如:

qsub script.sh -v parallel=trueqsub script.sh

以指示該作業分別是並行或串行。然後,你可以像在腳本里的句子:

if -z $parallel 
    file=func_parallel.cpp 
else 
    file=func_serial.cpp 

# compile and run the binary 

然而,現在看來似乎會更容易只是二進制可用的兩個副本,一個是串行和另一個平行,相反的選擇.cpp並重建每次,也許你應該選擇哪個二進制文件,然後每次運行。

+0

感謝您的回覆@dbeer。如何將變量「文件」讀入我的代碼? – krylov

+0

你將不得不重新編譯。這就是爲什麼我建議你簡單地編譯兩次並在作業腳本中選擇二進制文件。 – dbeer

相關問題