我在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
答案 0 :(得分:0)
您可以将环境变量传递给脚本,以指示作业是否并行。例如:
qsub script.sh -v parallel=true
或qsub script.sh
表示作业分别是并行或串行的。然后你可以在脚本中有一些行:
if -z $parallel
file=func_parallel.cpp
else
file=func_serial.cpp
# compile and run the binary
然而,似乎更容易只有两个二进制副本可用,一个是串行的,另一个是并行的,而不是每次都选择.cpp和重建,也许你应该选择哪个二进制并且每次都运行。