Pnetcdf New File Format

Katie Antypas kantypas at lbl.gov
Tue Aug 12 03:22:22 CDT 2008


Thanks for the responses.  I think I was off by an exponent.  I knew 
there was the subarray limit, but had it at 2^32 rather than 2^31.

I have a few other things to report too.

First, I believe I found a bug in the ncmpidump tool.  For a 
multidimensional variable of size (x,y,z), ncmpidump reports the 
variable dimensions as (x,x,y) and which leads the data output to be 
incorrect as well.

Secondly, I have successfully created a variable size of > 4GB using a 
3d-multidimensional variable, without using the UNLIMITED dimension, so 
this is good news.  I tested creating a variable up to 32 GB without 
problems.  Next I tried to put additional variables into the file, but 
it appears that any variables after the first one are still cut off at 
4GB.  Is this a known issue?

I am working with a group who needs to write out about ~50 16GB 
variables for a production run.  There are a number of different work 
arounds but right now we have to focus on performance.  The current 
implementation puts each variable in a separate file, but we are finding 
the overhead of opening and closing files to be high which is why I am 
trying to test putting all or at least some of the variables in the same 
file.

Katie

Wei-keng Liao wrote:
> Hi, Katie,
>
> The development of the new pnetcdf 64bit integer format is still in its
> very early stage. Dr. Kui Gao here at Northwestern is working on it.
>
> The reason of why 1D array with more than 2^31 elements is not work is
> because the current pnetcdf's implementation calls
> MPI_Type_create_subarray() and its arguments are defined as int (32bit
> integers). Rob R., Rob L. and we are all aware of this problem. Kui is
> implementing an alternative approach now. Once this is done, we will
> update the source asap.
>
> As for the integer type, my suggestion is to use MPI_Offset, rather than
> int64_t. int64_t is for internal implementation. Using MPI_Offset in
> application programs is more portable and consistent.
>
> Wei-keng
>
>
> On Mon, 11 Aug 2008, Katie Antypas wrote:
>
>    
>> Hi Rob,
>>
>> I am testing out the new pnetcdf file format which is supposed to allow
>> variable sizes greater than 4GB (as long as they have fewer than 2^31
>> elements).  I am running on the Franklin Cray XT4 system at NERSC with
>> the PGI compilers and have not successfully created a 1d variable size
>> larger than 4GB.  (I'll try multi-dimensions soon.)
>>
>> I pass "NC_CLOBBER | NC_64BIT_DATA" to ncmpi_create now.  Also, I was
>> getting type warnings and noticed a new type int64_t in places where
>> type int and MPI_Offset were used before in a number of calls.  What is
>> your recommendation to users regarding the int64_t type?  Should they
>> replace MPI_Offset with int64_t?
>>
>> In either case though, if I do or don't make any changes to the ncmpi
>> calls (namely ncmpi_create, ncmpi_def_var, ncmpi_put_vara_double_all)
>> then I can only create a variable up to 2GB variable size which is under
>> 2^31 NC_DOUBLE elements in a 1 dimensional array.  (If we were counting
>> bytes, rather than doubles my test would be at the 2^31 elements limit.)
>> I didn't think this was the way elements were counted though?
>>
>> Katie
>>
>>
>>
>>
>>
>>
>>
>>
>>      
>
>    
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/parallel-netcdf/attachments/20080812/fa07d928/attachment.htm>


More information about the parallel-netcdf mailing list