python - 为什么使用 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 个核心正在被使用。我有三个问题:
- 为什么以及如何发生这种情况?
- 如何严格限制正在使用的核心数量?
- 部分代码如何只执行一次而其余部分被分发?还是我误解了这一点?您能否解释一下程序的流程以及进程之间的资源共享?
非常感谢,非常感谢任何帮助!
解决方案
推荐阅读
- clojurescript - 如何在带有点击事件的试剂渲染后更改状态(img 的 src)clojurescript 组件
- javascript - v-for如何将axios数据放入v-select?
- html - Dockerize 一个烧瓶认证服务
- java - 如何在带有 Spring Boot 后端的 Vue.js 应用程序中包含 CSRF 令牌?
- java - .net RSACryptoServiceProvider.Encrypt java中的类比
- sql - 将逗号分隔的值拆分为多列
- android - android 10,避免对服务进行电池优化
- minikube - 是否可以使用 minikube 在 kubernetes 上运行 elk 堆栈
- c# - 在 c# 中使用 MathNet.Symbolics 进行因式分解
- bash - 如何将带有 $ 的值传递给通过 su 运行的程序?