Add support for PAPI projections tracing on Cray XE
[charm.git] / src / arch / gemini_gni-crayxe / conv-mach.h
1 #ifndef _CONV_MACH_H
2 #define _CONV_MACH_H
3
4 #define CMK_CRAYXE                                         1
5
6 // for cray xe we use the known conflict free counter set from the SPP project
7 #define USE_SPP_PAPI                                       1
8
9 #define XE6_TOPOLOGY                                       1
10
11 /* 1 if the machine has a function called "getpagesize()", 0 otherwise .
12    used in the memory files of converse */
13 #define CMK_GETPAGESIZE_AVAILABLE                          1
14 #define CMK_MEMORY_PAGESIZE                                8192
15 #define CMK_MEMORY_PROTECTABLE                             0
16
17 /* defines which version of memory handlers should be used.
18    used in conv-core/machine.c */
19 #define CMK_MALLOC_USE_GNU_MALLOC                          0
20 #define CMK_MALLOC_USE_OS_BUILTIN                          1
21
22 #define CMI_IO_BUFFER_EXPLICIT                             0
23 #define CMI_IO_FLUSH_USER                                  0
24
25 /* specifies if there is a node queue. it is used in convcore.c and it is
26    tipically set to 1 in smp versions */
27 #define CMK_NODE_QUEUE_AVAILABLE                           0
28
29 /* the following definitions set the type of shared variables to be used. only
30    one of them must be 1, all the others 0. The different implementations are in
31    convserve.h Typically used are UNAVAILABLE for non SMP versions and
32    POSIX_THREADS_SMP for SMP versions. The others are used only in special
33    cases: UNIPROCESSOR in sim and uth, PTHREADS in origin,
34    and NT_THREADS in windows. */
35 #define CMK_SHARED_VARS_UNAVAILABLE                        1 /* non SMP versions */
36 #define CMK_SHARED_VARS_POSIX_THREADS_SMP                  0 /* SMP versions */
37 #define CMK_SHARED_VARS_UNIPROCESSOR                       0
38 #define CMK_SHARED_VARS_PTHREADS                           0
39 #define CMK_SHARED_VARS_NT_THREADS                         0
40
41 /* the following define if signal handlers should be used, both equal to zero
42    means that signals will not be used. only one of the following can be 1, the
43    other must be 0. they differ in the fact that the second (_WITH_RESTART)
44    enables retry on interrupt (a function is recalled upon interrupt and does
45    not return EINTR as in the first case) */
46 #define CMK_SIGNAL_NOT_NEEDED                              1
47 #define CMK_SIGNAL_USE_SIGACTION                           0
48 #define CMK_SIGNAL_USE_SIGACTION_WITH_RESTART              0
49
50 /* decide which is the default implementation of the threads (see threads.c)
51    Only one of the following can be 1. If none of them is selected, qthreads
52    will be used as default. This default can be overwritten at compile time
53    using -DCMK_THREADS_BUILD_"type"=1 */
54 #define CMK_THREADS_USE_CONTEXT                            0
55 #define CMK_THREADS_USE_JCONTEXT                           0
56 #define CMK_THREADS_USE_PTHREADS                           0
57
58 #define CMK_USE_SPINLOCK                                   1
59
60 /* Specifies what kind of timer to use, and the correspondent headers will be
61    included in convcore.c. If none is selected, then the machine.c file needs to
62    implement the timer primitives. */
63 #define CMK_TIMER_USE_RTC                                  0
64 #define CMK_TIMER_USE_RDTSC                                0
65 #define CMK_TIMER_USE_GETRUSAGE                            0
66 #define CMK_TIMER_USE_SPECIAL                              1
67 #define CMK_TIMER_USE_TIMES                                0
68 #define CMK_TIMER_USE_BLUEGENEL                            0
69
70
71 /* In order to have a type with a fixed length across machines, these define the
72    different size integers, unsigned integers, and floats as the machine
73    specific types corresponding to the given sizes (2, 4, 8 bytes) */
74 #define CMK_TYPEDEF_INT2 short
75 #define CMK_TYPEDEF_INT4 int
76 #define CMK_TYPEDEF_INT8 long
77 #define CMK_TYPEDEF_UINT2 unsigned short
78 #define CMK_TYPEDEF_UINT4 unsigned int
79 #define CMK_TYPEDEF_UINT8 unsigned long long
80 #define CMK_TYPEDEF_FLOAT4 float
81 #define CMK_TYPEDEF_FLOAT8 double
82
83 /* Specifies what the processor will do when it is idle, either sleep (1) or go
84    into busy waiting mode (0). In convcore.c there are a few files included if
85    sleeping mode, but the real distinct implementation is in the machine.c
86    file. */
87 #define CMK_WHEN_PROCESSOR_IDLE_BUSYWAIT                   1
88 #define CMK_WHEN_PROCESSOR_IDLE_USLEEP                     0
89
90 /* specifies weather there is a web server collecting utilization statistics (1)
91    or not (0) */
92 #define CMK_WEB_MODE                                       1
93
94 #define CMK_DEBUG_MODE                                     0
95
96 /* enables the load balancer framework. set to 1 for almost all the machines */
97 #define CMK_LBDB_ON                                        1
98
99 #define CMK_64BIT                                          1
100
101 /* Other possible definitions:
102
103 In fault tolerant architectures, CK_MEM_CHECKPOINT can be set. In this case the
104 extended header must contain also another field called "pn" (phase number).
105
106 */
107
108 #endif