具有MPI且具有特定数量的MPI线程的HDF5 h5py segfault

时间:2019-05-14 13:28:15

标签: python mpi hdf5 h5py

我一直在尝试通过h5py在Python中使用HDF5文件,即使在调用create_dataset()的情况非常简单的情况下,我也会遇到一些MPI线程计数的错误。

我的最小失败示例如下所示-可以将布尔值设置为导致段错误(或不引起段错误),表明布尔值取决于是否为新数组设置了maxshape。

这是启用了MPI的,并且运行

mpirun -np 5 python test.py

它对于1,2,3和4 MPI进程正常工作,但更多的是段错误。我猜想我在工作的核心位置上也有UB,但是恰好在这种情况下它不会出现段错误。

我已经尝试使用HDF5 1.10.1(来自openSUSE官方软件仓库)和1.10.4(来自hdf5网站并自行编译),以及针对Python的h5py 2.8.0和2.9.0(Anaconda)进行了尝试2.7。我正在使用MPI 1.10.7。

我想知道是否有人以前看过或有任何见识。不幸的是,我在HDF5论坛上没有得到任何回复,但我怀疑其中一个库中存在错误。

from mpi4py import MPI
import h5py
import numpy as np

with h5py.File('test.h5', 'w', driver='mpio', comm=MPI.COMM_WORLD) as myfile:
    shape_tuple = (10,1)
    max_shape_tuple = (None,1)

    trigger_segfault = True 

    if trigger_segfault:
        new_array_piece = myfile.create_dataset(
                "1", shape_tuple, maxshape=max_shape_tuple
            )
    else:
        new_array_piece = myfile.create_dataset(
                    "1", shape_tuple
                )

0 个答案:

没有答案