我有一个大型并行(使用MPI)模拟应用程序,它可以生成大量数据.为了评估这些数据,我使用了一个python脚本.
我现在需要做的是运行此应用程序很多次(> 1000)并从结果数据计算统计属性.
到目前为止,我的方法是,使用并行运行的python脚本(使用mpi4py,使用即48个节点)调用模拟代码subprocess.check_call.
我需要这个调用来串行运行我的mpi模拟应用程序.
在这种情况下,我不需要模拟并行运行.然后,python脚本可以并行分析数据,并在完成后将启动新的模拟运行,直到累积大量运行.
目标是
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)
multi_call_slave.py(这将是C模拟代码):from mpi4py …Run Code Online (Sandbox Code Playgroud)