2016-10-14 3 views
2

리소스를 효율적으로 사용하기 위해 슈퍼 컴퓨터를 사용하는 방법을 배우고 있습니다. 파이썬 스크립트를 가지고 있는데, 주어진 난수로 텍스트 파일을 생성한다고 가정 해 봅시다.슈퍼 컴퓨터 : 슈퍼 컴퓨터에서 실행되는 간단한 프로그램 예

myfile.py는

# Imports 
import random,os 

outdir = 'outputs' 
if not os.path.exists(outdir): 
    os.makedirs(outdir) 

with open (outdir+'/temp.txt','w') as f : 
    a = random.randint(0,9) 
    f.write(str(a)) 

이 로컬 컴퓨터에 하나의 텍스트 파일을 생성합니다.
이 프로그램의 여러 인스턴스를 사용할 수있는 방법이 있습니까? 여러 노드를 사용하고 여러 출력을 얻을 수 있습니까?

C 프로그램에서 mpiexec에 대한 템플릿을 얻었지만 파이썬 프로그램에 대한 템플릿을 찾을 수 없습니다.

#PBS -N my_job 
#PBS -l walltime=0:10:00 
#PBS -l nodes=4:ppn=12 
#PBS -j oe 

cd $PBS_O_WORKDIR 

mpicc -O2 mpi-hello.c -o mpi-hello 

cp $PBS_O_WORKDIR/* $PFSDIR 
cd $PFSDIR 

mpiexec ./mpi-hello 

cp $PFSDIR/* $PBS_O_WORKDIR 

참고 :이 같은 bash는 스크립트를 작성할 수 있습니다 여러 개의 코어를 사용하여 단일 노드에서 :

for i in `seq 1 10`; 
    do 
     python myfile.py && cp temp.txt outputs/out$i.txt & 
    done 

는하지만 노드 다른 활용하고자합니다.
필수 출력 : 출력/out1.txt, out2.txt, out3.txt 등

일부 관련 링크

은 다음과 같습니다
https://www.osc.edu/sites/osc.edu/files/documentation/Batch%20Training%20-%2020150312%20-%20OSC.pdf
https://www.osc.edu/~kmanalo/multithreadedsubmission

답변

3

는 수도 링크를보세요

http://materials.jeremybejarano.com/MPIwithPython/introMPI.html

그래서 당신의 문제를 해결하여

from mpi4py import MPI 
import random,os 

outdir = 'outputs' 
comm = MPI.COMM_WORLD 
rank = comm.Get_rank() 

if not os.path.exists(outdir): 
    os.makedirs(outdir) 

with open (outdir+'/temp%s.txt' % rank,'w') as f : 
    a = random.randint(0,9) 
    f.write(str(a)) 

와 PBS 파일 : 귀하의 답변에 대한

#!/bin/bash 
################################################################################ 
#PBS -N myfile.py 
#PBS -l nodes=7:ppn=4 
#PBS -l walltime=30:30:00:00 
#PBS -m bea 
##PBS -M [email protected] 
############################################################################### 

cores=$(awk 'END {print NR}' $PBS_NODEFILE) 
mpirun -np $cores python myfile.py 
+0

감사합니다 아주 아주 많은 코드가 뭔가를 할 수있다. 오하이오 슈퍼 컴퓨팅 센터에서이 코드를 테스트 해 보겠습니다. –

+0

또한 최종 출력에 다른 출력을 복사 할 것인가? 아마도 pbsdcp가 필요 하겠지만 어떻게 될지 모르겠다. –

+0

@BhishanPoudel, 귀하의 질문을 이해하지 못합니다. – efirvida