33 #include "sion_fortran_mpi.h"    65              sion_int64 *chunksize, 
    66              sion_int32 *fsblksize, 
    75   char     *fname_tmp,*fmode_tmp;
    76   MPI_Comm  cgComm,clComm;
    79 #ifdef SION_DEBUG_BUG_OPENMPI    83     MPI_Comm_rank(MPI_COMM_WORLD,&grank);
    84     fprintf(stderr,
"fsion_paropen_mpi: grank: %d\n", (
int) grank);
    85     MPI_Comm_dup(MPI_COMM_WORLD,&newcomm);
    86     MPI_Comm_split(MPI_COMM_WORLD,0,grank,&newcomm);
    90   fname_tmp = (
char *) malloc((
size_t) ((fname_len + 1) * 
sizeof(
char)));
    91   fmode_tmp = (
char *) malloc((
size_t) ((file_mode_len + 1) * 
sizeof(
char)));
    94   strncpy(fname_tmp, fname, fname_len);
    95   strncpy(fmode_tmp, file_mode, file_mode_len);
    97   fname_tmp[fname_len] = 
'\0';
    98   fmode_tmp[file_mode_len] = 
'\0';
   102   cgComm = MPI_Comm_f2c(*fgComm);
   103   clComm = MPI_Comm_f2c(*flComm); 
   105 #ifdef SION_DEBUG_UNUSED   106   if (*globalrank == 0){
   107     if (cgComm == MPI_COMM_WORLD) fprintf(stderr,
"COMM_WORLD selected\n");
   108     fprintf(stderr,
"fsion_paropen_mpi: filename_len: %d\n", (
int) fname_len);
   109     fprintf(stderr,
"fsion_paropen_mpi: filename: %s\n",fname_tmp);
   114     fprintf(stderr,
"fsion_paropen_mpi: filemode_len: %d\n", (
int) file_mode_len);
   115     fprintf(stderr,
"fsion_paropen_mpi: filemode: %s\n",fmode_tmp);
   117     fprintf(stderr,
"fsion_paropen_mpi: chunksize: %lld\n",*chunksize);
   118     fprintf(stderr,
"fsion_paropen_mpi: fsblksize: %d\n",*fsblksize);
   119     fprintf(stderr,
"fsion_paropen_mpi: numFiles:  %d\n",*numFiles);
   123   (*sid) = 
sion_paropen_mpi(fname_tmp, fmode_tmp, numFiles, cgComm, &clComm, chunksize, fsblksize, globalrank, &fileptr, NULL);
   167                    sion_int64 *chunksize,
   168                    sion_int32 *fsblksize,
   169                    int *globalrank, 
int *sid, 
char *newfname, 
int fname_len, 
int file_mode_len, 
int newfname_len)
   172   MPI_Comm  cgComm, clComm;
   175   char     *fname_tmp, *fmode_tmp, *newfname_tmp;
   178   fname_tmp = (
char *) malloc((
size_t) ((fname_len + 1) * 
sizeof(
char)));
   179   fmode_tmp = (
char *) malloc((
size_t) ((file_mode_len + 1) * 
sizeof(
char)));
   180   newfname_tmp = (
char *) malloc((
size_t) ((newfname_len + 1) * 
sizeof(
char)));
   182   strncpy(fname_tmp, fname, fname_len);
   183   strncpy(fmode_tmp, file_mode, file_mode_len);
   185   fname_tmp[fname_len] = 
'\0';
   186   fmode_tmp[file_mode_len] = 
'\0';
   187   newfname_tmp[newfname_len] = 
'\0';
   188   strncpy(newfname_tmp, newfname, newfname_len);
   190   cgComm = MPI_Comm_f2c(*fgComm);
   212   (*sid) = sion_paropen_multi_mpi(fname_tmp, fmode_tmp, numFiles, cgComm, &clComm, chunksize, fsblksize, globalrank, &fileptr, newfname_tmp);
   214   *flComm = MPI_Comm_c2f(clComm);
   215   strncpy(newfname, newfname_tmp, newfname_len);
 
int sion_paropen_mpi(const char *fname, const char *file_mode, int *numFiles, MPI_Comm gComm, const MPI_Comm *lComm, sion_int64 *chunksize, sion_int32 *fsblksize, int *globalrank, FILE **fileptr, char **newfname)
Open a sion file using MPI.
void fsion_parclose_mpi_c(int *sid, int *ierr)
Fortran procedure to close a sion file in parallel.
void fsion_paropen_mpi_c(char *fname, char *file_mode, int *numFiles, MPI_Fint *fgComm, MPI_Fint *flComm, sion_int64 *chunksize, sion_int32 *fsblksize, int *globalrank, char *newfname, int *sid, int fname_len, int file_mode_len, int newfname_len)
Wrapper function that calls fsion_paropen_multi_mpi for 1 file.
int sion_parclose_mpi(int sid)
Close a sion file using MPI.
void fsion_paropen_multi_mpi_c(char *fname, char *file_mode, int *numFiles, MPI_Fint *fgComm, MPI_Fint *flComm, sion_int64 *chunksize, sion_int32 *fsblksize, int *globalrank, int *sid, char *newfname, int fname_len, int file_mode_len, int newfname_len)
Fortran procedure to open multiple sion files in parallel.