超级计算机:超级计算机中 运行 程序的简单示例
Supercomputer: Dead simple example of a program to run in supercomputer
我正在学习如何使用超级计算机来善用资源。
假设我有一个 python 脚本,它将创建一个具有给定随机数的文本文件。
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 模板,看起来像这样,但是我找不到 python 程序的任何模板。
#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
但我想利用不同的节点。
所需输出:
outputs/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
看看这个link它可能会解决你的问题
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 mail@mail.mail
###############################################################################
cores=$(awk 'END {print NR}' $PBS_NODEFILE)
mpirun -np $cores python myfile.py
我正在学习如何使用超级计算机来善用资源。 假设我有一个 python 脚本,它将创建一个具有给定随机数的文本文件。
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 模板,看起来像这样,但是我找不到 python 程序的任何模板。
#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
但我想利用不同的节点。
所需输出:
outputs/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
看看这个link它可能会解决你的问题
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 mail@mail.mail
###############################################################################
cores=$(awk 'END {print NR}' $PBS_NODEFILE)
mpirun -np $cores python myfile.py