(self, iterable, print_freq, header=None, start_iter=0)
| 136 | self.meters[name] = meter |
| 137 | |
| 138 | def log_every(self, iterable, print_freq, header=None, start_iter=0): |
| 139 | i = start_iter |
| 140 | if not header: |
| 141 | header = '' |
| 142 | start_time = time.time() |
| 143 | end = time.time() |
| 144 | iter_time = SmoothedValue(fmt='{avg:.4f}') |
| 145 | data_time = SmoothedValue(fmt='{avg:.4f}') |
| 146 | log_msg = [ |
| 147 | header, |
| 148 | '[{0' + '}/{1}]', |
| 149 | '{meters}', |
| 150 | 'time: {time}', |
| 151 | 'data: {data}' |
| 152 | ] |
| 153 | if torch.cuda.is_available(): |
| 154 | log_msg.append('max mem: {memory:.0f}') |
| 155 | log_msg = self.delimiter.join(log_msg) |
| 156 | MB = 1024.0 * 1024.0 |
| 157 | for obj in iterable: |
| 158 | data_time.update(time.time() - end) |
| 159 | yield obj |
| 160 | iter_time.update(time.time() - end) |
| 161 | if i % print_freq == 0: |
| 162 | try: |
| 163 | total_len = len(iterable) |
| 164 | except: |
| 165 | total_len = "unknown" |
| 166 | if torch.cuda.is_available(): |
| 167 | print(log_msg.format( |
| 168 | i, total_len, |
| 169 | meters=str(self), |
| 170 | time=str(iter_time), data=str(data_time), |
| 171 | memory=torch.cuda.max_memory_allocated() / MB)) |
| 172 | else: |
| 173 | print(log_msg.format( |
| 174 | i, total_len, |
| 175 | meters=str(self), |
| 176 | time=str(iter_time), data=str(data_time))) |
| 177 | i += 1 |
| 178 | end = time.time() |
| 179 | total_time = time.time() - start_time |
| 180 | total_time_str = str(datetime.timedelta(seconds=int(total_time))) |
| 181 | print('{} Total time: {} ({:.4f} s / it)'.format( |
| 182 | header, total_time_str, total_time / len(iterable))) |
| 183 | |
| 184 | |
| 185 | def setup_for_distributed(is_master): |
no test coverage detected