Skip to content

Commit 0a641ba

Browse files
authored
add ratio to profiler (#12701)
1 parent 842fb02 commit 0a641ba

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

paddle/fluid/platform/profiler.cc

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -270,12 +270,13 @@ struct EventItem {
270270
double min_time;
271271
double max_time;
272272
double ave_time;
273+
float ratio;
273274
};
274275

275276
// Print results
276277
void PrintProfiler(const std::vector<std::vector<EventItem>>& events_table,
277278
const std::string& sorted_domain, const size_t name_width,
278-
const size_t data_width) {
279+
const size_t data_width, double total) {
279280
// Output header information
280281
std::cout << "\n------------------------->"
281282
<< " Profiling Report "
@@ -300,7 +301,8 @@ void PrintProfiler(const std::vector<std::vector<EventItem>>& events_table,
300301
std::cout << std::setw(name_width) << "Event" << std::setw(data_width)
301302
<< "Calls" << std::setw(data_width) << "Total"
302303
<< std::setw(data_width) << "Min." << std::setw(data_width)
303-
<< "Max." << std::setw(data_width) << "Ave." << std::endl;
304+
<< "Max." << std::setw(data_width) << "Ave."
305+
<< std::setw(data_width) << "Ratio." << std::endl;
304306
for (size_t i = 0; i < events_table.size(); ++i) {
305307
for (size_t j = 0; j < events_table[i].size(); ++j) {
306308
const EventItem& event_item = events_table[i][j];
@@ -309,7 +311,9 @@ void PrintProfiler(const std::vector<std::vector<EventItem>>& events_table,
309311
<< std::setw(data_width) << event_item.total_time
310312
<< std::setw(data_width) << event_item.min_time
311313
<< std::setw(data_width) << event_item.max_time
312-
<< std::setw(data_width) << event_item.ave_time << std::endl;
314+
<< std::setw(data_width) << event_item.ave_time
315+
<< std::setw(data_width) << event_item.total_time / total
316+
<< std::endl;
313317
}
314318
}
315319
std::cout << std::endl;
@@ -359,6 +363,7 @@ void ParseEvents(const std::vector<std::vector<Event>>& events,
359363

360364
std::vector<std::vector<EventItem>> events_table;
361365
size_t max_name_width = 0;
366+
double total = 0.; // the total time
362367
for (size_t i = 0; i < events.size(); i++) {
363368
std::list<Event> pushed_events;
364369
std::vector<EventItem> event_items;
@@ -379,6 +384,7 @@ void ParseEvents(const std::vector<std::vector<Event>>& events,
379384
g_state == ProfilerState::kAll)
380385
? rit->CudaElapsedMs(events[i][j])
381386
: rit->CpuElapsedMs(events[i][j]);
387+
total += event_time;
382388

383389
std::string event_name =
384390
"thread" + std::to_string(rit->thread_id()) + "::" + rit->name();
@@ -387,7 +393,8 @@ void ParseEvents(const std::vector<std::vector<Event>>& events,
387393
if (event_idx.find(event_name) == event_idx.end()) {
388394
event_idx[event_name] = event_items.size();
389395
EventItem event_item = {event_name, 1, event_time,
390-
event_time, event_time, event_time};
396+
event_time, event_time, event_time,
397+
0.};
391398
event_items.push_back(event_item);
392399
} else {
393400
int index = event_idx[event_name];
@@ -431,7 +438,7 @@ void ParseEvents(const std::vector<std::vector<Event>>& events,
431438
}
432439

433440
// Print report
434-
PrintProfiler(events_table, sorted_domain, max_name_width + 4, 12);
441+
PrintProfiler(events_table, sorted_domain, max_name_width + 4, 12, total);
435442
}
436443

437444
void DisableProfiler(EventSortingKey sorted_key,

0 commit comments

Comments
 (0)