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:
with open(file_path, 'r') as 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._update_num_of_streams(line_list, stream_count_dict)
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 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.validator.validate_path import validate_and_normalize_path
from mindinsight.profiler.parser.container import HWTSContainer

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


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

_dst_file_title = 'title:op compute time'
_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,
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.')

# 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):
"""


Loading…
Cancel
Save