updated argc before calling MPI_Init in case argc and argv do not agree.
[charm.git] / src / arch / template / conv-common.h
1 /* if set to 1 it uses the default scheduler (Csd) defined in convcore.c,
2    otherwise machine.c has to provide its own scheduler. Should be 1 in almost
3    every machine. */
4 #define CMK_CMIDELIVERS_USE_COMMON_CODE                    1
5
6 /* specifies if the functions CmiPrintf, CmiError and CmiScanf are implemented
7    in machine.c (1), or if the standard definitions in convcore.c should be used
8    (0). */
9 #define CMK_CMIPRINTF_IS_A_BUILTIN                         0
10
11 /* define the converse headers. For most of the purposes, only the UNIQUE header
12    needs to be modified, the others will follow. BLUEGENE may need to be
13    adapted.
14
15    In particular, the fields "hdl", "xhdl" and "info" must be always present in
16    the extended header, since they are directly accessed in converse.h */
17 #define CMK_MSG_HEADER_UNIQUE    CmiUInt4 size; CmiUInt2 hdl,xhdl,info;
18
19 #define CMK_MSG_HEADER_BASIC  CMK_MSG_HEADER_EXT
20 #define CMK_MSG_HEADER_EXT            { CMK_MSG_HEADER_UNIQUE }
21 #define CMK_MSG_HEADER_BIGSIM_ {CMK_MSG_HEADER_UNIQUE CMK_BIGSIM_FIELDS}
22
23 /* defines different parameters of groups of processors. (next 4 definitions)
24    used in converse.h (the first) and convcore.c (the others). a value of 1
25    means that convcore.c defines the methods, otherwise it is up to machine.c to
26    define them */
27
28 /* basic structure of a CmiGroup (defined in converse.h) */
29 #define CMK_MULTICAST_GROUP_TYPE                struct { unsigned pe, id; }
30 /* definitions of establishment and lookup of groups */
31 #define CMK_MULTICAST_DEF_USE_COMMON_CODE                  1
32 /* definitions of List sending functions */
33 #define CMK_MULTICAST_LIST_USE_COMMON_CODE                 1
34 /* definitions of Multicast sending functions */
35 #define CMK_MULTICAST_GROUP_USE_COMMON_CODE                1
36
37 /* define the entity of the spanning tree used (it is 4 in all configurations)
38    definese also if the code in converse.h will be used (1) or not and
39    implemented in machine.c (0). At the momement all configurations use the
40    common code. */
41 #define CMK_SPANTREE_MAXSPAN                               4
42 #define CMK_SPANTREE_USE_COMMON_CODE                       1
43
44 /* Specifies if the routines which send multiple messages (vectors of messages)
45    to a processors are implemented in convcore.c (1) or in machine.c (1). */
46 #define CMK_VECTOR_SEND_USES_COMMON_CODE                   1
47
48 /* Enable the CCS protocol if set to 1. */
49 #define CMK_CCS_AVAILABLE                                  1
50
51 /* Defines if there is a "charmrun" program running on the system, which
52    interacts with possible connecting clients (0), or if there is no such
53    program, and processor 0 does the job (1). Currently only net- versions have
54    this set to 0, all the others have it to 1. */
55 #define NODE_0_IS_CONVHOST                                 1
56
57 /* Enables the persistent communication protocol if set to 1. */
58 #define CMK_PERSISTENT_COMM                                0
59
60 /* Enables support for immediate messages if set to 1. */
61 #define CMK_IMMEDIATE_MSG                                  0
62
63 /* This is needed to be 1 if the machine layer is used in some architectures
64    where there is no coprocessor, and to pull messages out of the network there
65    is the need of the processor intervention (like in BlueGene/L). 0 otherwise.
66  */
67 #define CMK_MACHINE_PROGRESS_DEFINED                       0