NewMadeleine

Documentation

nm_mpi_types.h
Go to the documentation of this file.
1/*
2 * NewMadeleine
3 * Copyright (C) 2006-2024 (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
194{
198 int size;
200};
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
291typedef int MPI_Session;
293#define MPI_SESSION_NULL ((MPI_Session)0)
295#define NM_MPI_SESSION_WORLD ((MPI_Session)1)
297#define _NM_MPI_SESSION_OFFSET 2
298
299#define MPI_MAX_PSET_NAME_LEN 64
305typedef int MPI_Datatype;
306#define MPI_DATATYPE_NULL ((MPI_Datatype)0)
307/* C types */
308#define MPI_CHAR ((MPI_Datatype)1)
309#define MPI_UNSIGNED_CHAR ((MPI_Datatype)2)
310#define MPI_SIGNED_CHAR ((MPI_Datatype)3)
311#define MPI_BYTE ((MPI_Datatype)4)
312#define MPI_SHORT ((MPI_Datatype)5)
313#define MPI_UNSIGNED_SHORT ((MPI_Datatype)6)
314#define MPI_INT ((MPI_Datatype)7)
315#define MPI_UNSIGNED ((MPI_Datatype)8)
316#define MPI_LONG ((MPI_Datatype)9)
317#define MPI_UNSIGNED_LONG ((MPI_Datatype)10)
318#define MPI_FLOAT ((MPI_Datatype)11)
319#define MPI_DOUBLE ((MPI_Datatype)12)
320#define MPI_LONG_DOUBLE ((MPI_Datatype)13)
321#define MPI_LONG_LONG_INT ((MPI_Datatype)14)
322#define MPI_LONG_LONG MPI_LONG_LONG_INT
323#define MPI_UNSIGNED_LONG_LONG ((MPI_Datatype)15)
324/* FORTRAN types */
325#define MPI_CHARACTER ((MPI_Datatype)16)
326#define MPI_LOGICAL ((MPI_Datatype)17)
327#define MPI_REAL ((MPI_Datatype)18)
328#define MPI_REAL2 ((MPI_Datatype)19)
329#define MPI_REAL4 ((MPI_Datatype)20)
330#define MPI_REAL8 ((MPI_Datatype)21)
331#define MPI_REAL16 ((MPI_Datatype)22)
332#define MPI_DOUBLE_PRECISION ((MPI_Datatype)23)
333#define MPI_INTEGER ((MPI_Datatype)24)
334#define MPI_INTEGER1 ((MPI_Datatype)25)
335#define MPI_INTEGER2 ((MPI_Datatype)26)
336#define MPI_INTEGER4 ((MPI_Datatype)27)
337#define MPI_INTEGER8 ((MPI_Datatype)28)
338#define MPI_INTEGER16 ((MPI_Datatype)29)
339#define MPI_COMPLEX ((MPI_Datatype)30)
340#define MPI_COMPLEX4 ((MPI_Datatype)31)
341#define MPI_COMPLEX8 ((MPI_Datatype)32)
342#define MPI_COMPLEX16 ((MPI_Datatype)33)
343#define MPI_COMPLEX32 ((MPI_Datatype)34)
344#define MPI_DOUBLE_COMPLEX ((MPI_Datatype)35)
345#define MPI_PACKED ((MPI_Datatype)36)
346/* C struct types */
347#define MPI_LONG_INT ((MPI_Datatype)37)
348#define MPI_SHORT_INT ((MPI_Datatype)38)
349#define MPI_FLOAT_INT ((MPI_Datatype)39)
350#define MPI_DOUBLE_INT ((MPI_Datatype)40)
351#define MPI_LONG_DOUBLE_INT ((MPI_Datatype)41)
352/* FORTRAN struct types*/
353#define MPI_2INT ((MPI_Datatype)42)
354#define MPI_2INTEGER ((MPI_Datatype)43)
355#define MPI_2REAL ((MPI_Datatype)44)
356#define MPI_2DOUBLE_PRECISION ((MPI_Datatype)45)
357/* special types for bounds */
358#define MPI_UB ((MPI_Datatype)46)
359#define MPI_LB ((MPI_Datatype)47)
360/* MPI-2 C types */
361#define MPI_INT8_T ((MPI_Datatype)48)
362#define MPI_INT16_T ((MPI_Datatype)49)
363#define MPI_INT32_T ((MPI_Datatype)50)
364#define MPI_INT64_T ((MPI_Datatype)51)
365#define MPI_UINT8_T ((MPI_Datatype)52)
366#define MPI_UINT16_T ((MPI_Datatype)53)
367#define MPI_UINT32_T ((MPI_Datatype)54)
368#define MPI_UINT64_T ((MPI_Datatype)55)
369#define MPI_AINT ((MPI_Datatype)56)
370#define MPI_OFFSET ((MPI_Datatype)57)
371#define MPI_C_BOOL ((MPI_Datatype)58)
372#define MPI_C_COMPLEX MPI_C_FLOAT_COMPLEX
373#define MPI_C_FLOAT_COMPLEX ((MPI_Datatype)59)
374#define MPI_C_DOUBLE_COMPLEX ((MPI_Datatype)60)
375#define MPI_C_LONG_DOUBLE_COMPLEX ((MPI_Datatype)61)
376#define MPI_WCHAR ((MPI_Datatype)62)
377/* MPI-3 MPI_Count */
378#define MPI_COUNT ((MPI_Datatype)63)
379/* unsupported C++ types- define to TYPE_NULL */
380#define MPI_CXX_BOOL MPI_DATATYPE_NULL
381#define MPI_CXX_FLOAT_COMPLEX MPI_DATATYPE_NULL
382#define MPI_CXX_DOUBLE_COMPLEX MPI_DATATYPE_NULL
383#define MPI_CXX_LONG_DOUBLE_COMPLEX MPI_DATATYPE_NULL
384/* offset for dynamically allocated datatypes */
385#define _NM_MPI_DATATYPE_OFFSET 64
389typedef enum
390 {
405
408#define MPI_ORDER_C 1
409#define MPI_ORDER_FORTRAN 2
413#define MPI_DISTRIBUTE_BLOCK 1
414#define MPI_DISTRIBUTE_CYCLIC 2
415#define MPI_DISTRIBUTE_NONE 3
416#define MPI_DISTRIBUTE_DFLT_DARG 4
422typedef int MPI_Op;
423#define MPI_OP_NULL ((MPI_Op)0)
424#define MPI_MAX ((MPI_Op)1)
425#define MPI_MIN ((MPI_Op)2)
426#define MPI_SUM ((MPI_Op)3)
427#define MPI_PROD ((MPI_Op)4)
428#define MPI_LAND ((MPI_Op)5)
429#define MPI_BAND ((MPI_Op)6)
430#define MPI_LOR ((MPI_Op)7)
431#define MPI_BOR ((MPI_Op)8)
432#define MPI_LXOR ((MPI_Op)9)
433#define MPI_BXOR ((MPI_Op)10)
434#define MPI_MINLOC ((MPI_Op)11)
435#define MPI_MAXLOC ((MPI_Op)12)
436#define MPI_REPLACE ((MPI_Op)13)
437#define MPI_NO_OP ((MPI_Op)14)
438#define _NM_MPI_OP_OFFSET 15
441#define MPI_MAX_PROCESSOR_NAME 256
442#define MPI_MAX_ERROR_STRING 512
443#define MPI_MAX_NAME_STRING 256
444#define MPI_MAX_OBJECT_NAME 256
445#define MPI_MAX_LIBRARY_VERSION_STRING 256
446
450typedef int MPI_Win;
451#define MPI_WIN_NULL ((MPI_Win)0)
452#define _NM_MPI_WIN_OFFSET ((MPI_Win)1)
453
456#define MPI_MODE_NO_ASSERT 0x00
457#define MPI_MODE_NOCHECK 0x01
458#define MPI_MODE_NOSTORE 0x02
459#define MPI_MODE_NOPUT 0x04
460#define MPI_MODE_NOPRECEDE 0x08
461#define MPI_MODE_NOSUCCEED 0x10
466#define MPI_WIN_FLAVOR_CREATE 0
467#define MPI_WIN_FLAVOR_ALLOCATE 1
468#define MPI_WIN_FLAVOR_DYNAMIC 2
469#define MPI_WIN_FLAVOR_SHARED 3
474#define MPI_WIN_BASE 0
475#define MPI_WIN_SIZE 1
476#define MPI_WIN_DISP_UNIT 2
477#define MPI_WIN_CREATE_FLAVOR 3
478#define MPI_WIN_MODEL 4
483#define MPI_WIN_SEPARATE 0
484#define MPI_WIN_UNIFIED 1
489#define MPI_LOCK_EXCLUSIVE 1
490#define MPI_LOCK_SHARED 2
497typedef int MPI_Errhandler;
498#define MPI_ERRHANDLER_NULL ((MPI_Errhandler)0)
499
500#define MPI_ERRORS_ARE_FATAL ((MPI_Errhandler)1)
501#define MPI_ERRORS_RETURN ((MPI_Errhandler)2)
502#define _NM_MPI_ERRHANDLER_OFFSET 3
503
504/* MPI-1 */
505typedef void (MPI_Handler_function)(MPI_Comm *, int *, ...);
506/* MPI-2 */
507typedef void (MPI_Comm_errhandler_function)(MPI_Comm*, int *, ...);
509typedef void (MPI_Win_errhandler_function)(MPI_Win *, int *, ...);
511/* MPI-4 */
512typedef void MPI_Session_errhandler_function(MPI_Session*, int*error_code, ...);
517/* MPI-1 */
518typedef int (MPI_Copy_function)(MPI_Comm oldcomm, int keyval, void*extra_state, void*attribute_val_in, void*attribute_val_out, int*flag);
519typedef int (MPI_Delete_function)(MPI_Comm comm, int keyval, void*attribute_val, void*extra_state);
520#define MPI_NULL_COPY_FN ((MPI_Copy_function*)0)
521#define MPI_DUP_FN ((MPI_Copy_function*)-1)
522#define MPI_NULL_DELETE_FN ((MPI_Delete_function*)0)
523/* MPI-2 */
524typedef 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);
525typedef int (MPI_Comm_delete_attr_function)(MPI_Comm comm, int comm_keyval, void*attribute_val, void*extra_state);
527#define MPI_COMM_NULL_COPY_FN ((MPI_Comm_copy_attr_function*)0)
529#define MPI_COMM_NULL_DELETE_FN ((MPI_Comm_delete_attr_function*)0)
531#define MPI_COMM_DUP_FN ((MPI_Comm_copy_attr_function*)-1)
532/* MPI-3 */
533typedef 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);
534typedef int (MPI_Win_delete_attr_function)(MPI_Win win, int win_keyval, void*attribute_val, void*extra_state);
535typedef 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);
536typedef int (MPI_Type_delete_attr_function)(MPI_Datatype datatype, int type_keyval, void*attribute_val, void*extra_state);
538#define MPI_WIN_NULL_COPY_FN ((MPI_Win_copy_attr_function*)0)
539#define MPI_TYPE_NULL_COPY_FN ((MPI_Type_copy_attr_function*)0)
541#define MPI_WIN_NULL_DELETE_FN ((MPI_Win_delete_attr_function*)0)
542#define MPI_TYPE_NULL_DELETE_FN ((MPI_Type_delete_attr_function*)0)
544#define MPI_WIN_DUP_FN ((MPI_Win_copy_attr_function*)-1)
545#define MPI_TYPE_DUP_FN ((MPI_Type_copy_attr_function*)-1)
546
547#define MPI_KEYVAL_INVALID 0
548
549#define MPI_TAG_UB 1
550#define MPI_HOST 2
551#define MPI_IO 3
552#define MPI_WTIME_IS_GLOBAL 4
553#define MPI_UNIVERSE_SIZE 5
554#define MPI_APPNUM 6
555#define MPI_LASTUSEDCODE 7
556#define _NM_MPI_ATTR_OFFSET 8
557
564typedef int MPI_T_enum;
565
566#define MPI_T_ENUM_NULL ((MPI_T_enum)0)
567
569
570#define MPI_T_CVAR_HANDLE_NULL ((MPI_T_cvar_handle)0)
571
573
574#define MPI_T_PVAR_HANDLE_NULL ((MPI_T_pvar_handle)0)
575#define MPI_T_PVAR_ALL_HANDLES ((MPI_T_pvar_handle)-1)
576
578
579#define MPI_T_PVAR_SESSION_NULL ((MPI_T_pvar_session)0)
580
581/* verbosity levels */
582#define MPI_T_VERBOSITY_USER_BASIC 1
583#define MPI_T_VERBOSITY_USER_DETAIL 2
584#define MPI_T_VERBOSITY_USER_ALL 3
585#define MPI_T_VERBOSITY_TUNER_BASIC 4
586#define MPI_T_VERBOSITY_TUNER_DETAIL 5
587#define MPI_T_VERBOSITY_TUNER_ALL 6
588#define MPI_T_VERBOSITY_MPIDEV_BASIC 7
589#define MPI_T_VERBOSITY_MPIDEV_DETAIL 8
590#define MPI_T_VERBOSITY_MPIDEV_ALL 9
591
592/* MPI tool binding */
593#define MPI_T_BIND_NO_OBJECT 0
594#define MPI_T_BIND_MPI_COMM 1
595#define MPI_T_BIND_MPI_DATATYPE 2
596#define MPI_T_BIND_MPI_ERRHANDLER 3
597#define MPI_T_BIND_MPI_FILE 4
598#define MPI_T_BIND_MPI_GROUP 5
599#define MPI_T_BIND_MPI_OP 6
600#define MPI_T_BIND_MPI_REQUEST 7
601#define MPI_T_BIND_MPI_WIN 8
602#define MPI_T_BIND_MPI_MESSAGE 9
603#define MPI_T_BIND_MPI_INFO 10
604#define MPI_T_BIND_MPI_SESSION 11
605
606/* scope for cvars */
607#define MPI_T_SCOPE_CONSTANT 1
608#define MPI_T_SCOPE_READONLY 2
609#define MPI_T_SCOPE_LOCAL 3
610#define MPI_T_SCOPE_GROUP 4
611#define MPI_T_SCOPE_GROUP_EQ 5
612#define MPI_T_SCOPE_ALL 6
613#define MPI_T_SCOPE_ALL_EQ 7
614
615/* classes for pvars */
616/* warning, values must match enum nm_profile_class_e */
617#define MPI_T_PVAR_CLASS_STATE 1
618#define MPI_T_PVAR_CLASS_LEVEL 2
619#define MPI_T_PVAR_CLASS_SIZE 3
620#define MPI_T_PVAR_CLASS_PERCENTAGE 4
621#define MPI_T_PVAR_CLASS_HIGHWATERMARK 5
622#define MPI_T_PVAR_CLASS_LOWWATERMARK 6
623#define MPI_T_PVAR_CLASS_COUNTER 7
624#define MPI_T_PVAR_CLASS_AGGREGATE 8
625#define MPI_T_PVAR_CLASS_TIMER 9
626#define MPI_T_PVAR_CLASS_GENERIC 10
627
630/* ********************************************************* */
631/* ** FORTRAN support */
632
633#ifndef NMAD_FORTRAN_TARGET_NONE
634
639#if defined(NM_FORTRAN_SIZEOF_INTEGER_4)
640typedef int32_t MPI_Fint;
641#elif defined(NM_FORTRAN_SIZEOF_INTEGER_8)
642typedef int64_t MPI_Fint;
643#else
644#error undefined Fortran INTEGER size
645#endif
646
647/* Those global variables are used to stock values of predefined static variables(COMMON block) from fortran.
648Their value is defined only between the calls to MPI_INIT and MPI_FINALIZE */
650extern MPI_Fint*MPI_F_STATUS_IGNORE;
651extern MPI_Fint*MPI_F_STATUSES_IGNORE;
652
654extern void*NM_MPI_F_MPI_BOTTOM;
655extern void*NM_MPI_F_MPI_IN_PLACE;
656extern void*NM_MPI_F_MPI_UNWEIGHTED;
659extern void*NM_MPI_F_MPI_ARGV_NULL;
660extern void*NM_MPI_F_MPI_ARGVS_NULL;
661
662
663MPI_Comm MPI_Comm_f2c(MPI_Fint comm);
664
665MPI_Fint MPI_Comm_c2f(MPI_Comm comm);
666
667MPI_Datatype MPI_Type_f2c(MPI_Fint datatype);
668
669MPI_Fint MPI_Type_c2f(MPI_Datatype datatype);
670
671MPI_Group MPI_Group_f2c(MPI_Fint group);
672
673MPI_Fint MPI_Group_c2f(MPI_Group group);
674
675MPI_Info MPI_Info_f2c(MPI_Fint info);
676
677MPI_Fint MPI_Info_c2f(MPI_Info info);
678
679MPI_Request MPI_Request_f2c(MPI_Fint request);
680
681MPI_Fint MPI_Request_c2f(MPI_Request request);
682
683MPI_Op MPI_Op_f2c(MPI_Fint op);
684
685MPI_Fint MPI_Op_c2f(MPI_Op op);
686
687MPI_Win MPI_Win_f2c(MPI_Fint win);
688
689MPI_Fint MPI_Win_c2f(MPI_Win win);
690
692
694
695/* Translates a Fortran status into a C status.
696 * @param f_status Fortan status
697 * @param c_status C status
698 * @return MPI status
699 */
700int MPI_Status_f2c(MPI_Fint*f_status, MPI_Status*c_status);
701
702/* Translates a C status into a Fortran status.
703 * @param f_status Fortan status
704 * @param c_status C status
705 */
706int MPI_Status_c2f(MPI_Status*c_status, MPI_Fint*f_status);
707
710#endif /* NMAD_FORTRAN_TARGET_NONE */
711
712
715#endif /* NM_MPI_TYPES_H */
void * extra_state
nm_mpi_status_t status
status of request
Definition: nm_mpi_private.h:7
void * NM_MPI_F_MPI_ERRCODES_IGNORE
int MPI_T_pvar_handle
Definition: nm_mpi_types.h:572
MPI_Comm_errhandler_function MPI_Comm_errhandler_fn
pre MPI-2.2 compatibility type
Definition: nm_mpi_types.h:508
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.
Definition: nm_mpi_types.h:422
int MPI_Grequest_free_function(void *extra_state)
Definition: nm_mpi_types.h:228
int MPI_Request
Request handle.
Definition: nm_mpi_types.h:214
int() MPI_Type_delete_attr_function(MPI_Datatype datatype, int type_keyval, void *attribute_val, void *extra_state)
Definition: nm_mpi_types.h:536
int MPI_Grequest_cancel_function(void *extra_state, int complete)
Definition: nm_mpi_types.h:229
void() MPI_Comm_errhandler_function(MPI_Comm *, int *,...)
Definition: nm_mpi_types.h:507
int MPI_Errhandler
Definition: nm_mpi_types.h:497
int MPI_Group
Group handle.
Definition: nm_mpi_types.h:244
int MPI_Status_f2c(MPI_Fint *f_status, MPI_Status *c_status)
MPI_Win MPI_Win_f2c(MPI_Fint win)
int() MPI_Delete_function(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state)
Definition: nm_mpi_types.h:519
int MPI_Message
handle for matching probe
Definition: nm_mpi_types.h:235
nm_mpi_type_combiner_t
Types of datatypes.
Definition: nm_mpi_types.h:390
@ MPI_COMBINER_DUP
type is duplicated from another type
Definition: nm_mpi_types.h:399
@ MPI_COMBINER_INDEXED
indexed type
Definition: nm_mpi_types.h:395
@ MPI_COMBINER_STRUCT
structured type
Definition: nm_mpi_types.h:397
@ MPI_COMBINER_RESIZED
type is resized from another type
Definition: nm_mpi_types.h:398
@ MPI_COMBINER_HINDEXED_BLOCK
Definition: nm_mpi_types.h:401
@ MPI_COMBINER_INDEXED_BLOCK
Definition: nm_mpi_types.h:400
@ MPI_COMBINER_HVECTOR
vector with stride in bytes
Definition: nm_mpi_types.h:394
@ MPI_COMBINER_SUBARRAY
Definition: nm_mpi_types.h:402
@ MPI_COMBINER_NAMED
basic type built-in MPI
Definition: nm_mpi_types.h:391
@ MPI_COMBINER_HINDEXED
indexed type, offset in bytes
Definition: nm_mpi_types.h:396
@ MPI_COMBINER_CONTIGUOUS
contiguous array
Definition: nm_mpi_types.h:392
@ MPI_COMBINER_VECTOR
vector with stride
Definition: nm_mpi_types.h:393
nm_mpi_aint_t MPI_Aint
type that holds an address
Definition: nm_mpi_types.h:167
int() MPI_Copy_function(MPI_Comm oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag)
Definition: nm_mpi_types.h:518
MPI_Datatype MPI_Type_f2c(MPI_Fint datatype)
MPI_Fint * MPI_F_STATUSES_IGNORE
int MPI_Session
Session handle.
Definition: nm_mpi_types.h:291
MPI_Group MPI_Group_f2c(MPI_Fint group)
int MPI_Comm
Communicator handle.
Definition: nm_mpi_types.h:268
MPI_Win_errhandler_function MPI_Win_errhandler_fn
pre MPI-2.2 compatibility type
Definition: nm_mpi_types.h:510
void() MPI_Win_errhandler_function(MPI_Win *, int *,...)
Definition: nm_mpi_types.h:509
MPI_Fint MPI_Type_c2f(MPI_Datatype datatype)
int MPI_Win
Window handle.
Definition: nm_mpi_types.h:450
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 counts
Definition: nm_mpi_types.h:165
void MPI_Session_errhandler_function(MPI_Session *, int *error_code,...)
Definition: nm_mpi_types.h:512
int MPI_Grequest_query_function(void *extra_state, MPI_Status *status)
Definition: nm_mpi_types.h:227
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)
Definition: nm_mpi_types.h:534
int MPI_T_enum
an enumeration for MPI tool support
Definition: nm_mpi_types.h:564
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)
Definition: nm_mpi_types.h:535
int MPI_T_pvar_session
Definition: nm_mpi_types.h:577
int64_t nm_mpi_count_t
internal type for counts
Definition: nm_mpi_types.h:170
void * NM_MPI_F_MPI_BOTTOM
Those are not mandatory in MPI but are useful for fortran stubs.
int MPI_T_cvar_handle
Definition: nm_mpi_types.h:568
MPI_Op MPI_Op_f2c(MPI_Fint op)
int MPI_Info
An info opaque object.
Definition: nm_mpi_types.h:177
MPI_Comm MPI_Comm_f2c(MPI_Fint comm)
MPI_Errhandler MPI_Errhandler_f2c(MPI_Fint errhandler)
int MPI_Status_c2f(MPI_Status *c_status, MPI_Fint *f_status)
void * NM_MPI_F_MPI_WEIGHTS_EMPTY
MPI_Fint MPI_Op_c2f(MPI_Op op)
void() MPI_Handler_function(MPI_Comm *, int *,...)
Definition: nm_mpi_types.h:505
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)
Definition: nm_mpi_types.h:524
int() MPI_Comm_delete_attr_function(MPI_Comm comm, int comm_keyval, void *attribute_val, void *extra_state)
Definition: nm_mpi_types.h:525
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
Definition: nm_mpi_types.h:172
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)
Definition: nm_mpi_types.h:533
void * NM_MPI_F_MPI_ARGVS_NULL
int MPI_Datatype
Datatype handle.
Definition: nm_mpi_types.h:305
Status handle.
Definition: nm_mpi_types.h:194
int MPI_SOURCE
field name mandatory by spec
Definition: nm_mpi_types.h:195
int size
size of data received
Definition: nm_mpi_types.h:198
int MPI_TAG
field name mandatory by spec
Definition: nm_mpi_types.h:196
int cancelled
whether request was cancelled
Definition: nm_mpi_types.h:199
int MPI_ERROR
field name mandatory by spec
Definition: nm_mpi_types.h:197