29 #include "sion_fortran_ompi.h" 58 sion_int64 *chunksize,
59 sion_int32 *fsblksize,
68 char *fname_tmp,*fmode_tmp;
69 MPI_Comm cgComm,clComm;
71 fname_tmp = (
char *) malloc((
size_t) ((fname_len + 1) *
sizeof(
char)));
72 fmode_tmp = (
char *) malloc((
size_t) ((file_mode_len + 1) *
sizeof(
char)));
75 strncpy(fname_tmp, fname, fname_len);
76 strncpy(fmode_tmp, file_mode, file_mode_len);
78 fname_tmp[fname_len] =
'\0';
79 fmode_tmp[file_mode_len] =
'\0';
81 cgComm = MPI_Comm_f2c(*fgComm);
82 clComm = MPI_Comm_f2c(*flComm);
84 #ifdef SION_DEBUG_UNUSED 87 if (*globalrank == 0){
88 if (cgComm == MPI_COMM_WORLD) fprintf(stderr,
"COMM_WORLD selected\n");
89 fprintf(stderr,
"fsion_paropen_ompi_c: filename_len: %d\n", (
int) fname_len);
90 fprintf(stderr,
"fsion_paropen_ompi_c: filename: %s\n",fname_tmp);
92 fprintf(stderr,
"fsion_paropen_ompi_c: filemode_len: %d\n", (
int) file_mode_len);
93 fprintf(stderr,
"fsion_paropen_ompi_c: filemode: %s\n",fmode_tmp);
95 fprintf(stderr,
"fsion_paropen_ompi_c: chunksize: %lld\n",*chunksize);
96 fprintf(stderr,
"fsion_paropen_ompi_c: fsblksize: %d\n",*fsblksize);
97 fprintf(stderr,
"fsion_paropen_ompi_c: numFiles: %d\n",*numFiles);
103 (*sid) = sion_paropen_ompi(fname_tmp, fmode_tmp, numFiles, cgComm, &clComm, chunksize, fsblksize, globalrank, &fileptr, NULL);
105 *flComm = MPI_Comm_c2f(clComm);
143 sion_int64 *chunksize,
144 sion_int32 *fsblksize,
153 MPI_Comm cgComm, clComm;
156 char *fname_tmp, *fmode_tmp, *newfname_tmp;
159 fname_tmp = (
char *) malloc((
size_t) ((fname_len + 1) *
sizeof(
char)));
160 fmode_tmp = (
char *) malloc((
size_t) ((file_mode_len + 1) *
sizeof(
char)));
161 newfname_tmp = (
char *) malloc((
size_t) ((newfname_len + 1) *
sizeof(
char)));
164 strncpy(fname_tmp, fname, fname_len);
165 strncpy(fmode_tmp, file_mode, file_mode_len);
167 fname_tmp[fname_len] =
'\0';
168 fmode_tmp[file_mode_len] =
'\0';
169 newfname_tmp[newfname_len] =
'\0';
170 strncpy(newfname_tmp, newfname, newfname_len);
172 cgComm = MPI_Comm_f2c(*fgComm);
174 (*sid) = sion_paropen_ompi(fname_tmp, fmode_tmp, numFiles, cgComm, &clComm, chunksize, fsblksize, globalrank, &fileptr, &newfname_tmp);
176 *flComm = MPI_Comm_c2f(clComm);
177 strncpy(newfname, newfname_tmp, newfname_len);
198 (*ierr) = sion_parclose_ompi(*sid);
void fsion_parclose_ompi_c(int *sid, int *ierr)
Fortran procedure to close a sion file opened in OpenMP/MPI in parallel.
void fsion_paropen_ompi_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)
Fortran wrapper function that calls sion_paropen_mpi for 1 file.
void fsion_paropen_multi_ompi_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.