44
44
#define TAU_DOT_H_LESS_HEADERS
45
45
#include " TAU.h"
46
46
47
+ #include < mpi.h>
47
48
48
49
using namespace cali ;
49
50
@@ -62,19 +63,22 @@ class TAUBinding : public cali::AnnotationBinding
62
63
char * argv[1 ];
63
64
argv[0 ] = const_cast <char *>(dummy);
64
65
Tau_init (argc,argv);
65
- // want to get the *real* MPI rank. How do I get it? like this.
66
- Attribute mpi_rank_attr = c->get_attribute (" mpi.rank" );
67
- if (mpi_rank_attr == Attribute::invalid) {
68
- // no MPI
66
+
67
+ int flag = 0 ;
68
+ PMPI_Initialized (&flag);
69
+
70
+ if (flag == 0 ) {
69
71
Tau_set_node (0 );
70
72
} else {
71
- // have MPI, get the rank
72
- Tau_set_node (c->get (chn, mpi_rank_attr).value ().to_int ());
73
+ int rank = 0 ;
74
+ PMPI_Comm_rank (MPI_COMM_WORLD, &rank);
75
+
76
+ Tau_set_node (rank);
73
77
}
74
78
// register for events of interest?
75
79
}
76
80
77
- void finalize (Caliper* c ) {
81
+ void finalize (Caliper*, Channel* ) {
78
82
// do something?
79
83
}
80
84
@@ -92,7 +96,7 @@ class TAUBinding : public cali::AnnotationBinding
92
96
// handle an end event by stopping a TAU timer
93
97
void on_end (Caliper* c, Channel*, const Attribute& attr, const Variant& value) {
94
98
if (attr.type () == CALI_TYPE_STRING) {
95
- Tau_stop ((const char *)( value.data ());
99
+ Tau_stop ((const char *) value.data ());
96
100
} else {
97
101
Tau_stop ((const char *)(value.to_string ().data ()));
98
102
}
@@ -101,7 +105,10 @@ class TAUBinding : public cali::AnnotationBinding
101
105
102
106
} // namespace
103
107
104
- namespace cali {
105
- CaliperService tau_service { " tau" , &AnnotationBinding::make_binding<::TAUBinding> };
108
+ namespace cali
109
+ {
110
+
111
+ CaliperService tau_service { " tau" , &AnnotationBinding::make_binding<::TAUBinding> };
112
+
106
113
}
107
114
0 commit comments