Browse Source

!295 profiler: write intermediate timeline file directly instead of using tabulate

Merge pull request !295 from zhangyunshu/zys_timeline_remove_tabulate
tags/v0.5.0-beta
mindspore-ci-bot Gitee 5 years ago
parent
commit
0da8d2a8da
2 changed files with 15 additions and 10 deletions
  1. +2
    -3
      mindinsight/profiler/analyser/timeline_analyser.py
  2. +13
    -7
      mindinsight/profiler/parser/optime_parser.py

+ 2
- 3
mindinsight/profiler/analyser/timeline_analyser.py View File

@@ -214,9 +214,8 @@ class TimelineAnalyser(BaseAnalyser):
try: try:
with open(file_path, 'r') as f_obj: with open(file_path, 'r') as f_obj:
for line in f_obj: for line in f_obj:
if not line.startswith('=') and not line.startswith('op_name') and \
not line.startswith('-'):
line_list = line.split()
if not line.startswith('op_name'):
line_list = line.strip('\n').split(',')
self._parse_timeline_data(line_list) self._parse_timeline_data(line_list)
self._update_num_of_streams(line_list, stream_count_dict) self._update_num_of_streams(line_list, stream_count_dict)
except (IOError, OSError) as err: except (IOError, OSError) as err:


+ 13
- 7
mindinsight/profiler/parser/optime_parser.py View File

@@ -17,11 +17,14 @@ import os


from tabulate import tabulate from tabulate import tabulate
from mindinsight.profiler.common._utils import fwrite_format from mindinsight.profiler.common._utils import fwrite_format
from mindinsight.profiler.common.exceptions.exceptions import ProfilerFileNotFoundException
from mindinsight.profiler.common.exceptions.exceptions import ProfilerFileNotFoundException, \
ProfilerIOException
from mindinsight.profiler.common.log import logger from mindinsight.profiler.common.log import logger
from mindinsight.profiler.common.validator.validate_path import validate_and_normalize_path from mindinsight.profiler.common.validator.validate_path import validate_and_normalize_path
from mindinsight.profiler.parser.container import HWTSContainer from mindinsight.profiler.parser.container import HWTSContainer


TIMELINE_FILE_COLUMN_TITLE = 'op_name, stream_id, start_time(ms), duration(ms)'



class OPComputeTimeParser: class OPComputeTimeParser:
""" """
@@ -35,8 +38,6 @@ class OPComputeTimeParser:


_dst_file_title = 'title:op compute time' _dst_file_title = 'title:op compute time'
_dst_file_column_title = ['op_name', 'compute_time(ms)', 'stream_id'] _dst_file_column_title = ['op_name', 'compute_time(ms)', 'stream_id']
_timeline_file_title = 'title:timeline info'
_timeline_file_column_title = ['op_name', 'stream_id', 'start_time', 'duration']


def __init__(self, hwts_output_file, output_filename, op_task_info, def __init__(self, hwts_output_file, output_filename, op_task_info,
output_path, device_id): output_path, device_id):
@@ -167,10 +168,15 @@ class OPComputeTimeParser:
file_path = validate_and_normalize_path(file_path, raise_key='Invalid file path of timeline data.') file_path = validate_and_normalize_path(file_path, raise_key='Invalid file path of timeline data.')


# write to file # write to file
fwrite_format(file_path, data_source=self._timeline_file_title, is_start=True)
fwrite_format(file_path, data_source=tabulate(
timeline_data, self._timeline_file_column_title, tablefmt='simple'
))
try:
with open(file_path, 'w') as f_obj:
f_obj.write(TIMELINE_FILE_COLUMN_TITLE + '\n')
for timeline in timeline_data:
timeline = [str(item) for item in timeline]
f_obj.write(','.join(timeline) + '\n')
except (IOError, OSError) as err:
logger.error('Error occurred when writing intermediate timeline file: %s', err)
raise ProfilerIOException


def _calculate_op_execution_time(self): def _calculate_op_execution_time(self):
""" """


Loading…
Cancel
Save