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.
Files changed (223) hide show
  1. bigdl_core_npu-2.5.0.dist-info/METADATA +35 -0
  2. bigdl_core_npu-2.5.0.dist-info/RECORD +223 -0
  3. bigdl_core_npu-2.5.0.dist-info/WHEEL +5 -0
  4. bigdl_core_npu-2.5.0.dist-info/top_level.txt +1 -0
  5. intel_npu_acceleration_library/__init__.py +24 -0
  6. intel_npu_acceleration_library/_version.py +6 -0
  7. intel_npu_acceleration_library/backend/__init__.py +37 -0
  8. intel_npu_acceleration_library/backend/base.py +215 -0
  9. intel_npu_acceleration_library/backend/bindings.py +279 -0
  10. intel_npu_acceleration_library/backend/compression.py +24 -0
  11. intel_npu_acceleration_library/backend/convolution.py +58 -0
  12. intel_npu_acceleration_library/backend/factory.py +944 -0
  13. intel_npu_acceleration_library/backend/linear.py +60 -0
  14. intel_npu_acceleration_library/backend/matmul.py +59 -0
  15. intel_npu_acceleration_library/backend/mlp.py +58 -0
  16. intel_npu_acceleration_library/backend/ops.py +141 -0
  17. intel_npu_acceleration_library/backend/qlinear.py +71 -0
  18. intel_npu_acceleration_library/backend/qmatmul.py +66 -0
  19. intel_npu_acceleration_library/backend/runtime.py +210 -0
  20. intel_npu_acceleration_library/backend/sdpa.py +107 -0
  21. intel_npu_acceleration_library/backend/tensor.py +1050 -0
  22. intel_npu_acceleration_library/backend/utils.py +70 -0
  23. intel_npu_acceleration_library/compiler.py +194 -0
  24. intel_npu_acceleration_library/device.py +230 -0
  25. intel_npu_acceleration_library/dtypes.py +122 -0
  26. intel_npu_acceleration_library/external/openvino/__init__.py +71 -0
  27. intel_npu_acceleration_library/external/openvino/_offline_transformations/__init__.py +20 -0
  28. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp310-win_amd64.pyd +0 -0
  29. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp311-win_amd64.pyd +0 -0
  30. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp312-win_amd64.pyd +0 -0
  31. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp38-win_amd64.pyd +0 -0
  32. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp39-win_amd64.pyd +0 -0
  33. intel_npu_acceleration_library/external/openvino/frontend/__init__.py +34 -0
  34. intel_npu_acceleration_library/external/openvino/frontend/frontend.py +44 -0
  35. intel_npu_acceleration_library/external/openvino/frontend/onnx/__init__.py +15 -0
  36. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp310-win_amd64.pyd +0 -0
  37. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp311-win_amd64.pyd +0 -0
  38. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp312-win_amd64.pyd +0 -0
  39. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp38-win_amd64.pyd +0 -0
  40. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp39-win_amd64.pyd +0 -0
  41. intel_npu_acceleration_library/external/openvino/frontend/paddle/__init__.py +15 -0
  42. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp310-win_amd64.pyd +0 -0
  43. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp311-win_amd64.pyd +0 -0
  44. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp312-win_amd64.pyd +0 -0
  45. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp38-win_amd64.pyd +0 -0
  46. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp39-win_amd64.pyd +0 -0
  47. intel_npu_acceleration_library/external/openvino/frontend/pytorch/__init__.py +19 -0
  48. intel_npu_acceleration_library/external/openvino/frontend/pytorch/fx_decoder.py +352 -0
  49. intel_npu_acceleration_library/external/openvino/frontend/pytorch/gptq.py +139 -0
  50. intel_npu_acceleration_library/external/openvino/frontend/pytorch/module_extension.py +39 -0
  51. intel_npu_acceleration_library/external/openvino/frontend/pytorch/patch_model.py +98 -0
  52. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp310-win_amd64.pyd +0 -0
  53. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp311-win_amd64.pyd +0 -0
  54. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp312-win_amd64.pyd +0 -0
  55. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp38-win_amd64.pyd +0 -0
  56. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp39-win_amd64.pyd +0 -0
  57. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend.py +119 -0
  58. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend_utils.py +85 -0
  59. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/compile.py +141 -0
  60. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/decompositions.py +116 -0
  61. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/execute.py +189 -0
  62. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/op_support.py +289 -0
  63. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/partition.py +118 -0
  64. intel_npu_acceleration_library/external/openvino/frontend/pytorch/ts_decoder.py +536 -0
  65. intel_npu_acceleration_library/external/openvino/frontend/pytorch/utils.py +256 -0
  66. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/__init__.py +16 -0
  67. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/graph_iterator.py +116 -0
  68. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/node_decoder.py +219 -0
  69. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp310-win_amd64.pyd +0 -0
  70. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp311-win_amd64.pyd +0 -0
  71. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp312-win_amd64.pyd +0 -0
  72. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp38-win_amd64.pyd +0 -0
  73. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp39-win_amd64.pyd +0 -0
  74. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/utils.py +460 -0
  75. intel_npu_acceleration_library/external/openvino/helpers/__init__.py +6 -0
  76. intel_npu_acceleration_library/external/openvino/helpers/packing.py +87 -0
  77. intel_npu_acceleration_library/external/openvino/preprocess/README.md +60 -0
  78. intel_npu_acceleration_library/external/openvino/preprocess/__init__.py +26 -0
  79. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/__init__.py +15 -0
  80. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/preprocess_converter.py +47 -0
  81. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/requirements.txt +4 -0
  82. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/torchvision_preprocessing.py +347 -0
  83. intel_npu_acceleration_library/external/openvino/properties/__init__.py +21 -0
  84. intel_npu_acceleration_library/external/openvino/properties/_properties.py +55 -0
  85. intel_npu_acceleration_library/external/openvino/properties/device/__init__.py +14 -0
  86. intel_npu_acceleration_library/external/openvino/properties/hint/__init__.py +15 -0
  87. intel_npu_acceleration_library/external/openvino/properties/intel_auto/__init__.py +12 -0
  88. intel_npu_acceleration_library/external/openvino/properties/intel_cpu/__init__.py +8 -0
  89. intel_npu_acceleration_library/external/openvino/properties/intel_gpu/__init__.py +12 -0
  90. intel_npu_acceleration_library/external/openvino/properties/intel_gpu/hint/__init__.py +11 -0
  91. intel_npu_acceleration_library/external/openvino/properties/log/__init__.py +11 -0
  92. intel_npu_acceleration_library/external/openvino/properties/streams/__init__.py +11 -0
  93. intel_npu_acceleration_library/external/openvino/runtime/__init__.py +85 -0
  94. intel_npu_acceleration_library/external/openvino/runtime/exceptions.py +17 -0
  95. intel_npu_acceleration_library/external/openvino/runtime/ie_api.py +631 -0
  96. intel_npu_acceleration_library/external/openvino/runtime/op/__init__.py +18 -0
  97. intel_npu_acceleration_library/external/openvino/runtime/op/util/__init__.py +22 -0
  98. intel_npu_acceleration_library/external/openvino/runtime/opset1/__init__.py +112 -0
  99. intel_npu_acceleration_library/external/openvino/runtime/opset1/ops.py +3067 -0
  100. intel_npu_acceleration_library/external/openvino/runtime/opset10/__init__.py +179 -0
  101. intel_npu_acceleration_library/external/openvino/runtime/opset10/ops.py +173 -0
  102. intel_npu_acceleration_library/external/openvino/runtime/opset11/__init__.py +179 -0
  103. intel_npu_acceleration_library/external/openvino/runtime/opset11/ops.py +107 -0
  104. intel_npu_acceleration_library/external/openvino/runtime/opset12/__init__.py +180 -0
  105. intel_npu_acceleration_library/external/openvino/runtime/opset12/ops.py +120 -0
  106. intel_npu_acceleration_library/external/openvino/runtime/opset13/__init__.py +188 -0
  107. intel_npu_acceleration_library/external/openvino/runtime/opset13/ops.py +399 -0
  108. intel_npu_acceleration_library/external/openvino/runtime/opset14/__init__.py +190 -0
  109. intel_npu_acceleration_library/external/openvino/runtime/opset14/ops.py +171 -0
  110. intel_npu_acceleration_library/external/openvino/runtime/opset15/__init__.py +10 -0
  111. intel_npu_acceleration_library/external/openvino/runtime/opset15/ops.py +85 -0
  112. intel_npu_acceleration_library/external/openvino/runtime/opset2/__init__.py +118 -0
  113. intel_npu_acceleration_library/external/openvino/runtime/opset2/ops.py +216 -0
  114. intel_npu_acceleration_library/external/openvino/runtime/opset3/__init__.py +134 -0
  115. intel_npu_acceleration_library/external/openvino/runtime/opset3/ops.py +638 -0
  116. intel_npu_acceleration_library/external/openvino/runtime/opset4/__init__.py +145 -0
  117. intel_npu_acceleration_library/external/openvino/runtime/opset4/ops.py +464 -0
  118. intel_npu_acceleration_library/external/openvino/runtime/opset5/__init__.py +152 -0
  119. intel_npu_acceleration_library/external/openvino/runtime/opset5/ops.py +372 -0
  120. intel_npu_acceleration_library/external/openvino/runtime/opset6/__init__.py +154 -0
  121. intel_npu_acceleration_library/external/openvino/runtime/opset6/ops.py +189 -0
  122. intel_npu_acceleration_library/external/openvino/runtime/opset7/__init__.py +158 -0
  123. intel_npu_acceleration_library/external/openvino/runtime/opset7/ops.py +169 -0
  124. intel_npu_acceleration_library/external/openvino/runtime/opset8/__init__.py +169 -0
  125. intel_npu_acceleration_library/external/openvino/runtime/opset8/ops.py +783 -0
  126. intel_npu_acceleration_library/external/openvino/runtime/opset9/__init__.py +175 -0
  127. intel_npu_acceleration_library/external/openvino/runtime/opset9/ops.py +341 -0
  128. intel_npu_acceleration_library/external/openvino/runtime/opset_utils.py +22 -0
  129. intel_npu_acceleration_library/external/openvino/runtime/passes/__init__.py +19 -0
  130. intel_npu_acceleration_library/external/openvino/runtime/passes/graph_rewrite.py +33 -0
  131. intel_npu_acceleration_library/external/openvino/runtime/passes/manager.py +26 -0
  132. intel_npu_acceleration_library/external/openvino/runtime/properties/__init__.py +38 -0
  133. intel_npu_acceleration_library/external/openvino/runtime/properties/hint/__init__.py +25 -0
  134. intel_npu_acceleration_library/external/openvino/runtime/utils/__init__.py +7 -0
  135. intel_npu_acceleration_library/external/openvino/runtime/utils/broadcasting.py +44 -0
  136. intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/__init__.py +8 -0
  137. intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/data_dispatcher.py +429 -0
  138. intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/wrappers.py +148 -0
  139. intel_npu_acceleration_library/external/openvino/runtime/utils/decorators.py +70 -0
  140. intel_npu_acceleration_library/external/openvino/runtime/utils/input_validation.py +133 -0
  141. intel_npu_acceleration_library/external/openvino/runtime/utils/node_factory.py +127 -0
  142. intel_npu_acceleration_library/external/openvino/runtime/utils/reduction.py +25 -0
  143. intel_npu_acceleration_library/external/openvino/runtime/utils/types.py +175 -0
  144. intel_npu_acceleration_library/external/openvino/tools/__init__.py +4 -0
  145. intel_npu_acceleration_library/external/openvino/tools/benchmark/__init__.py +3 -0
  146. intel_npu_acceleration_library/external/openvino/tools/benchmark/benchmark.py +186 -0
  147. intel_npu_acceleration_library/external/openvino/tools/benchmark/main.py +695 -0
  148. intel_npu_acceleration_library/external/openvino/tools/benchmark/parameters.py +199 -0
  149. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/__init__.py +3 -0
  150. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/constants.py +26 -0
  151. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/inputs_filling.py +482 -0
  152. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/logging.py +8 -0
  153. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/statistics_report.py +296 -0
  154. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/utils.py +836 -0
  155. intel_npu_acceleration_library/external/openvino/tools/ovc/__init__.py +20 -0
  156. intel_npu_acceleration_library/external/openvino/tools/ovc/__main__.py +10 -0
  157. intel_npu_acceleration_library/external/openvino/tools/ovc/cli_parser.py +633 -0
  158. intel_npu_acceleration_library/external/openvino/tools/ovc/convert.py +102 -0
  159. intel_npu_acceleration_library/external/openvino/tools/ovc/convert_data_type.py +82 -0
  160. intel_npu_acceleration_library/external/openvino/tools/ovc/convert_impl.py +536 -0
  161. intel_npu_acceleration_library/external/openvino/tools/ovc/environment_setup_utils.py +50 -0
  162. intel_npu_acceleration_library/external/openvino/tools/ovc/error.py +49 -0
  163. intel_npu_acceleration_library/external/openvino/tools/ovc/get_ov_update_message.py +16 -0
  164. intel_npu_acceleration_library/external/openvino/tools/ovc/help.py +45 -0
  165. intel_npu_acceleration_library/external/openvino/tools/ovc/logger.py +91 -0
  166. intel_npu_acceleration_library/external/openvino/tools/ovc/main.py +35 -0
  167. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/__init__.py +2 -0
  168. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/analysis.py +46 -0
  169. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/check_config.py +57 -0
  170. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/extractor.py +447 -0
  171. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/layout_utils.py +73 -0
  172. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/moc_emit_ir.py +32 -0
  173. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/offline_transformations.py +107 -0
  174. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/paddle_frontend_utils.py +83 -0
  175. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pipeline.py +246 -0
  176. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/preprocessing.py +220 -0
  177. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pytorch_frontend_utils.py +205 -0
  178. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/shape_utils.py +109 -0
  179. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/type_utils.py +82 -0
  180. intel_npu_acceleration_library/external/openvino/tools/ovc/ovc.py +13 -0
  181. intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_params.py +6 -0
  182. intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_stub.py +28 -0
  183. intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_utils.py +118 -0
  184. intel_npu_acceleration_library/external/openvino/tools/ovc/utils.py +109 -0
  185. intel_npu_acceleration_library/external/openvino/tools/ovc/version.py +80 -0
  186. intel_npu_acceleration_library/external/openvino/torch/__init__.py +5 -0
  187. intel_npu_acceleration_library/external/openvino/utils.py +98 -0
  188. intel_npu_acceleration_library/functional/__init__.py +8 -0
  189. intel_npu_acceleration_library/functional/scaled_dot_product_attention.py +47 -0
  190. intel_npu_acceleration_library/lib/Release/cache.json +113732 -0
  191. intel_npu_acceleration_library/lib/Release/intel_npu_acceleration_library.dll +0 -0
  192. intel_npu_acceleration_library/lib/Release/openvino.dll +0 -0
  193. intel_npu_acceleration_library/lib/Release/openvino_auto_batch_plugin.dll +0 -0
  194. intel_npu_acceleration_library/lib/Release/openvino_auto_plugin.dll +0 -0
  195. intel_npu_acceleration_library/lib/Release/openvino_c.dll +0 -0
  196. intel_npu_acceleration_library/lib/Release/openvino_hetero_plugin.dll +0 -0
  197. intel_npu_acceleration_library/lib/Release/openvino_intel_cpu_plugin.dll +0 -0
  198. intel_npu_acceleration_library/lib/Release/openvino_intel_gpu_plugin.dll +0 -0
  199. intel_npu_acceleration_library/lib/Release/openvino_intel_npu_plugin.dll +0 -0
  200. intel_npu_acceleration_library/lib/Release/openvino_ir_frontend.dll +0 -0
  201. intel_npu_acceleration_library/lib/Release/openvino_onnx_frontend.dll +0 -0
  202. intel_npu_acceleration_library/lib/Release/openvino_paddle_frontend.dll +0 -0
  203. intel_npu_acceleration_library/lib/Release/openvino_pytorch_frontend.dll +0 -0
  204. intel_npu_acceleration_library/lib/Release/openvino_tensorflow_frontend.dll +0 -0
  205. intel_npu_acceleration_library/lib/Release/openvino_tensorflow_lite_frontend.dll +0 -0
  206. intel_npu_acceleration_library/lib/Release/tbb12.dll +0 -0
  207. intel_npu_acceleration_library/lib/Release/tbb12_debug.dll +0 -0
  208. intel_npu_acceleration_library/lib/Release/tbbbind_2_5.dll +0 -0
  209. intel_npu_acceleration_library/lib/Release/tbbbind_2_5_debug.dll +0 -0
  210. intel_npu_acceleration_library/lib/Release/tbbmalloc.dll +0 -0
  211. intel_npu_acceleration_library/lib/Release/tbbmalloc_debug.dll +0 -0
  212. intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy.dll +0 -0
  213. intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy_debug.dll +0 -0
  214. intel_npu_acceleration_library/modelling.py +150 -0
  215. intel_npu_acceleration_library/nn/__init__.py +20 -0
  216. intel_npu_acceleration_library/nn/autograd.py +68 -0
  217. intel_npu_acceleration_library/nn/conv.py +257 -0
  218. intel_npu_acceleration_library/nn/functional.py +1207 -0
  219. intel_npu_acceleration_library/nn/linear.py +162 -0
  220. intel_npu_acceleration_library/nn/llm.py +417 -0
  221. intel_npu_acceleration_library/nn/module.py +393 -0
  222. intel_npu_acceleration_library/optimizations.py +157 -0
  223. 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}')