OpenMPI 0.1.1

- Main Page
- Related Pages
- Modules
- Data Structures
- Files

- File List
- Globals

file.h
1 // -*- c++ -*-
2 //
3 // Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
4 // University Research and Technology
5 // Corporation. All rights reserved.
6 // Copyright (c) 2004-2005 The University of Tennessee and The University
7 // of Tennessee Research Foundation. All rights
8 // reserved.
9 // Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
10 // University of Stuttgart. All rights reserved.
11 // Copyright (c) 2004-2005 The Regents of the University of California.
12 // All rights reserved.
13 // Copyright (c) 2006-2009 Cisco Systems, Inc. All rights reserved.
14 // $COPYRIGHT$
15 //
16 // Additional copyrights may follow
17 //
18 // $HEADER$
19 //
20
21 // Typedefs for C++ callbacks registered via MPI::Register_datarep
22 typedef void Datarep_extent_function(const Datatype& datatype,
23 Aint& file_extent, void* extra_state);
24 typedef void Datarep_conversion_function(void* userbuf, Datatype& datatype,
25 int count, void* filebuf,
26 Offset position, void* extra_state);
27
28 // Both callback functions in C++
29 void Register_datarep(const char* datarep,
30 Datarep_conversion_function* read_conversion_fn,
31 Datarep_conversion_function* write_conversion_fn,
32 Datarep_extent_function* dtype_file_extent_fn,
33 void* extra_state);
34
35 // Overload for C read callback function (MPI_CONVERSION_FN_NULL)
36 void Register_datarep(const char* datarep,
37 MPI_Datarep_conversion_function* read_conversion_fn,
38 Datarep_conversion_function* write_conversion_fn,
39 Datarep_extent_function* dtype_file_extent_fn,
40 void* extra_state);
41
42 // Overload for C write callback function (MPI_CONVERSION_FN_NULL)
43 void Register_datarep(const char* datarep,
44 Datarep_conversion_function* read_conversion_fn,
45 MPI_Datarep_conversion_function* write_conversion_fn,
46 Datarep_extent_function* dtype_file_extent_fn,
47 void* extra_state);
48
49 // Overload for C read and write callback functions (MPI_CONVERSION_FN_NULL)
50 void Register_datarep(const char* datarep,
51 MPI_Datarep_conversion_function* read_conversion_fn,
52 MPI_Datarep_conversion_function* write_conversion_fn,
53 Datarep_extent_function* dtype_file_extent_fn,
54 void* extra_state);
55
56 class File {
57 #if 0 /* OMPI_ENABLE_MPI_PROFILING */
58 // friend class P;
59
60 #endif
61 friend class MPI::Comm; //so I can access pmpi_file data member in comm.cc
62 friend class MPI::Request; //and also from request.cc
63
64 public:
65 #if 0 /* OMPI_ENABLE_MPI_PROFILING */
66
67 // construction / destruction
68 File() { }
69 virtual ~File() { }
70
71
72 // copy / assignment
73 File(const File& data) : pmpi_file(data.pmpi_file) { }
74
75 File(MPI_File i) : pmpi_file(i) { }
76
77 File& operator=(const File& data) {
78 pmpi_file = data.pmpi_file; return *this; }
79
80 // comparison, don't need for file
81
82 // inter-language operability
83 File& operator= (const MPI_File &i) {
84 pmpi_file = i; return *this; }
85 operator MPI_File () const { return pmpi_file; }
86 // operator MPI_File* () const { return pmpi_file; }
87 operator const PMPI::File&() const { return pmpi_file; }
88
89 #else
90
91 File() : mpi_file(MPI_FILE_NULL) { }
92 // copy
93 File(const File& data) : mpi_file(data.mpi_file) { }
94
95 File(MPI_File i) : mpi_file(i) { }
96
97 virtual ~File() { }
98
99 File& operator=(const File& data) {
100 mpi_file = data.mpi_file; return *this; }
101
102 // comparison, don't need for file
103
104 // inter-language operability
105 File& operator= (const MPI_File &i) {
106 mpi_file = i; return *this; }
107 operator MPI_File () const { return mpi_file; }
108 // operator MPI_File* () const { return (MPI_File*)&mpi_file; }
109
110 #endif
111
112 // from the I/o chapter of MPI - 2
113
114 void Close();
115
116 static void Delete(const char* filename, const MPI::Info& info);
117
118 int Get_amode() const;
119
120 bool Get_atomicity() const;
121
122 MPI::Offset Get_byte_offset(const MPI::Offset disp) const;
123
124 MPI::Group Get_group() const;
125
126 MPI::Info Get_info() const;
127
128 MPI::Offset Get_position() const;
129
130 MPI::Offset Get_position_shared() const;
131
132 MPI::Offset Get_size() const;
133
134 MPI::Aint Get_type_extent(const MPI::Datatype& datatype) const;
135
136 void Get_view(MPI::Offset& disp, MPI::Datatype& etype,
137 MPI::Datatype& filetype, char* datarep) const;
138
139 MPI::Request Iread(void* buf, int count,
140 const MPI::Datatype& datatype);
141
142 MPI::Request Iread_at(MPI::Offset offset, void* buf, int count,
143 const MPI::Datatype& datatype);
144
145 MPI::Request Iread_shared(void* buf, int count,
146 const MPI::Datatype& datatype);
147
148 MPI::Request Iwrite(const void* buf, int count,
149 const MPI::Datatype& datatype);
150
151 MPI::Request Iwrite_at(MPI::Offset offset, const void* buf,
152 int count, const MPI::Datatype& datatype);
153
154 MPI::Request Iwrite_shared(const void* buf, int count,
155 const MPI::Datatype& datatype);
156
157 static MPI::File Open(const MPI::Intracomm& comm,
158 const char* filename, int amode,
159 const MPI::Info& info);
160
161 void Preallocate(MPI::Offset size);
162
163 void Read(void* buf, int count, const MPI::Datatype& datatype);
164
165 void Read(void* buf, int count, const MPI::Datatype& datatype,
166 MPI::Status& status);
167
168 void Read_all(void* buf, int count, const MPI::Datatype& datatype);
169
170 void Read_all(void* buf, int count, const MPI::Datatype& datatype,
171 MPI::Status& status);
172
173 void Read_all_begin(void* buf, int count,
174 const MPI::Datatype& datatype);
175
176 void Read_all_end(void* buf);
177
178 void Read_all_end(void* buf, MPI::Status& status);
179
180 void Read_at(MPI::Offset offset,
181 void* buf, int count, const MPI::Datatype& datatype);
182
183 void Read_at(MPI::Offset offset, void* buf, int count,
184 const MPI::Datatype& datatype, MPI::Status& status);
185
186 void Read_at_all(MPI::Offset offset, void* buf, int count,
187 const MPI::Datatype& datatype);
188
189 void Read_at_all(MPI::Offset offset, void* buf, int count,
190 const MPI::Datatype& datatype, MPI::Status& status);
191
192 void Read_at_all_begin(MPI::Offset offset, void* buf, int count,
193 const MPI::Datatype& datatype);
194
195 void Read_at_all_end(void* buf);
196
197 void Read_at_all_end(void* buf, MPI::Status& status);
198
199 void Read_ordered(void* buf, int count,
200 const MPI::Datatype& datatype);
201
202 void Read_ordered(void* buf, int count,
203 const MPI::Datatype& datatype,
204 MPI::Status& status);
205
206 void Read_ordered_begin(void* buf, int count,
207 const MPI::Datatype& datatype);
208
209 void Read_ordered_end(void* buf);
210
211 void Read_ordered_end(void* buf, MPI::Status& status);
212
213 void Read_shared(void* buf, int count,
214 const MPI::Datatype& datatype);
215
216 void Read_shared(void* buf, int count,
217 const MPI::Datatype& datatype, MPI::Status& status);
218
219 void Seek(MPI::Offset offset, int whence);
220
221 void Seek_shared(MPI::Offset offset, int whence);
222
223 void Set_atomicity(bool flag);
224
225 void Set_info(const MPI::Info& info);
226
227 void Set_size(MPI::Offset size);
228
229 void Set_view(MPI::Offset disp, const MPI::Datatype& etype,
230 const MPI::Datatype& filetype, const char* datarep,
231 const MPI::Info& info);
232
233 void Sync();
234
235 void Write(const void* buf, int count,
236 const MPI::Datatype& datatype);
237
238 void Write(const void* buf, int count,
239 const MPI::Datatype& datatype, MPI::Status& status);
240
241 void Write_all(const void* buf, int count,
242 const MPI::Datatype& datatype);
243
244 void Write_all(const void* buf, int count,
245 const MPI::Datatype& datatype, MPI::Status& status);
246
247 void Write_all_begin(const void* buf, int count,
248 const MPI::Datatype& datatype);
249
250 void Write_all_end(const void* buf);
251
252 void Write_all_end(const void* buf, MPI::Status& status);
253
254 void Write_at(MPI::Offset offset, const void* buf, int count,
255 const MPI::Datatype& datatype);
256
257 void Write_at(MPI::Offset offset, const void* buf, int count,
258 const MPI::Datatype& datatype, MPI::Status& status);
259
260 void Write_at_all(MPI::Offset offset, const void* buf, int count,
261 const MPI::Datatype& datatype);
262
263 void Write_at_all(MPI::Offset offset, const void* buf, int count,
264 const MPI::Datatype& datatype,
265 MPI::Status& status);
266
267 void Write_at_all_begin(MPI::Offset offset, const void* buf,
268 int count, const MPI::Datatype& datatype);
269
270 void Write_at_all_end(const void* buf);
271
272 void Write_at_all_end(const void* buf, MPI::Status& status);
273
274 void Write_ordered(const void* buf, int count,
275 const MPI::Datatype& datatype);
276
277 void Write_ordered(const void* buf, int count,
278 const MPI::Datatype& datatype, MPI::Status& status);
279
280 void Write_ordered_begin(const void* buf, int count,
281 const MPI::Datatype& datatype);
282
283 void Write_ordered_end(const void* buf);
284
285 void Write_ordered_end(const void* buf, MPI::Status& status);
286
287 void Write_shared(const void* buf, int count,
288 const MPI::Datatype& datatype);
289
290 void Write_shared(const void* buf, int count,
291 const MPI::Datatype& datatype, MPI::Status& status);
292
293 //
294 // Errhandler
295 //
296 typedef void Errhandler_function(MPI::File &, int *, ... );
297 typedef Errhandler_function Errhandler_fn
298 __mpi_interface_deprecated__("MPI::File::Errhandler_fn was deprecated in MPI-2.2; use MPI::File::Errhandler_function instead");
299
300 static MPI::Errhandler Create_errhandler(Errhandler_function* function);
301
302 MPI::Errhandler Get_errhandler() const;
303
304 void Set_errhandler(const MPI::Errhandler& errhandler) const;
305
306 void Call_errhandler(int errorcode) const;
307
308 protected:
309 #if 0 /* OMPI_ENABLE_MPI_PROFILING */
310 PMPI::File pmpi_file;
311
312 #else
313 MPI_File mpi_file;
314
315 #endif
316 };
317
Datatype
Definition: datatype.h:24
ompi_file_t
Back-end structure for MPI_File.
Definition: file.h:42