NewMadeleine

Documentation

« back to PM2 home.
nm_mpi_types.h
Go to the documentation of this file.
1/*
2 * NewMadeleine
3 * Copyright (C) 2006-2026 (see AUTHORS file)
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or (at
8 * your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
14 */
15
16
17#ifndef NM_MPI_TYPES_H
18#define NM_MPI_TYPES_H
19
20#include <nm_config.h>
21
34#define MPI_PROC_NULL (-1)
35
37#define MPI_ANY_SOURCE (-2)
38
43#define MPI_ROOT (-3)
44
46#define MPI_ANY_TAG (-1)
47
49#define MPI_BOTTOM (void *)0
50
52#define MPI_IN_PLACE NULL
53
54#define MPI_BSEND_OVERHEAD 0
55
59#define MPI_SUCCESS 0
60/* base error codes, used as error class */
61#define MPI_ERR_BUFFER 1
62#define MPI_ERR_COUNT 2
63#define MPI_ERR_TYPE 3
64#define MPI_ERR_TAG 4
65#define MPI_ERR_COMM 5
66#define MPI_ERR_RANK 6
67#define MPI_ERR_ROOT 7
68#define MPI_ERR_GROUP 8
69#define MPI_ERR_OP 9
70#define MPI_ERR_TOPOLOGY 10
71#define MPI_ERR_DIMS 11
72#define MPI_ERR_ARG 12
73#define MPI_ERR_UNKNOWN 13
74#define MPI_ERR_TRUNCATE 14
75#define MPI_ERR_OTHER 15
76#define MPI_ERR_INTERN 16
77#define MPI_ERR_IN_STATUS 17
78#define MPI_ERR_PENDING 18
79#define MPI_ERR_INFO 19
80#define MPI_ERR_NO_MEM 20
81#define MPI_ERR_REQUEST 32
82#define MPI_ERR_KEYVAL 33
83#define MPI_ERR_INFO_KEY 34
84#define MPI_ERR_INFO_VALUE 35
85#define MPI_ERR_INFO_NOKEY 36
86#define MPI_ERR_VALUE_TOO_LARGE 37
87/* error code for dyn conns */
88#define MPI_ERR_NAME 40
89#define MPI_ERR_PORT 41
90#define MPI_ERR_CONVERSION 42
91#define MPI_ERR_PROC_ABORTED 43
92#define MPI_ERR_SERVICE 44
93#define MPI_ERR_SPAWN 45
94/* error codes for MPI-IO */
95#define MPI_ERR_FILE 64
96#define MPI_ERR_IO 65
97#define MPI_ERR_AMODE 66
98#define MPI_ERR_UNSUPPORTED_OPERATION 67
99#define MPI_ERR_UNSUPPORTED_DATAREP 68
100#define MPI_ERR_READ_ONLY 69
101#define MPI_ERR_ACCESS 70
102#define MPI_ERR_DUP_DATAREP 71
103#define MPI_ERR_NO_SUCH_FILE 72
104#define MPI_ERR_NOT_SAME 73
105#define MPI_ERR_BAD_FILE 74
106#define MPI_ERR_FILE_IN_USE 75
107#define MPI_ERR_NO_SPACE 76
108#define MPI_ERR_QUOTA 77
109#define MPI_ERR_FILE_EXISTS 78
110/* error codes for MPI-RMA */
111#define MPI_ERR_WIN 92
112#define MPI_ERR_BASE 93
113#define MPI_ERR_SIZE 94
114#define MPI_ERR_DISP 96
115#define MPI_ERR_LOCKTYPE 97
116#define MPI_ERR_ASSERT 98
117#define MPI_ERR_RMA_CONFLICT 99
118#define MPI_ERR_RMA_SYNC 100
119#define MPI_ERR_RMA_RANGE 101
120#define MPI_ERR_RMA_ATTACH 102
121#define MPI_ERR_RMA_SHARED 103
122#define MPI_ERR_RMA_FLAVOR 104
123/* sessions */
124#define MPI_ERR_SESSION 112
125/* MPI tool support */
126
127#define MPI_T_ERR_INVALID 128
128#define MPI_T_ERR_MEMORY 129
129#define MPI_T_ERR_NOT_INITIALIZED 130
130#define MPI_T_ERR_CANNOT_INIT 131
131#define MPI_T_ERR_NOT_ACCESSIBLE 132
132#define MPI_T_ERR_INVALID_INDEX 133
133#define MPI_T_ERR_INVALID_NAME 134
134#define MPI_T_ERR_INVALID_HANDLE 135
135#define MPI_T_ERR_OUT_OF_HANDLES 136
136#define MPI_T_ERR_OUT_OF_SESSIONS 137
137#define MPI_T_ERR_INVALID_SESSION 138
138#define MPI_T_ERR_CVAR_SET_NOT_NOW 139
139#define MPI_T_ERR_CVAR_SET_NEVER 140
140#define MPI_T_ERR_PVAR_NO_STARTSTOP 141
141#define MPI_T_ERR_PVAR_NO_WRITE 142
142#define MPI_T_ERR_PVAR_NO_ATOMIC 143
143#define MPI_T_ERR_NOT_SUPPORTED 144
144#define MPI_T_ERR_INVALID_ITEM 145
146#define MPI_ERR_LASTCODE 160
147
152#define MPI_UNDEFINED (-2147483647)
153#define MPI_UNDEFINED_RANK MPI_UNDEFINED
158#define MPI_THREAD_SINGLE 0
159#define MPI_THREAD_FUNNELED 1
160#define MPI_THREAD_SERIALIZED 2
161#define MPI_THREAD_MULTIPLE 3
165typedef intptr_t nm_mpi_aint_t;
168
170typedef int64_t nm_mpi_count_t;
173
177typedef int MPI_Info;
178#define MPI_INFO_NULL ((MPI_Info)0)
180#define MPI_INFO_ENV ((MPI_Info)1)
182#define _NM_MPI_INFO_OFFSET ((MPI_Info)2)
183#define MPI_MAX_INFO_KEY 255
184#define MPI_MAX_INFO_VAL 1024
190#define MPI_STATUS_SIZE 5
191
201
204
205#define MPI_STATUS_IGNORE (MPI_Status *)0
206#define MPI_STATUSES_IGNORE (MPI_Status *)0
214typedef int MPI_Request;
215
219#define MPI_REQUEST_NULL ((MPI_Request)0)
221#define _NM_MPI_REQUEST_OFFSET 1
222
229typedef int MPI_Grequest_cancel_function(void*extra_state, int complete);
235typedef int MPI_Message;
236
238#define MPI_MESSAGE_NULL ((MPI_Message)0)
244typedef int MPI_Group;
246#define MPI_GROUP_NULL ((MPI_Group)0)
248#define MPI_GROUP_EMPTY ((MPI_Group)1)
250#define _NM_MPI_GROUP_OFFSET 2
256#define MPI_IDENT 0x01
258#define MPI_SIMILAR 0x02
260#define MPI_CONGRUENT 0x03
262#define MPI_UNEQUAL 0x04
268typedef int MPI_Comm;
270#define MPI_COMM_NULL ((MPI_Comm)0)
272#define MPI_COMM_WORLD ((MPI_Comm)1)
274#define MPI_COMM_SELF ((MPI_Comm)2)
276#define _NM_MPI_COMM_OFFSET 3
280#define MPI_COMM_TYPE_SHARED 1
281
283#define MPI_GRAPH 0x01
284
286#define MPI_CART 0x02
287
288#define MPI_DIST_GRAPH 0x03
289
293typedef int MPI_Session;
295#define MPI_SESSION_NULL ((MPI_Session)0)
297#define NM_MPI_SESSION_WORLD ((MPI_Session)1)
299#define _NM_MPI_SESSION_OFFSET 2
300
301#define MPI_MAX_PSET_NAME_LEN 64
307typedef int MPI_Datatype;
308#define MPI_DATATYPE_NULL ((MPI_Datatype)0)
309/* C types */
310#define MPI_CHAR ((MPI_Datatype)1)
311#define MPI_UNSIGNED_CHAR ((MPI_Datatype)2)
312#define MPI_SIGNED_CHAR ((MPI_Datatype)3)
313#define MPI_BYTE ((MPI_Datatype)4)
314#define MPI_SHORT ((MPI_Datatype)5)
315#define MPI_UNSIGNED_SHORT ((MPI_Datatype)6)
316#define MPI_INT ((MPI_Datatype)7)
317#define MPI_UNSIGNED ((MPI_Datatype)8)
318#define MPI_LONG ((MPI_Datatype)9)
319#define MPI_UNSIGNED_LONG ((MPI_Datatype)10)
320#define MPI_FLOAT ((MPI_Datatype)11)
321#define MPI_DOUBLE ((MPI_Datatype)12)
322#define MPI_LONG_DOUBLE ((MPI_Datatype)13)
323#define MPI_LONG_LONG_INT ((MPI_Datatype)14)
324#define MPI_LONG_LONG MPI_LONG_LONG_INT
325#define MPI_UNSIGNED_LONG_LONG ((MPI_Datatype)15)
326/* FORTRAN types */
327#define MPI_CHARACTER ((MPI_Datatype)16)
328#define MPI_LOGICAL ((MPI_Datatype)17)
329#define MPI_REAL ((MPI_Datatype)18)
330#define MPI_REAL2 ((MPI_Datatype)19)
331#define MPI_REAL4 ((MPI_Datatype)20)
332#define MPI_REAL8 ((MPI_Datatype)21)
333#define MPI_REAL16 ((MPI_Datatype)22)
334#define MPI_DOUBLE_PRECISION ((MPI_Datatype)23)
335#define MPI_INTEGER ((MPI_Datatype)24)
336#define MPI_INTEGER1 ((MPI_Datatype)25)
337#define MPI_INTEGER2 ((MPI_Datatype)26)
338#define MPI_INTEGER4 ((MPI_Datatype)27)
339#define MPI_INTEGER8 ((MPI_Datatype)28)
340#define MPI_INTEGER16 ((MPI_Datatype)29)
341#define MPI_COMPLEX ((MPI_Datatype)30)
342#define MPI_COMPLEX4 ((MPI_Datatype)31)
343#define MPI_COMPLEX8 ((MPI_Datatype)32)
344#define MPI_COMPLEX16 ((MPI_Datatype)33)
345#define MPI_COMPLEX32 ((MPI_Datatype)34)
346#define MPI_DOUBLE_COMPLEX ((MPI_Datatype)35)
347#define MPI_PACKED ((MPI_Datatype)36)
348/* C struct types */
349#define MPI_LONG_INT ((MPI_Datatype)37)
350#define MPI_SHORT_INT ((MPI_Datatype)38)
351#define MPI_FLOAT_INT ((MPI_Datatype)39)
352#define MPI_DOUBLE_INT ((MPI_Datatype)40)
353#define MPI_LONG_DOUBLE_INT ((MPI_Datatype)41)
354/* FORTRAN struct types*/
355#define MPI_2INT ((MPI_Datatype)42)
356#define MPI_2INTEGER ((MPI_Datatype)43)
357#define MPI_2REAL ((MPI_Datatype)44)
358#define MPI_2DOUBLE_PRECISION ((MPI_Datatype)45)
359/* special types for bounds */
360#define MPI_UB ((MPI_Datatype)46)
361#define MPI_LB ((MPI_Datatype)47)
362/* MPI-2 C types */
363#define MPI_INT8_T ((MPI_Datatype)48)
364#define MPI_INT16_T ((MPI_Datatype)49)
365#define MPI_INT32_T ((MPI_Datatype)50)
366#define MPI_INT64_T ((MPI_Datatype)51)
367#define MPI_UINT8_T ((MPI_Datatype)52)
368#define MPI_UINT16_T ((MPI_Datatype)53)
369#define MPI_UINT32_T ((MPI_Datatype)54)
370#define MPI_UINT64_T ((MPI_Datatype)55)
371#define MPI_AINT ((MPI_Datatype)56)
372#define MPI_OFFSET ((MPI_Datatype)57)
373#define MPI_C_BOOL ((MPI_Datatype)58)
374#define MPI_C_COMPLEX MPI_C_FLOAT_COMPLEX
375#define MPI_C_FLOAT_COMPLEX ((MPI_Datatype)59)
376#define MPI_C_DOUBLE_COMPLEX ((MPI_Datatype)60)
377#define MPI_C_LONG_DOUBLE_COMPLEX ((MPI_Datatype)61)
378#define MPI_WCHAR ((MPI_Datatype)62)
379/* MPI-3 MPI_Count */
380#define MPI_COUNT ((MPI_Datatype)63)
381/* unsupported C++ types- define to TYPE_NULL */
382#define MPI_CXX_BOOL MPI_DATATYPE_NULL
383#define MPI_CXX_FLOAT_COMPLEX MPI_DATATYPE_NULL
384#define MPI_CXX_DOUBLE_COMPLEX MPI_DATATYPE_NULL
385#define MPI_CXX_LONG_DOUBLE_COMPLEX MPI_DATATYPE_NULL
386/* offset for dynamically allocated datatypes */
387#define _NM_MPI_DATATYPE_OFFSET 64
407
410#define MPI_ORDER_C 1
411#define MPI_ORDER_FORTRAN 2
415#define MPI_DISTRIBUTE_BLOCK 1
416#define MPI_DISTRIBUTE_CYCLIC 2
417#define MPI_DISTRIBUTE_NONE 3
418#define MPI_DISTRIBUTE_DFLT_DARG 4
424typedef int MPI_Op;
425#define MPI_OP_NULL ((MPI_Op)0)
426#define MPI_MAX ((MPI_Op)1)
427#define MPI_MIN ((MPI_Op)2)
428#define MPI_SUM ((MPI_Op)3)
429#define MPI_PROD ((MPI_Op)4)
430#define MPI_LAND ((MPI_Op)5)
431#define MPI_BAND ((MPI_Op)6)
432#define MPI_LOR ((MPI_Op)7)
433#define MPI_BOR ((MPI_Op)8)
434#define MPI_LXOR ((MPI_Op)9)
435#define MPI_BXOR ((MPI_Op)10)
436#define MPI_MINLOC ((MPI_Op)11)
437#define MPI_MAXLOC ((MPI_Op)12)
438#define MPI_REPLACE ((MPI_Op)13)
439#define MPI_NO_OP ((MPI_Op)14)
440#define _NM_MPI_OP_OFFSET 15
443#define MPI_MAX_PROCESSOR_NAME 256
444#define MPI_MAX_ERROR_STRING 512
445#define MPI_MAX_NAME_STRING 256
446#define MPI_MAX_OBJECT_NAME 256
447#define MPI_MAX_LIBRARY_VERSION_STRING 256
448
452typedef int MPI_Win;
453#define MPI_WIN_NULL ((MPI_Win)0)
454#define _NM_MPI_WIN_OFFSET ((MPI_Win)1)
455
458#define MPI_MODE_NO_ASSERT 0x00
459#define MPI_MODE_NOCHECK 0x01
460#define MPI_MODE_NOSTORE 0x02
461#define MPI_MODE_NOPUT 0x04
462#define MPI_MODE_NOPRECEDE 0x08
463#define MPI_MODE_NOSUCCEED 0x10
468#define MPI_WIN_FLAVOR_CREATE 0
469#define MPI_WIN_FLAVOR_ALLOCATE 1
470#define MPI_WIN_FLAVOR_DYNAMIC 2
471#define MPI_WIN_FLAVOR_SHARED 3
476#define MPI_WIN_BASE 0
477#define MPI_WIN_SIZE 1
478#define MPI_WIN_DISP_UNIT 2
479#define MPI_WIN_CREATE_FLAVOR 3
480#define MPI_WIN_MODEL 4
485#define MPI_WIN_SEPARATE 0
486#define MPI_WIN_UNIFIED 1
491#define MPI_LOCK_EXCLUSIVE 1
492#define MPI_LOCK_SHARED 2
499typedef int MPI_Errhandler;
500#define MPI_ERRHANDLER_NULL ((MPI_Errhandler)0)
501
502#define MPI_ERRORS_ARE_FATAL ((MPI_Errhandler)1)
503#define MPI_ERRORS_RETURN ((MPI_Errhandler)2)
504#define _NM_MPI_ERRHANDLER_OFFSET 3
505
506/* MPI-1 */
507typedef void (MPI_Handler_function)(MPI_Comm *, int *, ...);
508/* MPI-2 */
509typedef void (MPI_Comm_errhandler_function)(MPI_Comm*, int *, ...);
511typedef void (MPI_Win_errhandler_function)(MPI_Win *, int *, ...);
513/* MPI-4 */
514typedef void MPI_Session_errhandler_function(MPI_Session*, int*error_code, ...);
519/* MPI-1 */
520typedef int (MPI_Copy_function)(MPI_Comm oldcomm, int keyval, void*extra_state, void*attribute_val_in, void*attribute_val_out, int*flag);
521typedef int (MPI_Delete_function)(MPI_Comm comm, int keyval, void*attribute_val, void*extra_state);
522#define MPI_NULL_COPY_FN ((MPI_Copy_function*)0)
523#define MPI_DUP_FN ((MPI_Copy_function*)-1)
524#define MPI_NULL_DELETE_FN ((MPI_Delete_function*)0)
525/* MPI-2 */
526typedef int (MPI_Comm_copy_attr_function)(MPI_Comm oldcomm, int comm_keyval, void*extra_state, void*attribute_val_in, void*attribute_val_out, int*flag);
527typedef int (MPI_Comm_delete_attr_function)(MPI_Comm comm, int comm_keyval, void*attribute_val, void*extra_state);
529#define MPI_COMM_NULL_COPY_FN ((MPI_Comm_copy_attr_function*)0)
531#define MPI_COMM_NULL_DELETE_FN ((MPI_Comm_delete_attr_function*)0)
533#define MPI_COMM_DUP_FN ((MPI_Comm_copy_attr_function*)-1)
534/* MPI-3 */
535typedef int (MPI_Win_copy_attr_function)(MPI_Win oldwin, int win_keyval, void*extra_state, void*attribute_val_in, void*attribute_val_out, int*flag);
536typedef int (MPI_Win_delete_attr_function)(MPI_Win win, int win_keyval, void*attribute_val, void*extra_state);
537typedef int (MPI_Type_copy_attr_function)(MPI_Datatype oldtype, int type_keyval, void*extra_state, void*attribute_val_in, void*attribute_val_out, int*flag);
538typedef int (MPI_Type_delete_attr_function)(MPI_Datatype datatype, int type_keyval, void*attribute_val, void*extra_state);
540#define MPI_WIN_NULL_COPY_FN ((MPI_Win_copy_attr_function*)0)
541#define MPI_TYPE_NULL_COPY_FN ((MPI_Type_copy_attr_function*)0)
543#define MPI_WIN_NULL_DELETE_FN ((MPI_Win_delete_attr_function*)0)
544#define MPI_TYPE_NULL_DELETE_FN ((MPI_Type_delete_attr_function*)0)
546#define MPI_WIN_DUP_FN ((MPI_Win_copy_attr_function*)-1)
547#define MPI_TYPE_DUP_FN ((MPI_Type_copy_attr_function*)-1)
548
549#define MPI_KEYVAL_INVALID 0
550
551#define MPI_TAG_UB 1
552#define MPI_HOST 2
553#define MPI_IO 3
554#define MPI_WTIME_IS_GLOBAL 4
555#define MPI_UNIVERSE_SIZE 5
556#define MPI_APPNUM 6
557#define MPI_LASTUSEDCODE 7
558#define _NM_MPI_ATTR_OFFSET 8
559
566typedef int MPI_T_enum;
567
568#define MPI_T_ENUM_NULL ((MPI_T_enum)0)
569
571
572#define MPI_T_CVAR_HANDLE_NULL ((MPI_T_cvar_handle)0)
573
575
576#define MPI_T_PVAR_HANDLE_NULL ((MPI_T_pvar_handle)0)
577#define MPI_T_PVAR_ALL_HANDLES ((MPI_T_pvar_handle)-1)
578
580
581#define MPI_T_PVAR_SESSION_NULL ((MPI_T_pvar_session)0)
582
583/* verbosity levels */
584#define MPI_T_VERBOSITY_USER_BASIC 1
585#define MPI_T_VERBOSITY_USER_DETAIL 2
586#define MPI_T_VERBOSITY_USER_ALL 3
587#define MPI_T_VERBOSITY_TUNER_BASIC 4
588#define MPI_T_VERBOSITY_TUNER_DETAIL 5
589#define MPI_T_VERBOSITY_TUNER_ALL 6
590#define MPI_T_VERBOSITY_MPIDEV_BASIC 7
591#define MPI_T_VERBOSITY_MPIDEV_DETAIL 8
592#define MPI_T_VERBOSITY_MPIDEV_ALL 9
593
594/* MPI tool binding */
595#define MPI_T_BIND_NO_OBJECT 0
596#define MPI_T_BIND_MPI_COMM 1
597#define MPI_T_BIND_MPI_DATATYPE 2
598#define MPI_T_BIND_MPI_ERRHANDLER 3
599#define MPI_T_BIND_MPI_FILE 4
600#define MPI_T_BIND_MPI_GROUP 5
601#define MPI_T_BIND_MPI_OP 6
602#define MPI_T_BIND_MPI_REQUEST 7
603#define MPI_T_BIND_MPI_WIN 8
604#define MPI_T_BIND_MPI_MESSAGE 9
605#define MPI_T_BIND_MPI_INFO 10
606#define MPI_T_BIND_MPI_SESSION 11
607
608/* scope for cvars */
609#define MPI_T_SCOPE_CONSTANT 1
610#define MPI_T_SCOPE_READONLY 2
611#define MPI_T_SCOPE_LOCAL 3
612#define MPI_T_SCOPE_GROUP 4
613#define MPI_T_SCOPE_GROUP_EQ 5
614#define MPI_T_SCOPE_ALL 6
615#define MPI_T_SCOPE_ALL_EQ 7
616
617/* classes for pvars */
618/* warning, values must match enum nm_profile_class_e */
619#define MPI_T_PVAR_CLASS_STATE 1
620#define MPI_T_PVAR_CLASS_LEVEL 2
621#define MPI_T_PVAR_CLASS_SIZE 3
622#define MPI_T_PVAR_CLASS_PERCENTAGE 4
623#define MPI_T_PVAR_CLASS_HIGHWATERMARK 5
624#define MPI_T_PVAR_CLASS_LOWWATERMARK 6
625#define MPI_T_PVAR_CLASS_COUNTER 7
626#define MPI_T_PVAR_CLASS_AGGREGATE 8
627#define MPI_T_PVAR_CLASS_TIMER 9
628#define MPI_T_PVAR_CLASS_GENERIC 10
629
632/* ********************************************************* */
633/* ** FORTRAN support */
634
635#ifndef NMAD_FORTRAN_TARGET_NONE
636
641#if defined(NM_FORTRAN_SIZEOF_INTEGER_4)
642typedef int32_t MPI_Fint;
643#elif defined(NM_FORTRAN_SIZEOF_INTEGER_8)
644typedef int64_t MPI_Fint;
645#else
646#error undefined Fortran INTEGER size
647#endif
648
649/* Those global variables are used to stock values of predefined static variables(COMMON block) from fortran.
650Their value is defined only between the calls to MPI_INIT and MPI_FINALIZE */
652extern MPI_Fint*MPI_F_STATUS_IGNORE;
653extern MPI_Fint*MPI_F_STATUSES_IGNORE;
654
656extern void*NM_MPI_F_MPI_BOTTOM;
657extern void*NM_MPI_F_MPI_IN_PLACE;
658extern void*NM_MPI_F_MPI_UNWEIGHTED;
661extern void*NM_MPI_F_MPI_ARGV_NULL;
662extern void*NM_MPI_F_MPI_ARGVS_NULL;
663
664
665MPI_Comm MPI_Comm_f2c(MPI_Fint comm);
666
667MPI_Fint MPI_Comm_c2f(MPI_Comm comm);
668
669MPI_Datatype MPI_Type_f2c(MPI_Fint datatype);
670
671MPI_Fint MPI_Type_c2f(MPI_Datatype datatype);
672
673MPI_Group MPI_Group_f2c(MPI_Fint group);
674
675MPI_Fint MPI_Group_c2f(MPI_Group group);
676
677MPI_Info MPI_Info_f2c(MPI_Fint info);
678
679MPI_Fint MPI_Info_c2f(MPI_Info info);
680
681MPI_Request MPI_Request_f2c(MPI_Fint request);
682
683MPI_Fint MPI_Request_c2f(MPI_Request request);
684
685MPI_Op MPI_Op_f2c(MPI_Fint op);
686
687MPI_Fint MPI_Op_c2f(MPI_Op op);
688
689MPI_Win MPI_Win_f2c(MPI_Fint win);
690
691MPI_Fint MPI_Win_c2f(MPI_Win win);
692
694
696
697/* Translates a Fortran status into a C status.
698 * @param f_status Fortan status
699 * @param c_status C status
700 * @return MPI status
701 */
702int MPI_Status_f2c(const MPI_Fint*f_status, MPI_Status*c_status);
703
704/* Translates a C status into a Fortran status.
705 * @param f_status Fortan status
706 * @param c_status C status
707 */
708int MPI_Status_c2f(const MPI_Status*c_status, MPI_Fint*f_status);
709
712#endif /* NMAD_FORTRAN_TARGET_NONE */
713
714
717#endif /* NM_MPI_TYPES_H */
void * extra_state
nm_mpi_status_t status
status of request
void * NM_MPI_F_MPI_ERRCODES_IGNORE
int MPI_T_pvar_handle
MPI_Comm_errhandler_function MPI_Comm_errhandler_fn
pre MPI-2.2 compatibility type
MPI_Fint * MPI_F_STATUS_IGNORE
integer type interoperable between C and FORTRAN
MPI_Info MPI_Info_f2c(MPI_Fint info)
int MPI_Op
Operator handle.
int MPI_Grequest_free_function(void *extra_state)
int MPI_Request
Request handle.
int() MPI_Type_delete_attr_function(MPI_Datatype datatype, int type_keyval, void *attribute_val, void *extra_state)
int MPI_Grequest_cancel_function(void *extra_state, int complete)
void() MPI_Comm_errhandler_function(MPI_Comm *, int *,...)
int MPI_Errhandler
int MPI_Group
Group handle.
MPI_Win MPI_Win_f2c(MPI_Fint win)
int MPI_Status_f2c(const MPI_Fint *f_status, MPI_Status *c_status)
int() MPI_Delete_function(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state)
int MPI_Message
handle for matching probe
nm_mpi_type_combiner_t
Types of datatypes.
@ MPI_COMBINER_DUP
type is duplicated from another type
@ MPI_COMBINER_INDEXED
indexed type
@ MPI_COMBINER_STRUCT
structured type
@ MPI_COMBINER_RESIZED
type is resized from another type
@ MPI_COMBINER_HINDEXED_BLOCK
@ MPI_COMBINER_INDEXED_BLOCK
@ MPI_COMBINER_HVECTOR
vector with stride in bytes
@ MPI_COMBINER_SUBARRAY
@ MPI_COMBINER_NAMED
basic type built-in MPI
@ MPI_COMBINER_HINDEXED
indexed type, offset in bytes
@ MPI_COMBINER_CONTIGUOUS
contiguous array
@ MPI_COMBINER_VECTOR
vector with stride
nm_mpi_aint_t MPI_Aint
type that holds an address
int() MPI_Copy_function(MPI_Comm oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag)
MPI_Datatype MPI_Type_f2c(MPI_Fint datatype)
MPI_Fint * MPI_F_STATUSES_IGNORE
int MPI_Session
Session handle.
MPI_Group MPI_Group_f2c(MPI_Fint group)
int MPI_Comm
Communicator handle.
MPI_Win_errhandler_function MPI_Win_errhandler_fn
pre MPI-2.2 compatibility type
void() MPI_Win_errhandler_function(MPI_Win *, int *,...)
MPI_Fint MPI_Type_c2f(MPI_Datatype datatype)
int MPI_Win
Window handle.
MPI_Fint MPI_Comm_c2f(MPI_Comm comm)
void * NM_MPI_F_MPI_IN_PLACE
MPI_Request MPI_Request_f2c(MPI_Fint request)
intptr_t nm_mpi_aint_t
internal type for address
void MPI_Session_errhandler_function(MPI_Session *, int *error_code,...)
int MPI_Grequest_query_function(void *extra_state, MPI_Status *status)
MPI_Fint MPI_Group_c2f(MPI_Group group)
int() MPI_Win_delete_attr_function(MPI_Win win, int win_keyval, void *attribute_val, void *extra_state)
int MPI_T_enum
an enumeration for MPI tool support
int MPI_Status_c2f(const MPI_Status *c_status, MPI_Fint *f_status)
int() MPI_Type_copy_attr_function(MPI_Datatype oldtype, int type_keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag)
int MPI_T_pvar_session
int64_t nm_mpi_count_t
internal type for counts
void * NM_MPI_F_MPI_BOTTOM
Those are not mandatory in MPI but are useful for fortran stubs.
int MPI_T_cvar_handle
MPI_Op MPI_Op_f2c(MPI_Fint op)
int MPI_Info
An info opaque object.
MPI_Comm MPI_Comm_f2c(MPI_Fint comm)
MPI_Errhandler MPI_Errhandler_f2c(MPI_Fint errhandler)
void * NM_MPI_F_MPI_WEIGHTS_EMPTY
MPI_Fint MPI_Op_c2f(MPI_Op op)
void() MPI_Handler_function(MPI_Comm *, int *,...)
int() MPI_Comm_copy_attr_function(MPI_Comm oldcomm, int comm_keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag)
int() MPI_Comm_delete_attr_function(MPI_Comm comm, int comm_keyval, void *attribute_val, void *extra_state)
MPI_Fint MPI_Win_c2f(MPI_Win win)
void * NM_MPI_F_MPI_UNWEIGHTED
MPI_Fint MPI_Request_c2f(MPI_Request request)
void * NM_MPI_F_MPI_ARGV_NULL
nm_mpi_count_t MPI_Count
public type for counts
MPI_Fint MPI_Errhandler_c2f(MPI_Errhandler errhandler)
MPI_Fint MPI_Info_c2f(MPI_Info info)
int() MPI_Win_copy_attr_function(MPI_Win oldwin, int win_keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag)
void * NM_MPI_F_MPI_ARGVS_NULL
int MPI_Datatype
Datatype handle.
Status handle.
int MPI_SOURCE
field name mandatory by spec
int size
size of data received
int MPI_TAG
field name mandatory by spec
int cancelled
whether request was cancelled
int MPI_ERROR
field name mandatory by spec