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