在PBS批处理脚本文件中定义C ++文件/函数名称

时间:2014-07-24 15:50:26

标签: c++ openmp pbs

我在C ++中进行批处理,想知道是否可以在PBS脚本文件中定义.cpp文件名(见下文)。例如,对于我的.cpp个文件之一,我有两个版本:并行OpenMP版本(func_parallel.cpp)和串行版本(func_serial.cpp)。我希望能够有两个脚本文件(两者都类似于下面的文件):一个指定我想使用func_parallel.cpp,另一个指定我想使用func_serial.cpp,无需在代码中手动执行此操作。

这可能吗?

脚本文件:

#!/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@address

module purge
module load intel-compiler/11.1.073

export OMP_NUM_THREADS=4

cd $WORKDIR

./myprog

1 个答案:

答案 0 :(得分: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和重建,也许你应该选择哪个二进制并且每次都运行。