2014-07-24 36 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

相关问题