| 1170 | } |
| 1171 | |
| 1172 | void HighsSimplexAnalysis::reportFactorTimer() { |
| 1173 | assert(analyse_factor_time); |
| 1174 | FactorTimer factor_timer; |
| 1175 | HighsInt max_threads = highs::parallel::num_threads(); |
| 1176 | for (HighsInt i = 0; i < max_threads; i++) { |
| 1177 | // for (HighsTimerClock clock : thread_factor_clocks) { |
| 1178 | printf("reportFactorTimer: HFactor clocks for thread %" HIGHSINT_FORMAT |
| 1179 | " / %" HIGHSINT_FORMAT "\n", |
| 1180 | i, max_threads - 1); |
| 1181 | factor_timer.reportFactorClock(thread_factor_clocks[i]); |
| 1182 | } |
| 1183 | if (max_threads > 1) { |
| 1184 | HighsTimer* timer_pointer = thread_factor_clocks[0].timer_pointer_; |
| 1185 | HighsTimerClock all_factor_clocks; |
| 1186 | all_factor_clocks.timer_pointer_ = timer_pointer; |
| 1187 | vector<HighsInt>& clock = all_factor_clocks.clock_; |
| 1188 | factor_timer.initialiseFactorClocks(all_factor_clocks); |
| 1189 | for (HighsInt i = 0; i < max_threads; i++) { |
| 1190 | vector<HighsInt>& thread_clock = thread_factor_clocks[i].clock_; |
| 1191 | for (HighsInt clock_id = 0; clock_id < FactorNumClock; clock_id++) { |
| 1192 | HighsInt all_factor_iClock = clock[clock_id]; |
| 1193 | HighsInt thread_factor_iClock = thread_clock[clock_id]; |
| 1194 | timer_pointer->clock_num_call[all_factor_iClock] += |
| 1195 | timer_pointer->clock_num_call[thread_factor_iClock]; |
| 1196 | timer_pointer->clock_time[all_factor_iClock] += |
| 1197 | timer_pointer->clock_time[thread_factor_iClock]; |
| 1198 | } |
| 1199 | } |
| 1200 | printf("reportFactorTimer: HFactor clocks for all %" HIGHSINT_FORMAT |
| 1201 | " threads\n", |
| 1202 | max_threads); |
| 1203 | factor_timer.reportFactorClock(all_factor_clocks); |
| 1204 | } |
| 1205 | } |
| 1206 | |
| 1207 | void HighsSimplexAnalysis::updateInvertFormData(const HFactor& factor) { |
| 1208 | assert(analyse_factor_data); |
no test coverage detected