MCPcopy Create free account
hub / github.com/AMReX-Codes/amrex / computeElapsedTimeUserdata

Function computeElapsedTimeUserdata

Src/Base/AMReX_CuptiTrace.cpp:141–181  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

139}
140
141double
142computeElapsedTimeUserdata (const std::vector<std::unique_ptr<CUpti_Activity_Userdata>>&
143 activityRecordUserdata) noexcept
144{
145 if (activityRecordUserdata.empty()) {
146 return 0.0;
147 }
148
149 std::map<int, unsigned long long> streamIDToElapsedTimeMap;
150
151 // Initialize tally of unique streams
152 for (auto& record : activityRecordUserdata) {
153 if (streamIDToElapsedTimeMap.find(record->getStreamID())
154 == streamIDToElapsedTimeMap.end()) {
155 // Not found
156 streamIDToElapsedTimeMap[record->getStreamID()] = 0;
157 } else {
158 // Found
159 }
160 }
161
162 // Sum kernel times in each stream
163 for (auto& record : activityRecordUserdata) {
164 streamIDToElapsedTimeMap[record->getStreamID()] += record->getTimeElapsed();
165 }
166
167 // Sum over streams
168 unsigned long long res = 0;
169 for (auto const& kv : streamIDToElapsedTimeMap) {
170 res += kv.second;
171 }
172
173 // Average time per kernel
174 res /= (1.*activityRecordUserdata.size());
175
176 // Alternative: average time per stream
177 //res /= streamIDToElapsedTimeMap.size();
178
179 // Default is ns, convert to sec
180 return (double) res*1e-9;
181}
182
183void
184CUpti_Activity_Userdata::setUintID (unsigned uintID) noexcept

Callers

nothing calls this directly

Calls 5

getStreamIDMethod · 0.80
getTimeElapsedMethod · 0.80
emptyMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected