Making preprocessor defines work correctly. Including conv-mach.h to this
[charm.git] / src / ck-perf / trace-controlPoints-BGP.C
1 #include "conv-mach.h" 
2
3 #ifdef CMK_BLUEGENEP
4
5 #include <spi/UPC.h>
6 #include <spi/UPC_Events.h>
7 #include <iostream>
8
9
10 /// An initcall that registers the idle time reducer idleTimeReduction()
11 void initBGP_UPC_Counters(void) {
12
13     // every process on the node calls BGP_UPC_Initialize()
14     BGP_UPC_Initialize();
15
16
17     // just one rank per node sets the counter config and zeros the counters
18     
19     // counter_mode = 0, 1, 2, 3 (plus some others … see UPC.h)
20     // counter_trigger = BGP_UPC_CFG_LEVEL_HIGH, BGP_UPC_CFG_EDGE_DEFAULT
21     
22     BGP_UPC_Mode_t counter_mode = BGP_UPC_MODE_0;
23     BGP_UPC_Event_Edge_t counter_trigger = BGP_UPC_CFG_LEVEL_HIGH;
24     
25     BGP_UPC_Initialize_Counter_Config(counter_mode, counter_trigger);
26
27     BGP_UPC_Zero_Counter_Values();
28     BGP_UPC_Start(0);
29
30 }
31
32
33
34
35
36 /// print out the counters
37 void printBGP_UPC_Counters(void) {
38     
39  
40     BGP_UPC_Stop();
41    
42     // Should look at BGP_TORUS_XP_NO_TOKENS to determine if there is contention
43    
44     int64_t cxp = BGP_UPC_Read_Counter_Value(BGP_TORUS_XP_PACKETS, BGP_UPC_READ_EXCLUSIVE);
45     std::cout << "BGP_UPC_Read_Counter_Value returned torus xp = " << cxp << std::endl;
46
47     int64_t cxm = BGP_UPC_Read_Counter_Value(BGP_TORUS_XM_PACKETS, BGP_UPC_READ_EXCLUSIVE);
48     std::cout << "BGP_UPC_Read_Counter_Value returned torus xm = " << cxm << std::endl;
49
50     int64_t cyp = BGP_UPC_Read_Counter_Value(BGP_TORUS_YP_PACKETS, BGP_UPC_READ_EXCLUSIVE);
51     std::cout << "BGP_UPC_Read_Counter_Value returned torus yp = " << cyp << std::endl;
52
53     int64_t cym = BGP_UPC_Read_Counter_Value(BGP_TORUS_YM_PACKETS, BGP_UPC_READ_EXCLUSIVE);
54     std::cout << "BGP_UPC_Read_Counter_Value returned torus ym = " << cym << std::endl;
55
56     int64_t czp = BGP_UPC_Read_Counter_Value(BGP_TORUS_ZP_PACKETS, BGP_UPC_READ_EXCLUSIVE);
57     std::cout << "BGP_UPC_Read_Counter_Value returned torus zp = " << czp << std::endl;
58
59     int64_t czm = BGP_UPC_Read_Counter_Value(BGP_TORUS_ZM_PACKETS, BGP_UPC_READ_EXCLUSIVE);
60     std::cout << "BGP_UPC_Read_Counter_Value returned torus zm = " << czm << std::endl;
61
62
63
64     int64_t cxpc = BGP_UPC_Read_Counter_Value(BGP_TORUS_XP_32BCHUNKS, BGP_UPC_READ_EXCLUSIVE);
65     std::cout << "BGP_UPC_Read_Counter_Value returned torus xp chunks = " << cxpc << std::endl;
66
67     int64_t cxmc = BGP_UPC_Read_Counter_Value(BGP_TORUS_XM_32BCHUNKS, BGP_UPC_READ_EXCLUSIVE);
68     std::cout << "BGP_UPC_Read_Counter_Value returned torus xm chunks = " << cxmc << std::endl;
69
70     int64_t cypc = BGP_UPC_Read_Counter_Value(BGP_TORUS_YP_32BCHUNKS, BGP_UPC_READ_EXCLUSIVE);
71     std::cout << "BGP_UPC_Read_Counter_Value returned torus yp chunks = " << cypc << std::endl;
72
73     int64_t cymc = BGP_UPC_Read_Counter_Value(BGP_TORUS_YM_32BCHUNKS, BGP_UPC_READ_EXCLUSIVE);
74     std::cout << "BGP_UPC_Read_Counter_Value returned torus ym chunks = " << cymc << std::endl;
75
76     int64_t czpc = BGP_UPC_Read_Counter_Value(BGP_TORUS_ZP_32BCHUNKS, BGP_UPC_READ_EXCLUSIVE);
77     std::cout << "BGP_UPC_Read_Counter_Value returned torus zp chunks = " << czpc << std::endl;
78
79     int64_t czmc = BGP_UPC_Read_Counter_Value(BGP_TORUS_ZM_32BCHUNKS, BGP_UPC_READ_EXCLUSIVE);
80     std::cout << "BGP_UPC_Read_Counter_Value returned torus zm chunks = " << czmc << std::endl;
81
82
83     //    Save the counter values from the counter_data structure …
84     BGP_UPC_Start(0);
85     
86 }
87 #else
88
89 #warning "NOT USING BGP UPC"
90
91 void printBGP_UPC_Counters(void){
92 // do nothing since not on BGP
93 }
94
95
96
97 void initBGP_UPC_Counters(void){
98 // do nothing since not on BGP
99 }
100
101
102
103 #endif