使用MPI的h5py打开文件块

2024-04-29 08:46:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用h5py和mpi打开hdf5文件,方法是执行

print("Opening...")
f = h5py.File(file_path, "r", driver='mpio', comm=MPI.COMM_WORLD)
print("Done")

由于某些原因,这行代码在我的项目中执行时会阻塞。 我试图创建一个可复制的小示例,但没有成功,因为这行代码在这些示例中的工作方式应该是一样的。在

所以在我的代码库中有一些东西我无法追踪,这导致上面提到的代码行被阻塞。在

问题:什么会导致h5py.File阻塞?

注意:CPU达到100%,所以mpi似乎在等待什么。。。在


注2:从我的代码库中添加了一些根本没有帮助的代码:

在if工作之前打开文件,在if内部只是块。。。在

^{pr2}$

代码通过

mpiexec -n 2 python Test.py
or
mpiexec.mpich -n 2 python Test.py

安装了两个并尝试了它们,但得到了相同的结果。。。在


Tags: 文件方法代码pytest示例iffile
1条回答
网友
1楼 · 发布于 2024-04-29 08:46:41

我的猜测是,open调用是集体的,因此需要由communicator中的所有进程调用,而且由于您指定COMM_WORLD,这意味着所有人。如果只调用一个子集,则它将阻塞。在

我不是百分之百清楚你想做什么-你只想打开主任务的文件吗?这意味着只有主任务才能实际写入文件,因此工作人员需要使用MPI来发送他们想要写入的任何数据。在

如果是这样,您可以只在main上调用open,但是使用communicator COMM_SELF,这意味着它不会等待所有其他列组也调用open。在

谨致问候

大卫

相关问题 更多 >