Skip to content

Commit 7ee3b85

Browse files
committed
#2387: trace: inherit virtual gather function from TraceLite
1 parent 7005137 commit 7ee3b85

File tree

6 files changed

+21
-6
lines changed

6 files changed

+21
-6
lines changed

src/vt/trace/trace.cc

+7
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,12 @@ void Trace::addUserData(int32_t data) {
197197
);
198198
}
199199

200+
void Trace::gatherUserEvents() {
201+
vt::runInEpochCollective([&]{
202+
proxy.reduce<vt::collective::PlusOp>(0, std::move(user_event_));
203+
});
204+
}
205+
200206
UserEventIDType Trace::registerUserEventRoot(std::string const& name) {
201207
return user_event_.rooted(name);
202208
}
@@ -519,6 +525,7 @@ void Trace::setTraceEnabledCurrentPhase(PhaseType cur_phase) {
519525
// Go ahead and perform a trace flush when tracing is disabled (and was
520526
// previously enabled) to reduce memory footprint.
521527
if (not ret and theConfig()->vt_trace_flush_size != 0) {
528+
gatherUserEvents();
522529
writeTracesFile(incremental_flush_mode, true);
523530
}
524531
}

src/vt/trace/trace.h

+5
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,11 @@ struct Trace : runtime::component::Component<Trace>, TraceLite {
287287
*/
288288
void addUserData(int32_t data);
289289

290+
/**
291+
* \brief Gathers all user-defined event hashes onto node 0.
292+
*/
293+
void gatherUserEvents() override;
294+
290295
/**
291296
* \brief Log a memory usage event
292297
*

src/vt/trace/trace_lite.cc

-4
Original file line numberDiff line numberDiff line change
@@ -543,10 +543,6 @@ void TraceLite::flushTracesFile(bool useGlobalSync) {
543543
void TraceLite::writeTracesFile(int flush, bool is_incremental_flush) {
544544
auto const node = theContext()->getNode();
545545

546-
vt::runInEpochCollective([&]{
547-
proxy.reduce<vt::collective::PlusOp>(0, std::move(user_event_));
548-
});
549-
550546
size_t to_write = traces_.size();
551547

552548
if (traceWritingEnabled(node) and to_write > 0) {

src/vt/trace/trace_lite.h

+5
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@ struct TraceLite {
8282

8383
virtual ~TraceLite();
8484

85+
/**
86+
* \brief Gathers all user-defined event hashes onto node 0.
87+
*/
88+
virtual void gatherUserEvents();
89+
8590
/**
8691
* \brief Set zlib incremental flush mode for trace file.
8792
*

src/vt/trace/trace_user_event.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,10 @@ bool UserEventRegistry::insertEvent(
126126
std::forward_as_tuple(name)
127127
);
128128
return true;
129-
} else {
129+
} else if (user_event_[event] != name){
130130
user_event_[event] += " COLLISION " + name;
131-
return false;
132131
}
132+
return false;
133133
}
134134

135135
UserEventRegistry operator+(

src/vt/trace/trace_user_event.h

+2
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@ struct UserEventRegistry {
123123

124124
friend void insertNewUserEvent(UserEventIDType event, std::string const& name);
125125

126+
friend UserEventRegistry operator+(UserEventRegistry r1, UserEventRegistry const& r2);
127+
126128
template <typename Serializer>
127129
void serialize(Serializer& s) {
128130
s | cur_root_event_

0 commit comments

Comments
 (0)