| |
| |
| """This file is for benchmark data loading process. It can also be used to |
| refresh the memcached cache. The command line to run this file is: |
| |
| $ python -m cProfile -o program.prof tools/analysis/benchmark_processing.py |
| configs/task/method/[config filename] |
| |
| Note: When debugging, the `workers_per_gpu` in the config should be set to 0 |
| during benchmark. |
| |
| It use cProfile to record cpu running time and output to program.prof |
| To visualize cProfile output program.prof, use Snakeviz and run: |
| $ snakeviz program.prof |
| """ |
| import argparse |
|
|
| import mmcv |
| from mmcv import Config |
| from mmdet.datasets import build_dataloader |
|
|
| from mmocr.datasets import build_dataset |
|
|
| assert build_dataset is not None |
|
|
|
|
| def main(): |
| parser = argparse.ArgumentParser(description='Benchmark data loading') |
| parser.add_argument('config', help='Train config file path.') |
| args = parser.parse_args() |
| cfg = Config.fromfile(args.config) |
|
|
| dataset = build_dataset(cfg.data.train) |
|
|
| |
| if 'imgs_per_gpu' in cfg.data: |
| cfg.data.samples_per_gpu = cfg.data.imgs_per_gpu |
|
|
| data_loader = build_dataloader( |
| dataset, |
| cfg.data.samples_per_gpu, |
| cfg.data.workers_per_gpu, |
| 1, |
| dist=False, |
| seed=None) |
|
|
| |
| prog_bar = mmcv.ProgressBar( |
| len(dataset) - 5 * cfg.data.samples_per_gpu, start=False) |
| for i, data in enumerate(data_loader): |
| if i == 5: |
| prog_bar.start() |
| for _ in range(len(data['img'])): |
| if i < 5: |
| continue |
| prog_bar.update() |
|
|
|
|
| if __name__ == '__main__': |
| main() |
|
|