| 139 | } |
| 140 | |
| 141 | double |
| 142 | computeElapsedTimeUserdata (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 | |
| 183 | void |
| 184 | CUpti_Activity_Userdata::setUintID (unsigned uintID) noexcept |
nothing calls this directly
no test coverage detected