MPI_Info in pnetcdf

Wei-keng Liao wkliao at ece.northwestern.edu
Sun Jun 10 12:16:35 CDT 2007


After replacing
   ierr = ncmpi_open((MPI_Comm)(*v1), p2, *v3, (MPI_Info)(*v4), v5);
with
   ierr = ncmpi_open((MPI_Comm)(*v1), p2, *v3, MPI_Info_f2c(*v4), v5);
in file src/libf/openf.c, everything is fine.

Similar for src/libf/createf.c.
   ierr = ncmpi_create((MPI_Comm)(*v1), p2, *v3, MPI_Info_f2c(*v4), v5);

Thanks.
(I assume these changes will be added to the CVS.)

Wei-keng


On Sun, 10 Jun 2007, Rajeev Thakur wrote:

> The Pnetcdf code should internally use MPI_Info_f2c.
>
> Rajeev
>
>> -----Original Message-----
>> From: owner-parallel-netcdf at mcs.anl.gov
>> [mailto:owner-parallel-netcdf at mcs.anl.gov] On Behalf Of Wei-keng Liao
>> Sent: Sunday, June 10, 2007 12:59 AM
>> To: parallel-netcdf at mcs.anl.gov
>> Subject: MPI_Info in pnetcdf
>>
>>
>> Pnetcdf seems to assume that data type of MPI_Info is int,
>> which is OK if pnetcdf is built on top of MPICH2 (MPICH2
>> type-defines MPI_Info as int.)
>>
>> But MPI_Info is defined differently in MPICH1 as
>>      typedef struct MPIR_Info *MPI_Info;
>>
>> So, when I ran the codes below using MPICH1, I got a seg fault.
>>
>> Wei-keng
>>
>> ---------------------------------------------------------------
>> % cat pnf_test.f90
>> program pnf_test
>>    implicit none
>>    include 'mpif.h'
>> # include "pnetcdf.inc"
>>
>>    integer ierr, info, ncid
>>
>>    call MPI_Init(ierr)
>>
>>    call MPI_Info_create(info, ierr)
>>    call MPI_Info_set(info, 'cb_buffer_size', '1048576', ierr)
>>
>>    ierr = nfmpi_create(MPI_COMM_WORLD, 'testfile.nc', &
>>                        NF_CLOBBER, info, ncid)
>>    ierr = nfmpi_enddef(ncid)
>>    ierr = nfmpi_close(ncid)
>>
>>    call MPI_Info_free(info, ierr)
>>    call MPI_Finalize(ierr)
>> end program pnf_test
>>
>>
>




More information about the parallel-netcdf mailing list