MATLAB H5 文件不能超过 2GB

时间:2021-06-30 04:53:48

标签: matlab hdf5

如果我创建一个大于 2GB 的 h5 文件,我会收到错误消息。小于 2GB 的东西工作正常。我不认为这个文件大小是 h5 格式的问题。这在我的 Windows 8.1 机器上似乎不是问题,但在我的 Ubuntu 20.04 机器上。

MWE:

fname = 'tmp001.h5';
h5create(fname,'/DS1',[195 2048 1500],'DataType','single'); % doesn't work
h5write(fname,'/DS1',1,[1 1 1],[1 1 1]);

fname = 'tmp002.h5';
h5create(fname,'/DS1',[195 2048 1400],'DataType','single');% doesn't work
h5write(fname,'/DS1',1,[1 1 1],[1 1 1]);

fname = 'tmp003.h5';
h5create(fname,'/DS1',[195 2048 1300],'DataType','single');% does work
h5write(fname,'/DS1',1,[1 1 1],[1 1 1]);

如果我只给它一个数据集的片段,这似乎只是一个问题,即使如此,只要数据的大小超过 2^14,它就可以工作!查看文件 4 和 5:

fname = 'tmp004.h5';
h5create(fname,'/DS1',[536886273],'DataType','single');% does work
h5write(fname,'/DS1',rand(536886273,1)); % filesize > 2gb but length > 2^14

fname = 'tmp005.h5';
h5create(fname,'/DS1',[536886273],'DataType','single');% doesn't work
h5write(fname,'/DS1',1,1,1); % filesize > 2gb but length < 2^14

fname = 'tmp006.h5';
h5create(fname,'/DS1',[536886272],'DataType','single');% does work
h5write(fname,'/DS1',1,1,1); % length > 2^14 but okay since filesize < 2gb

错误:

Warning: The following error was caught while executing 'H5ML.id' class destructor:
Error using hdf5lib2
The HDF5 library encountered an error and produced the following stack trace information:

    H5FD_truncate                   driver truncate request failed
    H5F_dest                        low level truncate failed
    H5F_try_close                   problems closing file
    H5O_close                       problem attempting file close
    H5D_close                       unable to release object header
    H5I_dec_app_ref                 can't decrement ID ref count
    H5I_dec_app_ref_always_close    can't decrement ID ref count
    H5Dclose                        can't decrement count on dataset ID

Error in H5ML.id/close (line 47)
                H5ML.hdf5lib2(obj.callback, obj.identifier);

Error in H5ML.id/delete (line 36)
        obj.close();

0 个答案:

没有答案