Я выполняю пакетную обработку в C ++ и хочу знать, возможно ли определить .cpp
имя файла в файле сценария PBS (см. ниже). Например, для одного из моих .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
Вы можете передать переменную окружения вашему сценарию, которая указывает, является ли задание параллельным. Например:
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 и перестраивать каждый раз, может быть, вам просто нужно выбрать какой двоичный файл и запустить его каждый раз.