From 28d574cdd9b22c6c6dc348e97be239a577d3c87f Mon Sep 17 00:00:00 2001 From: gzhcv Date: Wed, 9 Sep 2020 21:56:28 +0800 Subject: [PATCH] gpu_timeline(python code) update mindspore/profiler/parser/integrator.py. update mindspore/profiler/profiling.py. --- mindspore/profiler/parser/integrator.py | 6 +++--- mindspore/profiler/profiling.py | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/mindspore/profiler/parser/integrator.py b/mindspore/profiler/parser/integrator.py index 02f0b719016..584ba3181a6 100644 --- a/mindspore/profiler/parser/integrator.py +++ b/mindspore/profiler/parser/integrator.py @@ -490,8 +490,6 @@ class BaseTimelineGenerator: __col_names__ = ['op_name', 'stream_id', 'start_time', 'duration'] _output_timeline_data_file_path = 'output_timeline_data_{}.txt' _min_cycle_counter_file_path = 'min_cycle_counter_{}.txt' - _display_filename = 'timeline_display_{}.json' - _timeline_summary_filename = 'timeline_summary_{}.json' _timeline_meta = [] _timeline_summary = { 'total_time': 0, @@ -680,7 +678,7 @@ class GpuTimelineGenerator(BaseTimelineGenerator): timeline_dict['args'] = args_dict else: # Update total time of operator execution. - self._timeline_summary['total_time'] += dur + self._timeline_summary['total_time'] += dur / factor self._timeline_summary['op_exe_times'] += 1 self._timeline_meta.append(timeline_dict) @@ -770,6 +768,8 @@ class GpuTimelineGenerator(BaseTimelineGenerator): class AscendTimelineGenerator(BaseTimelineGenerator): """Generate ascend Timeline data from file.""" + _display_filename = 'ascend_timeline_display_{}.json' + _timeline_summary_filename = 'ascend_timeline_summary_{}.json' def _load_timeline_data(self): """Load timeline data from file.""" diff --git a/mindspore/profiler/profiling.py b/mindspore/profiler/profiling.py index 4ad267f15e5..8e7bcc299a0 100644 --- a/mindspore/profiler/profiling.py +++ b/mindspore/profiler/profiling.py @@ -286,10 +286,18 @@ class Profiler: """Used for gpu, generate timeline info, write to json format file.""" try: size_limit = 100 * 1024 * 1024 # 100MB - timeline_generator = GpuTimelineGenerator(self._output_path, self._dev_id) - timeline_generator.init_timeline() - timeline_generator.write_timeline(size_limit) - timeline_generator.write_timeline_summary() + #stastic the number of dev_id + file_list = os.listdir(self._output_path) + dev_id_list = [] + for file_name in file_list: + if file_name.startswith('gpu_op_detail'): + _dev_id = file_name.split('.')[0].split('_')[-1] + dev_id_list.append(_dev_id) + for dev_id in dev_id_list: + timeline_generator = GpuTimelineGenerator(self._output_path, dev_id) + timeline_generator.init_timeline() + timeline_generator.write_timeline(size_limit) + timeline_generator.write_timeline_summary() except (ProfilerIOException, ProfilerFileNotFoundException, RuntimeError) as err: logger.warning('Fail to write timeline data: %s', err) raise RuntimeError('Fail to write timeline data.')