Python 超级计算机:在超级计算机上运行的程序的简单例子

Python 超级计算机:在超级计算机上运行的程序的简单例子,python,supercomputers,mpiexec,Python,Supercomputers,Mpiexec,我正在学习如何使用超级计算机来充分利用资源。 假设我有一个python脚本,它将使用给定的随机数创建一个文本文件 myfile.py 这将在本地计算机中仅创建一个文本文件。 是否有任何方法可以使用该程序的多个实例,使用多个节点并获得多个输出 我在C程序中得到了一个mpiexec的模板,看起来像这样,但我找不到任何python程序的模板 #PBS -N my_job #PBS -l walltime=0:10:00 #PBS -l nodes=4:ppn=12 #PBS -j oe cd $PB

我正在学习如何使用超级计算机来充分利用资源。 假设我有一个python脚本,它将使用给定的随机数创建一个文本文件

myfile.py 这将在本地计算机中仅创建一个文本文件。
是否有任何方法可以使用该程序的多个实例,使用多个节点并获得多个输出

我在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
但是我想利用不同的节点
所需输出: 输出/out1.txt、out2.txt、out3.txt等

一些相关链接如下:


请查看此链接,它可能会解决您的问题

因此,您的代码可能类似于:

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

非常感谢你的回答。我将在俄亥俄州超级计算中心测试这段代码。它是否也会在最终输出中复制不同的输出,也许它需要–pbsdcp,但我不知道怎么做?@BhishanPoudel,我不理解你的问题抱歉,我的意思是,如果我在笔记本电脑上运行这段python代码,我只会得到一个输出,outputs/temp.txt,但是如果我们在每个节点中使用7个节点和12个核,我们有7个输出文件吗?e、 g.输出/temp0.txt,temp1.txt。etc?是的,您可以使用以下命令行在自己的机器上测试它:mpiexec-n5 python myfile.py在5个preces上运行,创建5个文件。
#!/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