bigdl-core-npu 2.5.0__cp310-cp310-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bigdl_core_npu-2.5.0.dist-info/METADATA +35 -0
- bigdl_core_npu-2.5.0.dist-info/RECORD +223 -0
- bigdl_core_npu-2.5.0.dist-info/WHEEL +5 -0
- bigdl_core_npu-2.5.0.dist-info/top_level.txt +1 -0
- intel_npu_acceleration_library/__init__.py +24 -0
- intel_npu_acceleration_library/_version.py +6 -0
- intel_npu_acceleration_library/backend/__init__.py +37 -0
- intel_npu_acceleration_library/backend/base.py +215 -0
- intel_npu_acceleration_library/backend/bindings.py +279 -0
- intel_npu_acceleration_library/backend/compression.py +24 -0
- intel_npu_acceleration_library/backend/convolution.py +58 -0
- intel_npu_acceleration_library/backend/factory.py +944 -0
- intel_npu_acceleration_library/backend/linear.py +60 -0
- intel_npu_acceleration_library/backend/matmul.py +59 -0
- intel_npu_acceleration_library/backend/mlp.py +58 -0
- intel_npu_acceleration_library/backend/ops.py +141 -0
- intel_npu_acceleration_library/backend/qlinear.py +71 -0
- intel_npu_acceleration_library/backend/qmatmul.py +66 -0
- intel_npu_acceleration_library/backend/runtime.py +210 -0
- intel_npu_acceleration_library/backend/sdpa.py +107 -0
- intel_npu_acceleration_library/backend/tensor.py +1050 -0
- intel_npu_acceleration_library/backend/utils.py +70 -0
- intel_npu_acceleration_library/compiler.py +194 -0
- intel_npu_acceleration_library/device.py +230 -0
- intel_npu_acceleration_library/dtypes.py +122 -0
- intel_npu_acceleration_library/external/openvino/__init__.py +71 -0
- intel_npu_acceleration_library/external/openvino/_offline_transformations/__init__.py +20 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/__init__.py +34 -0
- intel_npu_acceleration_library/external/openvino/frontend/frontend.py +44 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/__init__.py +19 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/fx_decoder.py +352 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/gptq.py +139 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/module_extension.py +39 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/patch_model.py +98 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend.py +119 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend_utils.py +85 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/compile.py +141 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/decompositions.py +116 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/execute.py +189 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/op_support.py +289 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/partition.py +118 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/ts_decoder.py +536 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/utils.py +256 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/__init__.py +16 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/graph_iterator.py +116 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/node_decoder.py +219 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/utils.py +460 -0
- intel_npu_acceleration_library/external/openvino/helpers/__init__.py +6 -0
- intel_npu_acceleration_library/external/openvino/helpers/packing.py +87 -0
- intel_npu_acceleration_library/external/openvino/preprocess/README.md +60 -0
- intel_npu_acceleration_library/external/openvino/preprocess/__init__.py +26 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/preprocess_converter.py +47 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/requirements.txt +4 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/torchvision_preprocessing.py +347 -0
- intel_npu_acceleration_library/external/openvino/properties/__init__.py +21 -0
- intel_npu_acceleration_library/external/openvino/properties/_properties.py +55 -0
- intel_npu_acceleration_library/external/openvino/properties/device/__init__.py +14 -0
- intel_npu_acceleration_library/external/openvino/properties/hint/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_auto/__init__.py +12 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_cpu/__init__.py +8 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_gpu/__init__.py +12 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_gpu/hint/__init__.py +11 -0
- intel_npu_acceleration_library/external/openvino/properties/log/__init__.py +11 -0
- intel_npu_acceleration_library/external/openvino/properties/streams/__init__.py +11 -0
- intel_npu_acceleration_library/external/openvino/runtime/__init__.py +85 -0
- intel_npu_acceleration_library/external/openvino/runtime/exceptions.py +17 -0
- intel_npu_acceleration_library/external/openvino/runtime/ie_api.py +631 -0
- intel_npu_acceleration_library/external/openvino/runtime/op/__init__.py +18 -0
- intel_npu_acceleration_library/external/openvino/runtime/op/util/__init__.py +22 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset1/__init__.py +112 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset1/ops.py +3067 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset10/__init__.py +179 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset10/ops.py +173 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset11/__init__.py +179 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset11/ops.py +107 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset12/__init__.py +180 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset12/ops.py +120 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset13/__init__.py +188 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset13/ops.py +399 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset14/__init__.py +190 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset14/ops.py +171 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset15/__init__.py +10 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset15/ops.py +85 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset2/__init__.py +118 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset2/ops.py +216 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset3/__init__.py +134 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset3/ops.py +638 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset4/__init__.py +145 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset4/ops.py +464 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset5/__init__.py +152 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset5/ops.py +372 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset6/__init__.py +154 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset6/ops.py +189 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset7/__init__.py +158 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset7/ops.py +169 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset8/__init__.py +169 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset8/ops.py +783 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset9/__init__.py +175 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset9/ops.py +341 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset_utils.py +22 -0
- intel_npu_acceleration_library/external/openvino/runtime/passes/__init__.py +19 -0
- intel_npu_acceleration_library/external/openvino/runtime/passes/graph_rewrite.py +33 -0
- intel_npu_acceleration_library/external/openvino/runtime/passes/manager.py +26 -0
- intel_npu_acceleration_library/external/openvino/runtime/properties/__init__.py +38 -0
- intel_npu_acceleration_library/external/openvino/runtime/properties/hint/__init__.py +25 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/__init__.py +7 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/broadcasting.py +44 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/__init__.py +8 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/data_dispatcher.py +429 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/wrappers.py +148 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/decorators.py +70 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/input_validation.py +133 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/node_factory.py +127 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/reduction.py +25 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/types.py +175 -0
- intel_npu_acceleration_library/external/openvino/tools/__init__.py +4 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/__init__.py +3 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/benchmark.py +186 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/main.py +695 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/parameters.py +199 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/__init__.py +3 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/constants.py +26 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/inputs_filling.py +482 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/logging.py +8 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/statistics_report.py +296 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/utils.py +836 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/__init__.py +20 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/__main__.py +10 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/cli_parser.py +633 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/convert.py +102 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/convert_data_type.py +82 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/convert_impl.py +536 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/environment_setup_utils.py +50 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/error.py +49 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/get_ov_update_message.py +16 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/help.py +45 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/logger.py +91 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/main.py +35 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/__init__.py +2 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/analysis.py +46 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/check_config.py +57 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/extractor.py +447 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/layout_utils.py +73 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/moc_emit_ir.py +32 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/offline_transformations.py +107 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/paddle_frontend_utils.py +83 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pipeline.py +246 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/preprocessing.py +220 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pytorch_frontend_utils.py +205 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/shape_utils.py +109 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/type_utils.py +82 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/ovc.py +13 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_params.py +6 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_stub.py +28 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_utils.py +118 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/utils.py +109 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/version.py +80 -0
- intel_npu_acceleration_library/external/openvino/torch/__init__.py +5 -0
- intel_npu_acceleration_library/external/openvino/utils.py +98 -0
- intel_npu_acceleration_library/functional/__init__.py +8 -0
- intel_npu_acceleration_library/functional/scaled_dot_product_attention.py +47 -0
- intel_npu_acceleration_library/lib/Release/cache.json +113732 -0
- intel_npu_acceleration_library/lib/Release/intel_npu_acceleration_library.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_auto_batch_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_auto_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_c.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_hetero_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_intel_cpu_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_intel_gpu_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_intel_npu_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_ir_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_onnx_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_paddle_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_pytorch_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_tensorflow_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_tensorflow_lite_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbb12.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbb12_debug.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbbind_2_5.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbbind_2_5_debug.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc_debug.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy_debug.dll +0 -0
- intel_npu_acceleration_library/modelling.py +150 -0
- intel_npu_acceleration_library/nn/__init__.py +20 -0
- intel_npu_acceleration_library/nn/autograd.py +68 -0
- intel_npu_acceleration_library/nn/conv.py +257 -0
- intel_npu_acceleration_library/nn/functional.py +1207 -0
- intel_npu_acceleration_library/nn/linear.py +162 -0
- intel_npu_acceleration_library/nn/llm.py +417 -0
- intel_npu_acceleration_library/nn/module.py +393 -0
- intel_npu_acceleration_library/optimizations.py +157 -0
- intel_npu_acceleration_library/quantization.py +174 -0
@@ -0,0 +1,296 @@
|
|
1
|
+
# Copyright (C) 2018-2024 Intel Corporation
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
3
|
+
|
4
|
+
import os
|
5
|
+
import abc
|
6
|
+
import json
|
7
|
+
import csv
|
8
|
+
import numpy as np
|
9
|
+
from enum import Enum
|
10
|
+
from datetime import timedelta
|
11
|
+
from typing import Dict, List, Tuple, Any
|
12
|
+
from .logging import logger
|
13
|
+
|
14
|
+
## statistics reports types
|
15
|
+
noCntReport = 'no_counters'
|
16
|
+
averageCntReport = 'average_counters'
|
17
|
+
detailedCntReport = 'detailed_counters'
|
18
|
+
|
19
|
+
## Responsible for collecting of statistics and dumping to .csv file
|
20
|
+
|
21
|
+
class StatisticsReport(metaclass = abc.ABCMeta):
|
22
|
+
class Config():
|
23
|
+
def __init__(self, report_type, report_folder):
|
24
|
+
self.report_type = report_type
|
25
|
+
self.report_folder = report_folder
|
26
|
+
|
27
|
+
class Category(Enum):
|
28
|
+
COMMAND_LINE_PARAMETERS = 0,
|
29
|
+
RUNTIME_CONFIG = 1,
|
30
|
+
EXECUTION_RESULTS = 2
|
31
|
+
|
32
|
+
def __init__(self, config) -> None:
|
33
|
+
self.config = config
|
34
|
+
self.parameters = {}
|
35
|
+
|
36
|
+
def add_parameters(self, category, parameters):
|
37
|
+
if category not in self.parameters.keys():
|
38
|
+
self.parameters[category] = parameters
|
39
|
+
else:
|
40
|
+
self.parameters[category].extend(parameters)
|
41
|
+
|
42
|
+
@abc.abstractmethod
|
43
|
+
def dump(self):
|
44
|
+
pass
|
45
|
+
|
46
|
+
@abc.abstractclassmethod
|
47
|
+
def dump_performance_counters(self):
|
48
|
+
pass
|
49
|
+
|
50
|
+
@abc.abstractclassmethod
|
51
|
+
def dump_performance_counters_sorted(self):
|
52
|
+
pass
|
53
|
+
|
54
|
+
@StatisticsReport.register
|
55
|
+
class CsvStatisticsReport(StatisticsReport):
|
56
|
+
|
57
|
+
def __init__(self, config):
|
58
|
+
StatisticsReport.__init__(self, config)
|
59
|
+
self.csv_separator = ';'
|
60
|
+
|
61
|
+
def dump(self):
|
62
|
+
def dump_parameters(f, parameters):
|
63
|
+
for k, v in parameters:
|
64
|
+
f.write(f'{k}{self.csv_separator}{v}\n')
|
65
|
+
|
66
|
+
with open(os.path.join(self.config.report_folder, 'benchmark_report.csv'), 'w') as f:
|
67
|
+
if self.Category.COMMAND_LINE_PARAMETERS in self.parameters.keys():
|
68
|
+
f.write('Command line parameters\n')
|
69
|
+
dump_parameters(f, self.parameters[self.Category.COMMAND_LINE_PARAMETERS])
|
70
|
+
f.write('\n')
|
71
|
+
|
72
|
+
if self.Category.RUNTIME_CONFIG in self.parameters.keys():
|
73
|
+
f.write('Configuration setup\n')
|
74
|
+
dump_parameters(f, self.parameters[self.Category.RUNTIME_CONFIG])
|
75
|
+
f.write('\n')
|
76
|
+
|
77
|
+
if self.Category.EXECUTION_RESULTS in self.parameters.keys():
|
78
|
+
f.write('Execution results\n')
|
79
|
+
dump_parameters(f, self.parameters[self.Category.EXECUTION_RESULTS])
|
80
|
+
f.write('\n')
|
81
|
+
|
82
|
+
logger.info(f"Statistics report is stored to {f.name}")
|
83
|
+
|
84
|
+
def dump_performance_counters(self, prof_info_list):
|
85
|
+
def dump_performance_counters_request(f, prof_info):
|
86
|
+
total, total_cpu = timedelta(), timedelta()
|
87
|
+
|
88
|
+
f.write(self.csv_separator.join(['layerName', 'execStatus', 'layerType', 'execType', 'realTime (ms)', 'cpuTime (ms)\n']))
|
89
|
+
for pi in prof_info:
|
90
|
+
f.write(self.csv_separator.join([pi.node_name, str(pi.status), pi.node_type, pi.exec_type,
|
91
|
+
f"{pi.real_time / timedelta(milliseconds=1):.3f}",
|
92
|
+
f"{pi.cpu_time / timedelta(milliseconds=1):.3f}"]))
|
93
|
+
f.write('\n')
|
94
|
+
total += pi.real_time
|
95
|
+
total_cpu += pi.cpu_time
|
96
|
+
|
97
|
+
f.write(self.csv_separator.join(['Total', '', '', '',
|
98
|
+
f"{total / timedelta(milliseconds=1):.3f}",
|
99
|
+
f"{total_cpu / timedelta(milliseconds=1):.3f}"]))
|
100
|
+
f.write('\n\n')
|
101
|
+
|
102
|
+
if self.config.report_type == '' or self.config.report_type == noCntReport:
|
103
|
+
logger.info("Statistics collecting for performance counters was not requested. No reports are dumped.")
|
104
|
+
return
|
105
|
+
|
106
|
+
if not prof_info_list:
|
107
|
+
logger.info('Performance counters are empty. No reports are dumped.')
|
108
|
+
return
|
109
|
+
|
110
|
+
filename = os.path.join(self.config.report_folder, f'benchmark_{self.config.report_type}_report.csv')
|
111
|
+
with open(filename, 'w') as f:
|
112
|
+
if self.config.report_type == detailedCntReport:
|
113
|
+
for prof_info in prof_info_list:
|
114
|
+
dump_performance_counters_request(f, prof_info)
|
115
|
+
elif self.config.report_type == averageCntReport:
|
116
|
+
def get_average_performance_counters(prof_info_list):
|
117
|
+
performance_counters_avg = []
|
118
|
+
## iterate over each processed infer request and handle its PM data
|
119
|
+
for prof_info in prof_info_list:
|
120
|
+
for pi in prof_info:
|
121
|
+
item = next((x for x in performance_counters_avg if x.node_name == pi.node_name), None)
|
122
|
+
if item:
|
123
|
+
item.real_time += pi.real_time
|
124
|
+
item.cpu_time += pi.cpu_time
|
125
|
+
else:
|
126
|
+
performance_counters_avg.append(pi)
|
127
|
+
|
128
|
+
for pi in performance_counters_avg:
|
129
|
+
pi.real_time /= len(prof_info_list)
|
130
|
+
pi.cpu_time /= len(prof_info_list)
|
131
|
+
return performance_counters_avg
|
132
|
+
dump_performance_counters_request(f, get_average_performance_counters(prof_info_list))
|
133
|
+
else:
|
134
|
+
raise Exception('PM data can only be collected for average or detailed report types')
|
135
|
+
|
136
|
+
logger.info(f'Performance counters report is stored to {filename}')
|
137
|
+
|
138
|
+
def dump_performance_counters_sorted(self, prof_sorted_info):
|
139
|
+
"""Save sorted performance counters into csv file.
|
140
|
+
"""
|
141
|
+
filename = os.path.join(self.config.report_folder, f'benchmark_sorted_report.csv')
|
142
|
+
total = 0
|
143
|
+
total_cpu = 0
|
144
|
+
with open(filename, 'w') as f:
|
145
|
+
writer = csv.writer(f)
|
146
|
+
writer.writerow(['layerName', 'execStatus', 'layerType', 'execType', 'realTime (ms)', 'cpuTime (ms)' , 'proportion (%)\n'])
|
147
|
+
for tmp_prof in prof_sorted_info:
|
148
|
+
writer.writerow([tmp_prof[0], str(tmp_prof[1]),
|
149
|
+
tmp_prof[2], tmp_prof[6],
|
150
|
+
f"{tmp_prof[3] / 1000:.3f}", # Divide by 1000
|
151
|
+
f"{tmp_prof[4] / 1000:.3f}",
|
152
|
+
str("%.2f"%(tmp_prof[5]*100))+"%"])
|
153
|
+
total += tmp_prof[3]
|
154
|
+
total_cpu += tmp_prof[4]
|
155
|
+
f.write('\n')
|
156
|
+
writer.writerow(["Total time: %.2f milliseconds"%(total / 1000)])
|
157
|
+
writer.writerow(["Total CPU time: %.2f milliseconds"%(total_cpu / 1000)])
|
158
|
+
f.write('\n\n')
|
159
|
+
logger.info(f'Sorted performance counters report is stored to {filename}')
|
160
|
+
|
161
|
+
@StatisticsReport.register
|
162
|
+
class JsonStatisticsReport(StatisticsReport):
|
163
|
+
def __init__(self, config) -> None:
|
164
|
+
StatisticsReport.__init__(self, config)
|
165
|
+
|
166
|
+
def dump(self):
|
167
|
+
def list_to_dict(parameters: List[Tuple[str, str]]) -> Dict[str, str]:
|
168
|
+
return {key: value for key, value in parameters}
|
169
|
+
|
170
|
+
filename = os.path.join(self.config.report_folder, 'benchmark_report.json')
|
171
|
+
with open(filename, 'w') as file:
|
172
|
+
json_statistics = {}
|
173
|
+
if self.Category.COMMAND_LINE_PARAMETERS in self.parameters.keys():
|
174
|
+
json_statistics["cmd_options"] = \
|
175
|
+
list_to_dict(self.parameters[self.Category.COMMAND_LINE_PARAMETERS])
|
176
|
+
|
177
|
+
if self.Category.RUNTIME_CONFIG in self.parameters.keys():
|
178
|
+
json_statistics["configuration_setup"] = \
|
179
|
+
list_to_dict(self.parameters[self.Category.RUNTIME_CONFIG])
|
180
|
+
|
181
|
+
if self.Category.EXECUTION_RESULTS in self.parameters.keys():
|
182
|
+
json_statistics["execution_results"] = \
|
183
|
+
list_to_dict(self.parameters[self.Category.EXECUTION_RESULTS])
|
184
|
+
|
185
|
+
json.dump(json_statistics, file)
|
186
|
+
logger.info(f"Statistics report is stored to {file.name}")
|
187
|
+
|
188
|
+
def dump_performance_counters(self, prof_info_list: List[List[Any]]): #ProfilingInfo
|
189
|
+
def profiling_info_to_dict_list(prof_info_list):
|
190
|
+
|
191
|
+
profiling_info_json_list = [0]*len(prof_info_list)
|
192
|
+
for i, profiling_info in enumerate(prof_info_list):
|
193
|
+
|
194
|
+
total, total_cpu = timedelta(), timedelta()
|
195
|
+
layers_info = [0] * len(profiling_info)
|
196
|
+
for l, layer in enumerate(profiling_info):
|
197
|
+
layers_info[l] = {
|
198
|
+
'name': layer.node_name,
|
199
|
+
'node_type': layer.node_type,
|
200
|
+
'status': str(layer.status),
|
201
|
+
'real_time': f"{layer.real_time / timedelta(milliseconds=1):.3f}",
|
202
|
+
'cpu_time': f"{layer.cpu_time / timedelta(milliseconds=1):.3f}",
|
203
|
+
'exec_type': layer.exec_type
|
204
|
+
}
|
205
|
+
total += layer.real_time
|
206
|
+
total_cpu += layer.cpu_time
|
207
|
+
|
208
|
+
profiling_info_json_list[i] = {
|
209
|
+
'nodes': layers_info,
|
210
|
+
'total_real_time': f"{total / timedelta(milliseconds=1):.3f}",
|
211
|
+
'total_cpu_time': f"{total_cpu / timedelta(milliseconds=1):.3f}"
|
212
|
+
}
|
213
|
+
|
214
|
+
return profiling_info_json_list
|
215
|
+
|
216
|
+
def get_average_performance_counters(prof_info_list):
|
217
|
+
performance_counters_avg = []
|
218
|
+
for prof_info in prof_info_list:
|
219
|
+
for pi in prof_info:
|
220
|
+
item = next((x for x in performance_counters_avg if x[0].node_name == pi.node_name), None)
|
221
|
+
if item:
|
222
|
+
item[0].real_time += pi.real_time
|
223
|
+
item[0].cpu_time += pi.cpu_time
|
224
|
+
else:
|
225
|
+
performance_counters_avg.append([pi])
|
226
|
+
for pi in performance_counters_avg:
|
227
|
+
pi[0].real_time /= len(prof_info_list)
|
228
|
+
pi[0].cpu_time /= len(prof_info_list)
|
229
|
+
|
230
|
+
return performance_counters_avg
|
231
|
+
|
232
|
+
if self.config.report_type == '' or self.config.report_type == noCntReport:
|
233
|
+
logger.info("Statistics collecting for performance counters was not requested. No reports are dumped.")
|
234
|
+
return
|
235
|
+
|
236
|
+
if not prof_info_list:
|
237
|
+
logger.info('Performance counters are empty. No reports are dumped.')
|
238
|
+
return
|
239
|
+
|
240
|
+
filename = os.path.join(self.config.report_folder, f'benchmark_{self.config.report_type}_report.json')
|
241
|
+
with open(filename, 'w') as file:
|
242
|
+
if self.config.report_type == detailedCntReport:
|
243
|
+
profiling_info_json = profiling_info_to_dict_list(prof_info_list)
|
244
|
+
json_statistics = {
|
245
|
+
'report_type': 'detailed',
|
246
|
+
'detailed_performance': profiling_info_json
|
247
|
+
}
|
248
|
+
elif self.config.report_type == averageCntReport:
|
249
|
+
prof_info_list_avg = get_average_performance_counters(prof_info_list)
|
250
|
+
profiling_info_json = profiling_info_to_dict_list(prof_info_list_avg)
|
251
|
+
json_statistics = {
|
252
|
+
'report_type': 'average',
|
253
|
+
'avg_performance': profiling_info_json[0]
|
254
|
+
}
|
255
|
+
else:
|
256
|
+
raise Exception('PM data can only be collected for average or detailed report types')
|
257
|
+
|
258
|
+
json.dump(json_statistics, file, indent=4)
|
259
|
+
logger.info(f'Performance counters report is stored to {filename}')
|
260
|
+
|
261
|
+
def dump_performance_counters_sorted(self, prof_sorted_info) -> None:
|
262
|
+
def profiling_info_to_dict_list(prof_info_matrix: np.ndarray) -> List[Dict[str, str]]:
|
263
|
+
total, total_cpu = 0, 0
|
264
|
+
|
265
|
+
nodes_info_list = [0]*len(prof_info_matrix)
|
266
|
+
for i, info in enumerate(prof_info_matrix):
|
267
|
+
nodes_info_list[i] = {
|
268
|
+
'name': info[0],
|
269
|
+
'node_type': info[2],
|
270
|
+
'status': str(info[1]),
|
271
|
+
'real_time': f"{info[3] / 1000:.3f}",
|
272
|
+
'cpu_time': f"{info[4] / 1000:.3f}",
|
273
|
+
'exec_type': info[6],
|
274
|
+
'%': str("%.2f"%(info[5] * 100))+"%"
|
275
|
+
}
|
276
|
+
|
277
|
+
total += info[3]
|
278
|
+
total_cpu += info[4]
|
279
|
+
|
280
|
+
prof_info_json = {
|
281
|
+
'nodes': nodes_info_list,
|
282
|
+
'total_real_time': f"{total / 1000:.3f}",
|
283
|
+
'total_cpu_time': f"{total_cpu / 1000:.3f}"
|
284
|
+
}
|
285
|
+
|
286
|
+
return prof_info_json
|
287
|
+
|
288
|
+
filename = os.path.join(self.config.report_folder, f'benchmark_sorted_report.json')
|
289
|
+
with open(filename, 'w') as file:
|
290
|
+
profiling_info_json = profiling_info_to_dict_list(prof_sorted_info)
|
291
|
+
json_statistics = {
|
292
|
+
'report_type': 'sorted',
|
293
|
+
'avg_performance': profiling_info_json
|
294
|
+
}
|
295
|
+
json.dump(json_statistics, file, indent=4)
|
296
|
+
logger.info(f'Sorted performance counters report is stored to {filename}')
|