如果已经有人问过了,我道歉。但我已经阅读了大量文档,仍然不确定如何做我想做的事情。
我希望同时在多个核心上运行Python脚本。
我有1800个.h5文件在一个目录中,它们的名称为“snaphots_s1.h5”,“snapshots_s2.h5”等,每个文件约30MB大小。这个Python脚本:
- 从目录中逐个读取h5py文件。
- 提取和操作h5py文件中的数据。
- 创建所提取数据的图表。
完成后,脚本接着从目录中读取下一个h5py文件并执行相同的过程。因此,在执行此操作期间,没有任何处理器需要通信。
脚本如下:
import h5py
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import cmocean
import os
from mpi4py import MPI
de.logging_setup.rootlogger.setLevel('ERROR')
# Plot writes
count = 1
for filename in os.listdir('directory'): ### [PERF] Applied to ~ 1800 .h5 files
with h5py.File('directory/{}'.format(filename),'r') as file:
### Manipulate 'filename' data. ### [PERF] Each fileI ~ 0.03 TB in size
...
### Plot 'filename' data. ### [PERF] Some fileO is output here
...
count = count + 1
理想情况下,我希望使用mpi4py来完成这个任务(出于各种原因),不过我也可以考虑其他选项,比如multiprocessing.Pool(但事实上我没能让它起作用。我试图按照这里所述的方法)。
那么,我的问题是:我需要在脚本中输入哪些命令才能使用mpi4py并行处理呢?或者,如果这个选项不可行,我该如何并行化脚本呢?
<Manipulate 'filename; data> + <Plot 'filename' data>
包含多少个文件 x 每个文件有多少 [TB] 需要处理?[3]:在获得 HPC 布局运行您的工作包的批准之前,您计划总共花费多少人天的人力资源来进行原型设计和微调 HPC 部分? - user3666197