2016-10-14 2 views
2

Ich lerne, wie man Supercomputer verwenden, um die Ressourcen gut zu nutzen. Angenommen, ich habe ein Python-Skript, das eine Textdatei mit einer bestimmten Zufallszahl erstellt.Supercomputer: Dead einfaches Beispiel für ein Programm in Supercomputer laufen

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)) 

Dies wird nur eine Textdatei in der lokalen Maschine erstellen.
Gibt es eine Möglichkeit, die mehrere Instanzen dieses Programms verwenden können, mehrere Knoten verwenden und mehrere Ausgänge erhalten?

Ich habe eine Vorlage für mpiexec in C-Programm, die so aussieht, aber ich konnte keine Vorlage für Python-Programm finden.

#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 

Hinweis: auf einem einzelnen Knoten mehrere Kerne mit I ein Bash-Skript wie folgt schreiben:

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

Aber ich will Knoten anders nutzen.
Erforderliche Ausgabe: Ausgänge/out1.txt, out2.txt, out3.txt etc

einige relevante Links folgen:
https://www.osc.edu/sites/osc.edu/files/documentation/Batch%20Training%20-%2020150312%20-%20OSC.pdf
https://www.osc.edu/~kmanalo/multithreadedsubmission

Antwort

3

Werfen Sie einen Blick auf diesen Link kann es Ihr Problem lösen

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

so Ihre

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)) 

und die pbs Datei:

#!/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

Dank sehr sehr für Ihre Antwort-Code kann so etwas sein. Ich werde diesen Code im Ohio Super-Computing Center testen. –

+0

Wird es auch die verschiedenen Ausgänge in der endgültigen Ausgabe kopiert, vielleicht braucht es - pbsdcp, aber ich weiß nicht wie? –

+0

@BhishanPoudel, ich verstehe Ihre Frage nicht – efirvida

Verwandte Themen