c14b576676d07e9385b59c2255a71aaebab187f2
[charm.git] / src / arch / ofi / conv-common.h
1 #define CMK_USE_LRTS                                        1
2
3 /* CMK_HAS_PARTITION requires the 'root' field to be present in CMK_MSG_HEADER_UNIQUE */
4 #define CMK_HAS_PARTITION                                1
5
6 /* if set to 1 it uses the default scheduler (Csd) defined in convcore.C,
7    otherwise machine.C has to provide its own scheduler. Should be 1 in almost
8    every machine. */
9 #define CMK_CMIDELIVERS_USE_COMMON_CODE                    1
10
11 /* specifies if the functions CmiPrintf, CmiError and CmiScanf are implemented
12    in machine.C (1), or if the standard definitions in convcore.C should be used
13    (0). */
14 #define CMK_CMIPRINTF_IS_A_BUILTIN                         0
15
16 /* define the converse headers. For most of the purposes, only the UNIQUE header
17    needs to be modified, the others will follow. BLUEGENE may need to be
18    adapted.
19
20    In particular, the fields "hdl", "xhdl" and "info" must be always present in
21    the extended header, since they are directly accessed in converse.h */
22 /* - root is needed by CMK_HAS_PARTITION
23  * - startid, redID
24  * - rank is needed by broadcast
25  */
26 #define CMK_MSG_HEADER_UNIQUE    CmiUInt4 size; CmiUInt2 rank,hdl,xhdl,info,type,redID; CmiInt4 root; CmiUInt1 zcMsgType:2;
27
28 #define CMK_MSG_HEADER_BASIC  CMK_MSG_HEADER_EXT
29 #define CMK_MSG_HEADER_EXT            { CMK_MSG_HEADER_UNIQUE }
30 #define CMK_MSG_HEADER_BIGSIM_ {CMK_MSG_HEADER_UNIQUE CMK_BIGSIM_FIELDS}
31
32 /* defines different parameters of groups of processors. (next 4 definitions)
33    used in converse.h (the first) and convcore.C (the others). a value of 1
34    means that convcore.C defines the methods, otherwise it is up to machine.C to
35    define them */
36
37 /* basic structure of a CmiGroup (defined in converse.h) */
38 #define CMK_MULTICAST_GROUP_TYPE                struct { unsigned pe, id; }
39 /* definitions of establishment and lookup of groups */
40 #define CMK_MULTICAST_DEF_USE_COMMON_CODE                  1
41 /* definitions of List sending functions */
42 #define CMK_MULTICAST_LIST_USE_COMMON_CODE                 1
43 /* definitions of Multicast sending functions */
44 #define CMK_MULTICAST_GROUP_USE_COMMON_CODE                1
45
46 /* define the entity of the spanning tree used (it is 4 in all configurations)
47    definese also if the code in converse.h will be used (1) or not and
48    implemented in machine.C (0). At the momement all configurations use the
49    common code. */
50 #define CMK_SPANTREE_MAXSPAN                               4
51 #define CMK_SPANTREE_USE_COMMON_CODE                       1
52
53 /* Specifies if the routines which send multiple messages (vectors of messages)
54    to a processors are implemented in convcore.C (1) or in machine.C (1). */
55 #define CMK_VECTOR_SEND_USES_COMMON_CODE                   1
56
57 /* Defines if there is a "charmrun" program running on the system, which
58    interacts with possible connecting clients (0), or if there is no such
59    program, and processor 0 does the job (1). Currently only netlrts- and
60    verbs- versions have this set to 0, all the others have it to 1. */
61 #define NODE_0_IS_CONVHOST                                 1
62
63 /* Enables the persistent communication protocol if set to 1. */
64 #define CMK_PERSISTENT_COMM                                0
65
66 /* Enables support for immediate messages if set to 1. */
67 #define CMK_IMMEDIATE_MSG                                  1
68
69 /* This is needed to be 1 if the machine layer is used in some architectures
70    where there is no coprocessor, and to pull messages out of the network there
71    is the need of the processor intervention (like in BlueGene/L). 0 otherwise.
72  */
73 #define CMK_MACHINE_PROGRESS_DEFINED                       1
74
75 /* This is required to define LrtsLock/LrtsUnlock */
76 #define CMK_USE_COMMON_LOCK                                1
77
78 #define CMK_ONESIDED_IMPL                                  1
79
80 #define CMK_CMA_MIN                                        16384
81
82 #define CMK_CMA_MAX                                        4194304
83
84 #define CMK_NOCOPY_DIRECT_BYTES                           16
85
86 #define CMK_REG_REQUIRED                                   1
87
88 #define CMK_CONVERSE_MPI                                   0