SIONlib  1.7.7
Scalable I/O library for parallel access to task-local files
sion_f77_mpi.f
1 ************************************************************************
2 ** SIONLIB http://www.fz-juelich.de/jsc/sionlib **
3 ************************************************************************
4 ** Copyright (c) 2008-2019 **
5 ** Forschungszentrum Juelich, Juelich Supercomputing Centre **
6 ** **
7 ** See the file COPYRIGHT in the package base directory for details **
8 ************************************************************************
9 
10 **************************************************************
11 ** Fortran 77 MPI interface to SIONlib **
12 **************************************************************
13 *
14 * @file sion_f77.f
15 *
16 * @brief Fortran77 interface
17 *
18 * @author Florian Janetzko
19 * @date 29.05.2013
20 * @date 05.06.2014 wrapper for collectives added
21 *
22 
23 ***********************************************
24 * Fortran interface subroutines and functions *
25 ***********************************************
26 * Subroutines (without overloading)
27  SUBROUTINE fsion_paropen_mpi(FNAME,FILE_MODE,NFILES,
28  & GCOMM,LCOMM,
29  & CHUNKSIZE,FSBLKSIZE,GLOBALRANK,
30  & NEWFN,SID)
31 
32  IMPLICIT NONE
33 
34  include 'sion_f77.h'
35 
36  CHARACTER(LEN=*) FNAME
37  CHARACTER(LEN=*) FILE_MODE
38  CHARACTER(LEN=*) NEWFN
39  INTEGER GCOMM
40  INTEGER LCOMM
41  INTEGER NFILES
42  INTEGER*8 CHUNKSIZE
43  INTEGER*4 FSBLKSIZE
44  INTEGER GLOBALRANK
45  INTEGER SID
46 
47  CALL fsion_paropen_mpi_c(fname,file_mode,nfiles,gcomm,lcomm,
48  & chunksize,fsblksize,globalrank,
49  & newfn,sid)
50  END
51 
52 
53  SUBROUTINE fsion_parclose_mpi(SID,IERR)
54 
55  IMPLICIT NONE
56 
57  include 'sion_f77.h'
58 
59  INTEGER SID
60  INTEGER IERR
61 
62  CALL fsion_parclose_mpi_c(sid,ierr)
63  END
64 
65 * Subroutines (with overloading)
66 * Datatype INTEGER
67  SUBROUTINE fsion_coll_fwrite_mpi_integer(DATA,SIZE,NITEMS,SID,RC)
68 
69  IMPLICIT NONE
70 
71  include 'sion_f77.h'
72 
73  INTEGER DATA
74  INTEGER*8 SIZE
75  INTEGER*8 NITEMS
76  INTEGER SID
77  INTEGER*8 RC
78 
79  CALL fsion_coll_fwrite_mpi(DATA,SIZE,nitems,sid,rc)
80  END
81 
82  SUBROUTINE fsion_coll_fread_mpi_integer(DATA,SIZE,NITEMS,SID,RC)
83 
84  IMPLICIT NONE
85 
86  include 'sion_f77.h'
87 
88  INTEGER DATA
89  INTEGER*8 SIZE
90  INTEGER*8 NITEMS
91  INTEGER SID
92  INTEGER*8 RC
93 
94  CALL fsion_coll_fread_mpi(DATA,SIZE,nitems,sid,rc)
95  END
96 
97 * Datatype CHARACTER
98  SUBROUTINE fsion_coll_fwrite_mpi_character(DATA,SIZE,NITEMS,SID,
99  & RC)
100 
101  IMPLICIT NONE
102 
103  include 'sion_f77.h'
104 
105  CHARACTER DATA
106  INTEGER*8 SIZE
107  INTEGER*8 NITEMS
108  INTEGER SID
109  INTEGER*8 RC
110 
111  CALL fsion_coll_fwrite_mpi(DATA,SIZE,nitems,sid,rc)
112  END
113 
114  SUBROUTINE fsion_coll_fread_mpi_character(DATA,SIZE,NITEMS,
115  & SID,RC)
116 
117  IMPLICIT NONE
118 
119  include 'sion_f77.h'
120 
121  CHARACTER DATA
122  INTEGER*8 SIZE
123  INTEGER*8 NITEMS
124  INTEGER SID
125  INTEGER*8 RC
126 
127  CALL fsion_coll_fread_mpi(DATA,SIZE,nitems,sid,rc)
128  END
129 
130 * Datatype REAL
131  SUBROUTINE fsion_coll_fwrite_mpi_real(DATA,SIZE,NITEMS,SID,RC)
132 
133  IMPLICIT NONE
134 
135  include 'sion_f77.h'
136 
137  REAL DATA
138  INTEGER*8 SIZE
139  INTEGER*8 NITEMS
140  INTEGER SID
141  INTEGER*8 RC
142 
143  CALL fsion_coll_fwrite_mpi(DATA,SIZE,nitems,sid,rc)
144  END
145 
146  SUBROUTINE fsion_coll_fread_mpi_real(DATA,SIZE,NITEMS,SID,RC)
147 
148  IMPLICIT NONE
149 
150  include 'sion_f77.h'
151 
152  REAL DATA
153  INTEGER*8 SIZE
154  INTEGER*8 NITEMS
155  INTEGER SID
156  INTEGER*8 RC
157 
158  CALL fsion_coll_fread_mpi(DATA,SIZE,nitems,sid,rc)
159  END
160 
161 * Datatype DOUBLE PRECISION
162  SUBROUTINE fsion_coll_fwrite_mpi_double(DATA,SIZE,NITEMS,SID,RC)
163 
164  IMPLICIT NONE
165 
166  include 'sion_f77.h'
167 
168  DOUBLE PRECISION DATA
169  INTEGER*8 SIZE
170  INTEGER*8 NITEMS
171  INTEGER SID
172  INTEGER*8 RC
173 
174  CALL fsion_coll_fwrite_mpi(DATA,SIZE,nitems,sid,rc)
175  END
176 
177  SUBROUTINE fsion_coll_fread_mpi_double(DATA,SIZE,NITEMS,SID,RC)
178 
179  IMPLICIT NONE
180 
181  include 'sion_f77.h'
182 
183  DOUBLE PRECISION DATA
184  INTEGER*8 SIZE
185  INTEGER*8 NITEMS
186  INTEGER SID
187  INTEGER*8 RC
188 
189  CALL fsion_coll_fread_mpi(DATA,SIZE,nitems,sid,rc)
190  END
191 
192 * Datatype COMPLEX
193  SUBROUTINE fsion_coll_fwrite_mpi_complex(DATA,SIZE,NITEMS,SID,RC)
194 
195  IMPLICIT NONE
196 
197  include 'sion_f77.h'
198 
199  COMPLEX DATA
200  INTEGER*8 SIZE
201  INTEGER*8 NITEMS
202  INTEGER SID
203  INTEGER*8 RC
204 
205  CALL fsion_coll_fwrite_mpi(DATA,SIZE,nitems,sid,rc)
206  END
207 
208  SUBROUTINE fsion_coll_fread_mpi_complex(DATA,SIZE,NITEMS,SID,RC)
209 
210  IMPLICIT NONE
211 
212  include 'sion_f77.h'
213 
214  COMPLEX DATA
215  INTEGER*8 SIZE
216  INTEGER*8 NITEMS
217  INTEGER SID
218  INTEGER*8 RC
219 
220  CALL fsion_coll_fread_mpi(DATA,SIZE,nitems,sid,rc)
221  END
222 
223 * Datatype LOGICAL
224  SUBROUTINE fsion_coll_fwrite_mpi_logical(DATA,SIZE,NITEMS,SID,RC)
225 
226  IMPLICIT NONE
227 
228  include 'sion_f77.h'
229 
230  LOGICAL DATA
231  INTEGER*8 SIZE
232  INTEGER*8 NITEMS
233  INTEGER SID
234  INTEGER*8 RC
235 
236  CALL fsion_coll_fwrite_mpi(DATA,SIZE,nitems,sid,rc)
237  END
238 
239  SUBROUTINE fsion_coll_fread_mpi_logical(DATA,SIZE,NITEMS,SID,RC)
240 
241  IMPLICIT NONE
242 
243  include 'sion_f77.h'
244 
245  LOGICAL DATA
246  INTEGER*8 SIZE
247  INTEGER*8 NITEMS
248  INTEGER SID
249  INTEGER*8 RC
250 
251  CALL fsion_coll_fread_mpi(DATA,SIZE,nitems,sid,rc)
252  END
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.