write out about 4GB file with pnetcdf
Lie-Quan Lee
liequan at slac.stanford.edu
Fri May 23 15:03:28 CDT 2008
I was googling the topic and aslo found the limitation of CDF-2 format.
Thanks for the suggestions. Ideally I would like to store them in just a
one-dimensional array because conceptually it is just one eigenvector.
Practically speaking, I could break it into several pieces when it is
larger than the CDF-2 limit.
best regards,
Lie-Quan
On Fri, 2008-05-23 at 14:58 -0500, Wei-keng Liao wrote:
> Hi, Lie-Quan,
>
> Pnetcdf supports CDF-2 file format to allow the file size bigger than 4GB.
> However, the array size is still limited to 2G elements and 4 GB size.
> This is due to the CDF-2 format using signed 4-byte integers to store
> array dimensionalities in the file header.
>
> I can see you are defining a one-dimensional array, which can easily reach
> this limitation. One way to avoid it is to use multi-dimensional arrays,
> but I don't know if it is feasible for your program.
>
>
> Wei-keng
>
>
> On Fri, 23 May 2008, Lie-Quan Lee wrote:
>
> > Dear parallel-netcdf developers,
> >
> > I work on a large-scale finite-element based simulation and use
> > parallel-netcdf for checkpointing internal status of a simulation.
> > Recently we are doing simulations with about 500 million degrees of
> > freedom. This means I will need to write about at least 500 million
> > doubles into one file during a checkpointing operation. And I got the
> > following error:
> >
> >
> > ============
> > Fatal error in MPI_Type_create_subarray: Invalid argument, error stack:
> > MPI_Type_create_subarray(331): MPI_Type_create_subarray(ndims=1,
> > array_of_sizes=0x2355e880, array_of_subsizes=0x2325b7a0,
> > array_of_starts=0x2359b330, order=56, MPI_BYTE, newtype=0x7ffffffdbe54)
> > failed
> > MPI_Type_create_subarray(109): Argument array_of_subsizes has value
> > 976288 but must be within [0,-308901744]
> > =============
> >
> > I wrote a testing program to just write 500 million doubles using
> > parallel-netcdf (see attachment) and did some debugging, It seems that
> > the variable shape is out of this limit at line 1190 in
> > parallel-netcdf-1.0.2/src/lib/mpinetcdf.c because its type is int, not
> > size_t or long. In the parallel netcdf desgin, the varp->shape is size_t
> > type. However, MPI standard requires the second parameter of the
> > function MPI_Type_create_subarray is an int. Is there any workaround on
> > this problem? Or am I missing something there?
> >
> > Thanks very much.
> >
> > Lie-Quan Lee, Ph.D.,
> > Stanford Linear Accelerator Center
> >
> >
> >
> >
>
More information about the parallel-netcdf
mailing list