2014-07-24 3 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=true 또는

qsub script.sh 작업이 각각 병렬 또는 직렬 있음을 나타낸다. 그런 다음 같은 스크립트의 몇 줄 수 : 그러나

if -z $parallel 
    file=func_parallel.cpp 
else 
    file=func_serial.cpp 

# compile and run the binary 

를, 바로 진 가능한 두 개의 복사본, 일련 하나가 쉬울 것 같아 다른 하나는 대신 병렬입니다 .cpp를 선택하고 매번 다시 빌드 할 때마다 매번 바이너리를 선택하고 매번 실행해야합니다.

+0

답장을 보내 주셔서 감사합니다. @dbeer. 변수 "file"을 내 코드로 어떻게 읽습니까? – krylov

+0

다시 컴파일해야합니다. 그래서 두 번 컴파일하고 작업 스크립트에서 바이너리를 선택하는 것이 좋습니다. – dbeer