相关疑难解决方法(0)

串行调用mpi二进制文件作为mpi应用程序的子进程

我有一个大型并行(使用MPI)模拟应用程序,它可以生成大量数据.为了评估这些数据,我使用了一个python脚本.

我现在需要做的是运行此应用程序很多次(> 1000)并从结果数据计算统计属性.

到目前为止,我的方法是,使用并行运行的python脚本(使用mpi4py,使用即48个节点)调用模拟代码subprocess.check_call. 我需要这个调用来串行运行我的mpi模拟应用程序. 在这种情况下,我不需要模拟并行运行.然后,python脚本可以并行分析数据,并在完成后将启动新的模拟运行,直到累积大量运行.

目标是

  • 不保存2000次运行的整个数据集
  • 将中间数据保存在内存中

Stub MWE:

档案multi_call_master.py:

from mpi4py import MPI
import subprocess

print "Master hello"

call_string = 'python multi_call_slave.py'

comm = MPI.COMM_WORLD

rank = comm.Get_rank()
size = comm.Get_size()

print "rank %d of size %d in master calling: %s" % (rank, size, call_string)

std_outfile = "./sm_test.out"
nr_samples = 1
for samples in range(0, nr_samples):
    with open(std_outfile, 'w') as out:
        subprocess.check_call(call_string, shell=True, stdout=out)
#       analyze_data()
#       communicate_results()
Run Code Online (Sandbox Code Playgroud)

file multi_call_slave.py(这将是C模拟代码):

from mpi4py …
Run Code Online (Sandbox Code Playgroud)

c python parallel-processing mpi

6
推荐指数
1
解决办法
2125
查看次数

标签 统计

c ×1

mpi ×1

parallel-processing ×1

python ×1