openmp — определение имени файла / функции C ++ в файле пакетного сценария PBS

Я выполняю пакетную обработку в 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

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 и перестраивать каждый раз, может быть, вам просто нужно выбрать какой двоичный файл и запустить его каждый раз.

0

Другие решения


По вопросам рекламы [email protected]