[petsc-users] Unable to create >4GB sized HDF5 files on Cray XC30

Jed Brown jedbrown at mcs.anl.gov
Sun Aug 18 08:10:19 CDT 2013


Juha Jäykkä <juhaj at iki.fi> writes:

> For small files, chunking is probably not going to change performance in any 
> significant manner, so one option could be to simply not chunk small files at 
> all

This is effectively what is done now, considering that HDF5 needs
chunking to be enabled to use H5S_UNLIMITED.

> and then chunk big files "optimally" – whatever that means. HDFgroup
> seems to think that "the chunk size be approximately equal to the
> average expected size of the data block needed by the application."
> (http://www.hdfgroup.org/training/HDFtraining/UsersGuide/Perform.fm2.html)
> For more chunking stuff:
>
> In the case of PETSc I think that means not the WHOLE application, but one MPI 
> rank (or perhaps one SMP host running a mixture of MPI ranks and OpenMP 
> threads), which is probably always going to be < 4 GB (except perhaps in the 
> mixture case).

Output uses a collective write, so the granularity of the IO node is
probably more relevant for writing (e.g., BG/Q would have one IO node
per 128 compute nodes), but almost any chunk size should perform
similarly.  It would make a lot more difference for something like
visualization where subsets of the data are read, typically with
independent IO.

> turning chunking completely off works too

Are you sure?  Did you try writing a second time step?  The
documentation says that H5S_UNLIMITED requires chunking.

> See above, but note also that there can at most be 64k chunks in the file, so 
> fixing the chunk size to 10 MiB means limiting file size to 640 GiB.

Thanks for noticing this limit.  This might come from the 64k limit
on attribute sizes.

> My suggestion is to give PETSc a little more logic here, something like this:
>
> if sizeof(data) > 4GiB * 64k: no chunking # impossible to chunk!
> elif sizeof(data) < small_file_limit: no chunking # probably best for speed
> elif current rank's data size < 4 GB: chunk using current ranks data size

Chunk size needs to be collective.  We could compute an average size
From each subdomain, but can't just use the subdomain size.

> else divide current rank's data size by 2**(number of dimensions) until < 4 GB 
> and then use that chunk size.

We might want the chunk size to be smaller than 4GiB anyway to avoid
out-of-memory problems for readers and writers.


I think the chunk size (or maximum chunk size) should be settable by the user.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130818/d8ee23e1/attachment.pgp>


More information about the petsc-users mailing list