首页 > 解决方案 > 为什么使用 h5py 并行写入的 python 文件上的 mpiexec 命令使用超过指定数量的内核?

问题描述

我有以下名为 demo2.py 的文件。复制自:使用 h5py和http://docs.h5py.org/en/stable/mpi.html并行写入不同的组

from mpi4py import MPI
import h5py

rank = MPI.COMM_WORLD.rank
size = MPI.COMM_WORLD.size

f = h5py.File('parallel_test.hdf5', 'w', driver='mpio', comm=MPI.COMM_WORLD)

dsets = []
for i in range(size):
    dsets.append(f.create_dataset('test{0}'.format(i), (1,), dtype='i'))

dsets[rank][:] = rank

f.close()

我使用:mpiexec -n 2 python3 demo2.py在命令行中运行它。当我检查正在使用的核心时htop,我可以清楚地看到超过 2 个核心正在被使用。我有三个问题:

  1. 为什么以及如何发生这种情况?
  2. 如何严格限制正在使用的核心数量?
  3. 部分代码如何只执行一次而其余部分被分发?还是我误解了这一点?您能否解释一下程序的流程以及进程之间的资源共享?

非常感谢,非常感谢任何帮助!

标签: pythonmpihdf5h5pympi4py

解决方案


推荐阅读