diff --git a/mindspore/profiler/parser/integrator.py b/mindspore/profiler/parser/integrator.py index 02f0b71901..584ba3181a 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 4ad267f15e..8e7bcc299a 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.')