我试图用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
安装了两个并尝试了它们,但得到了相同的结果。。。在
我的猜测是,open调用是集体的,因此需要由communicator中的所有进程调用,而且由于您指定COMM_WORLD,这意味着所有人。如果只调用一个子集,则它将阻塞。在
我不是百分之百清楚你想做什么-你只想打开主任务的文件吗?这意味着只有主任务才能实际写入文件,因此工作人员需要使用MPI来发送他们想要写入的任何数据。在
如果是这样,您可以只在main上调用open,但是使用communicator COMM_SELF,这意味着它不会等待所有其他列组也调用open。在
谨致问候
大卫
相关问题 更多 >
编程相关推荐