propose a new API ncmpi_get_file_info()

Rob Ross rross at mcs.anl.gov
Mon Jul 16 16:55:59 CDT 2007


good idea. thanks! -- rob

Wei-keng Liao wrote:
> I just found the error checking is not right.  Here is the revised 
> version. Also, the Fortran implementation is also provided below.
> (I know the fortran file is automatically generated, but I don't know 
> where stores the source files.) Some header files, like lib/pnetcdf.h,
> libf/mpifnetcdf.h and Makefiles, also need to update.
> 
> Wei-keng
> 
> 
> ---- in mpinetcdf.c ----------------------------------------------------
> int
> ncmpi_get_file_info(int ncid, MPI_Info *info_used) {
>   int status = NC_NOERR;
>   int mpireturn;
>   NC *ncp;
> 
>   status = ncmpii_NC_check_id(ncid, &ncp);
>   if (status != NC_NOERR)
>     return status;
> 
>   mpireturn = MPI_File_get_info(ncp->nciop->collective_fh, info_used);
>   if (mpireturn != MPI_SUCCESS) {
>       int rank;
>       char errorString[512];
>       int  errorStringLen;
>       MPI_Comm_rank(ncp->nciop->comm, &rank);
>       MPI_Error_string(mpireturn, errorString, &errorStringLen);
>       printf("%2d: MPI_File_get_info error = %s\n", rank, errorString);
>       return NC_EFILE;
>   }
>   return status;
> }
> 
> ---- new file libf/get_file_infof.c -------------------------------------
> /* -*- Mode: C; c-basic-offset:4 ; -*- */
> /*
>  *  (C) 2001 by Argonne National Laboratory.
>  *      See COPYRIGHT in top-level directory.
>  *
>  * This file is automatically generated by buildiface 
> -infile=../lib/pnetcdf.h -deffile=defs
>  * DO NOT EDIT
>  */
> #include "mpinetcdf_impl.h"
> 
> 
> #ifdef F77_NAME_UPPER
> #define nfmpi_get_file_info_ NFMPI_GET_FILE_INFO
> #elif defined(F77_NAME_LOWER_2USCORE)
> #define nfmpi_get_file_info_ nfmpi_get_file_info__
> #elif !defined(F77_NAME_LOWER_USCORE)
> #define nfmpi_get_file_info_ nfmpi_get_file_info
> /* Else leave name alone */
> #endif
> 
> 
> /* Prototypes for the Fortran interfaces */
> #include "mpifnetcdf.h"
> FORTRAN_API int FORT_CALL nfmpi_get_file_info_ ( MPI_Fint *v1,  MPI_Fint 
> *v2 ){
>     int ierr;
>     MPI_Info info;
> 
>     ierr = ncmpi_get_file_info( *v1, &info );
>     *v2 = MPI_Info_c2f(info);
> 
>     return ierr;
> }
> 
> 
> 
> 
> On Tue, 3 Jul 2007, Wei-keng Liao wrote:
> 
>>
>> I propose a new API to obtain the MPI file info object from an opened 
>> netcdf dataset. The syntax and implementation of this API are given 
>> below. This code segment can be added into mpinetcdf.c and the API 
>> declaration added in header file pnetcdf.h. This API may enable IOR 
>> benchmark to provide showHints option.
>>
>> Wei-keng
>>
>>
>> int
>> ncmpi_get_file_info(int ncid, MPI_Info *info_used) {
>>  int status = NC_NOERR;
>>  int mpireturn;
>>  NC *ncp;
>>
>>  status = ncmpii_NC_check_id(ncid, &ncp);
>>  if (status != NC_NOERR)
>>    return status;
>>
>>  mpireturn = MPI_File_get_info(ncp->nciop->collective_fh, info_used);
>>  if (mpireturn != MPI_SUCCESS) {
>>      int rank;
>>      MPI_Comm_rank(ncp->nciop->comm, &rank);
>>      ncmpii_handle_error(rank, mpireturn, "MPI_File_sync");
>>      MPI_Finalize();
>>      return NC_EFILE;
>>  }
>>  return status;
>> }
>>
>>
> 




More information about the parallel-netcdf mailing list