From 452d4f46b45b21cf5d8f24b76256a3e56cb8fe1c Mon Sep 17 00:00:00 2001 From: gitee Date: Mon, 23 Jun 2025 16:13:07 +0800 Subject: [PATCH 01/79] =?UTF-8?q?=E5=A2=9E=E5=8A=A0whl=E5=8C=85=E4=B8=8D?= =?UTF-8?q?=E5=8C=85=E5=90=ABadump=E5=8A=9F=E8=83=BD=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/msprobe/docs/01.installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/docs/01.installation.md b/debug/accuracy_tools/msprobe/docs/01.installation.md index 2610852e2..6f2b1a5ef 100644 --- a/debug/accuracy_tools/msprobe/docs/01.installation.md +++ b/debug/accuracy_tools/msprobe/docs/01.installation.md @@ -38,7 +38,7 @@ sha256sum {name}.whl # 验证whl包,若校验码一致,则whl包在下载中 ```bash pip install ./mindstudio_probe-{version}-py3-none-any.whl # 安装whl包 ``` - +上面提供的whl包链接不包含adump功能,如果需要使用adump功能,请参考[源码安装](#3-从源码安装)下载源码编译whl包。 若覆盖安装,请在命令行末尾添加 `--force-reinstall` 参数。 ## 3 从源码安装 -- Gitee From 74d6118766f37284ca1f6bc069d8fc0e182c08db Mon Sep 17 00:00:00 2001 From: gitee Date: Mon, 23 Jun 2025 16:16:48 +0800 Subject: [PATCH 02/79] =?UTF-8?q?=E6=9B=B4=E6=AD=A3=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/msprobe/docs/01.installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/docs/01.installation.md b/debug/accuracy_tools/msprobe/docs/01.installation.md index 6f2b1a5ef..538d32eb6 100644 --- a/debug/accuracy_tools/msprobe/docs/01.installation.md +++ b/debug/accuracy_tools/msprobe/docs/01.installation.md @@ -38,8 +38,8 @@ sha256sum {name}.whl # 验证whl包,若校验码一致,则whl包在下载中 ```bash pip install ./mindstudio_probe-{version}-py3-none-any.whl # 安装whl包 ``` +若覆盖安装,请在命令行末尾添加 `--force-reinstall` 参数。 上面提供的whl包链接不包含adump功能,如果需要使用adump功能,请参考[源码安装](#3-从源码安装)下载源码编译whl包。 -若覆盖安装,请在命令行末尾添加 `--force-reinstall` 参数。 ## 3 从源码安装 -- Gitee From b87449115e6f9535b8147ee461b9fb7273f4a05a Mon Sep 17 00:00:00 2001 From: gitee Date: Mon, 23 Jun 2025 16:17:43 +0800 Subject: [PATCH 03/79] =?UTF-8?q?=E8=B5=84=E6=96=99=E6=9B=B4=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/msprobe/docs/01.installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/docs/01.installation.md b/debug/accuracy_tools/msprobe/docs/01.installation.md index 538d32eb6..d24740002 100644 --- a/debug/accuracy_tools/msprobe/docs/01.installation.md +++ b/debug/accuracy_tools/msprobe/docs/01.installation.md @@ -39,7 +39,7 @@ sha256sum {name}.whl # 验证whl包,若校验码一致,则whl包在下载中 pip install ./mindstudio_probe-{version}-py3-none-any.whl # 安装whl包 ``` 若覆盖安装,请在命令行末尾添加 `--force-reinstall` 参数。 -上面提供的whl包链接不包含adump功能,如果需要使用adump功能,请参考[源码安装](#3-从源码安装)下载源码编译whl包。 +上面提供的whl包链接不包含adump功能,如果需要使用adump功能,请参考[从源码安装](#3-从源码安装)下载源码编译whl包。 ## 3 从源码安装 -- Gitee From ecb5103b7dbeae9fdaf36831687fffa6f18a2c73 Mon Sep 17 00:00:00 2001 From: wangchao426 Date: Mon, 23 Jun 2025 20:05:19 +0800 Subject: [PATCH 04/79] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/msprobe/nan_analyze/graph.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debug/accuracy_tools/msprobe/nan_analyze/graph.py b/debug/accuracy_tools/msprobe/nan_analyze/graph.py index 18b313ce3..32012e01b 100644 --- a/debug/accuracy_tools/msprobe/nan_analyze/graph.py +++ b/debug/accuracy_tools/msprobe/nan_analyze/graph.py @@ -17,6 +17,7 @@ from dataclasses import dataclass from msprobe.core.common.const import Const from msprobe.core.common.log import logger from msprobe.nan_analyze.utils import FileCache, RankPath, is_ignore_op, check_item_anomaly, NanAnalyseConst +from mstt.debug.accuracy_tools.msprobe.core.common.exceptions import MsprobeException @dataclass @@ -52,6 +53,8 @@ class DataNode: def find_stack(self, stack_info): for item in stack_info.values(): + if not isinstance(item, list): + raise MsprobeException(4, f'The value\'s type in stack.json should be a list, not {type(item)}!') if len(item) >= 2 and self.op_name in item[0]: return item[1] return {} -- Gitee From 7b66b8d039fce71dfc64ccb1adc925e7de440da9 Mon Sep 17 00:00:00 2001 From: yangxinxian <947098055@qq.com> Date: Mon, 23 Jun 2025 20:10:57 +0800 Subject: [PATCH 05/79] =?UTF-8?q?=E4=BF=AE=E6=94=B9cleancode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msprobe/ccsrc/base/DebuggerConfig.cpp | 7 ++-- .../msprobe/ccsrc/core/AclDumper.h | 2 +- .../msprobe/ccsrc/core/AclTensor.cpp | 5 +-- .../msprobe/ccsrc/utils/CPythonUtils.h | 3 +- .../api_accuracy_checker/api_runner.py | 35 ++++++++++++++++++- .../dym_loader/hook_dynamic_loader.cpp | 3 +- 6 files changed, 47 insertions(+), 8 deletions(-) diff --git a/debug/accuracy_tools/msprobe/ccsrc/base/DebuggerConfig.cpp b/debug/accuracy_tools/msprobe/ccsrc/base/DebuggerConfig.cpp index a23f53f03..37f065e97 100644 --- a/debug/accuracy_tools/msprobe/ccsrc/base/DebuggerConfig.cpp +++ b/debug/accuracy_tools/msprobe/ccsrc/base/DebuggerConfig.cpp @@ -51,8 +51,11 @@ DebuggerErrno ParseJsonBaseObj2Var(const nlohmann::json& content, const std::str } template -DebuggerErrno ParseJsonStringAndTrans(const nlohmann::json& content, const std::string& field, - const std::map& enum2name, T& output, bool mandatory = false) +DebuggerErrno ParseJsonStringAndTrans(const nlohmann::json& content, + const std::string& field, + const std::map& enum2name, + T& output, + bool mandatory = false) { DebuggerErrno ret; std::string value; diff --git a/debug/accuracy_tools/msprobe/ccsrc/core/AclDumper.h b/debug/accuracy_tools/msprobe/ccsrc/core/AclDumper.h index b4316b184..8407394e2 100644 --- a/debug/accuracy_tools/msprobe/ccsrc/core/AclDumper.h +++ b/debug/accuracy_tools/msprobe/ccsrc/core/AclDumper.h @@ -29,7 +29,7 @@ namespace MindStudioDebugger { class AclDumper { public: - static AclDumper& GetInstance() + static AclDumper& GetInstance() { static AclDumper dumperInstance; return dumperInstance; diff --git a/debug/accuracy_tools/msprobe/ccsrc/core/AclTensor.cpp b/debug/accuracy_tools/msprobe/ccsrc/core/AclTensor.cpp index 4ddfd33d6..6b1d6ad6b 100644 --- a/debug/accuracy_tools/msprobe/ccsrc/core/AclTensor.cpp +++ b/debug/accuracy_tools/msprobe/ccsrc/core/AclTensor.cpp @@ -273,7 +273,7 @@ size_t SizeOfTensor(const AclTensorInfo& tensor, bool host) return num * eleSize; } -static inline int64_t GetCubeSizeByType(const AclDtype& dtype) +static inline int64_t GetCubeSizeByType(const AclDtype& dtype) { if (dtype == AclDtype::DT_UINT8 || dtype == AclDtype::DT_INT8) { return CUBE_32; @@ -842,7 +842,8 @@ static DebuggerErrno TransBf16ToFp32(const uint8_t* input, size_t num, uint8_t* static DebuggerErrno TransInt4ToInt8(const uint8_t* input, size_t elemNums, uint8_t* output, - size_t bufferSize) { + size_t bufferSize) +{ // 输出缓冲区要能容纳 elemNums 个 int8_t if (bufferSize < elemNums * sizeof(int8_t)) { LOG_ERROR(DebuggerErrno::ERROR_BUFFER_OVERFLOW, diff --git a/debug/accuracy_tools/msprobe/ccsrc/utils/CPythonUtils.h b/debug/accuracy_tools/msprobe/ccsrc/utils/CPythonUtils.h index db5153139..628cf6942 100644 --- a/debug/accuracy_tools/msprobe/ccsrc/utils/CPythonUtils.h +++ b/debug/accuracy_tools/msprobe/ccsrc/utils/CPythonUtils.h @@ -86,7 +86,8 @@ public: Py_INCREF(Py_None); ptr = Py_None; } - PythonObject(PyObject* o) : ptr(o) { + PythonObject(PyObject* o) : ptr(o) + { if (ptr == nullptr) { ptr = Py_None; } diff --git a/debug/accuracy_tools/msprobe/mindspore/api_accuracy_checker/api_runner.py b/debug/accuracy_tools/msprobe/mindspore/api_accuracy_checker/api_runner.py index e1640aab9..3e228bf97 100644 --- a/debug/accuracy_tools/msprobe/mindspore/api_accuracy_checker/api_runner.py +++ b/debug/accuracy_tools/msprobe/mindspore/api_accuracy_checker/api_runner.py @@ -13,6 +13,14 @@ # See the License for the specific language governing permissions and # limitations under the License. +from typing import ( + Any, + Dict, + List, + Tuple, + Union, + TypeAlias, +) import os import numpy as np import mindspore @@ -39,6 +47,26 @@ if torch_mindtorch_importer.is_valid_pt_mt_env: else: import torch +# 类型别名,分别表示前向、后向(MS/MT)和函数总体可能的返回类型 +ReturnForward: TypeAlias = Tuple[ + List[ComputeElement], + Tuple[Any, ...], + Dict[str, Any], + Tuple[Any, ...], +] + +ReturnBackwardMS: TypeAlias = Tuple[ + List[ComputeElement], + Union[Any, Tuple[Any, ...]], + Tuple[Any, ...], +] + +ReturnType: TypeAlias = Union[ + List[ComputeElement], # 非 MS/MT 后向 + ReturnForward, # MS/MT 前向 + ReturnBackwardMS, # MS/MT 后向 +] + class ApiInputAggregation: def __init__(self, inputs, kwargs, gradient_inputs) -> None: @@ -179,7 +207,12 @@ class ApiRunner: return api_instance @staticmethod - def run_api(api_instance, api_input_aggregation, forward_or_backward, api_platform): + def run_api( + api_instance, + api_input_aggregation, + forward_or_backward: str, + api_platform: str, + ) -> ReturnType: inputs = tuple(compute_element.get_parameter(get_origin=False, tensor_platform=api_platform) for compute_element in api_input_aggregation.inputs) kwargs = {key: value.get_parameter(get_origin=False, tensor_platform=api_platform) diff --git a/debug/accuracy_tools/msprobe/mindspore/dym_loader/hook_dynamic_loader.cpp b/debug/accuracy_tools/msprobe/mindspore/dym_loader/hook_dynamic_loader.cpp index 4503b6c6d..435b9b8c2 100644 --- a/debug/accuracy_tools/msprobe/mindspore/dym_loader/hook_dynamic_loader.cpp +++ b/debug/accuracy_tools/msprobe/mindspore/dym_loader/hook_dynamic_loader.cpp @@ -29,7 +29,8 @@ HookDynamicLoader &HookDynamicLoader::GetInstance() return instance; } -bool HookDynamicLoader::LoadFunction(void *handle, const std::string &functionName) { +bool HookDynamicLoader::LoadFunction(void *handle, const std::string &functionName) +{ void *func = dlsym(handle, functionName.c_str()); if (!func) { MS_LOG(WARNING) << "Could not load function: " << functionName << ", error: " << dlerror(); -- Gitee From e3394802b88a9fde62578e83af199ca094c34cc0 Mon Sep 17 00:00:00 2001 From: wangchao426 Date: Mon, 23 Jun 2025 20:19:41 +0800 Subject: [PATCH 06/79] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/msprobe/nan_analyze/graph.py | 2 +- .../msprobe/test/nan_analyze_ut/test_nan_analyzer_graph.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/nan_analyze/graph.py b/debug/accuracy_tools/msprobe/nan_analyze/graph.py index 32012e01b..39807306f 100644 --- a/debug/accuracy_tools/msprobe/nan_analyze/graph.py +++ b/debug/accuracy_tools/msprobe/nan_analyze/graph.py @@ -17,7 +17,7 @@ from dataclasses import dataclass from msprobe.core.common.const import Const from msprobe.core.common.log import logger from msprobe.nan_analyze.utils import FileCache, RankPath, is_ignore_op, check_item_anomaly, NanAnalyseConst -from mstt.debug.accuracy_tools.msprobe.core.common.exceptions import MsprobeException +from msprobe.core.common.exceptions import MsprobeException @dataclass diff --git a/debug/accuracy_tools/msprobe/test/nan_analyze_ut/test_nan_analyzer_graph.py b/debug/accuracy_tools/msprobe/test/nan_analyze_ut/test_nan_analyzer_graph.py index 715f9bae0..9bd3777ab 100644 --- a/debug/accuracy_tools/msprobe/test/nan_analyze_ut/test_nan_analyzer_graph.py +++ b/debug/accuracy_tools/msprobe/test/nan_analyze_ut/test_nan_analyzer_graph.py @@ -21,6 +21,8 @@ from unittest.mock import patch from msprobe.nan_analyze.graph import CommunicationNode, DataNode from msprobe.nan_analyze.utils import RankPath + +from msprobe.core.common.exceptions import MsprobeException from test_nan_analyzer import DumpDataBuilder, gen_normal_dump_json, MockedFileCache, json_dict, gen_stack_json, do_nothing @@ -121,6 +123,9 @@ class TestDataNode(unittest.TestCase): data_node = DataNode(op_name, 0, dump_json[0]['data'][op_name]) stack_info = data_node.find_stack(json_dict[os.path.join('./step0', 'rank', 'stack.json')]) self.assertEqual(stack_info[0], 'File /root/example.py, line 10, in test_fcn, \\n test(tensor)') + with self.assertRaises(MsprobeException) as context: + data_node.find_stack({op_name: 'blabla'}) + self.assertEqual(context.exception.code, 4) def test_find_complete_construct(self): with patch('msprobe.nan_analyze.graph.FileCache', MockedFileCache): -- Gitee From ad1bd00a42d15a7d025e91c572a11b1762229ab5 Mon Sep 17 00:00:00 2001 From: yangxinxian <947098055@qq.com> Date: Mon, 23 Jun 2025 20:23:54 +0800 Subject: [PATCH 07/79] Update api_runner.py --- .../api_accuracy_checker/api_runner.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/debug/accuracy_tools/msprobe/mindspore/api_accuracy_checker/api_runner.py b/debug/accuracy_tools/msprobe/mindspore/api_accuracy_checker/api_runner.py index 3e228bf97..8ec8125f7 100644 --- a/debug/accuracy_tools/msprobe/mindspore/api_accuracy_checker/api_runner.py +++ b/debug/accuracy_tools/msprobe/mindspore/api_accuracy_checker/api_runner.py @@ -18,8 +18,7 @@ from typing import ( Dict, List, Tuple, - Union, - TypeAlias, + Union ) import os import numpy as np @@ -47,25 +46,21 @@ if torch_mindtorch_importer.is_valid_pt_mt_env: else: import torch -# 类型别名,分别表示前向、后向(MS/MT)和函数总体可能的返回类型 -ReturnForward: TypeAlias = Tuple[ +# 为了可读性,我们先给每种返回形态起个别名 +ForwardResult = Tuple[ List[ComputeElement], Tuple[Any, ...], Dict[str, Any], Tuple[Any, ...], ] -ReturnBackwardMS: TypeAlias = Tuple[ +BackwardResultMT = Tuple[ List[ComputeElement], Union[Any, Tuple[Any, ...]], Tuple[Any, ...], ] -ReturnType: TypeAlias = Union[ - List[ComputeElement], # 非 MS/MT 后向 - ReturnForward, # MS/MT 前向 - ReturnBackwardMS, # MS/MT 后向 -] +PyTorchBackward = List[ComputeElement] class ApiInputAggregation: @@ -212,7 +207,7 @@ class ApiRunner: api_input_aggregation, forward_or_backward: str, api_platform: str, - ) -> ReturnType: + ) -> Union[ForwardResult, BackwardResultMT, PyTorchBackward]: inputs = tuple(compute_element.get_parameter(get_origin=False, tensor_platform=api_platform) for compute_element in api_input_aggregation.inputs) kwargs = {key: value.get_parameter(get_origin=False, tensor_platform=api_platform) -- Gitee From e23395b5a5828f7ce293a91ad2de38ef73585831 Mon Sep 17 00:00:00 2001 From: gitee Date: Mon, 23 Jun 2025 20:29:22 +0800 Subject: [PATCH 08/79] fix bug --- .../msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py b/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py index bf04b3cb2..082f391c9 100644 --- a/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py +++ b/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py @@ -293,7 +293,7 @@ def run_torch_api(api_full_name, real_data_path, backward_content, api_info_dict if grad_input_index is not None: grad_index = grad_input_index.get('grad_index') - if need_backward: + if need_backward and out is not None: if need_to_backward(grad_index, out): backward_args = backward_content[api_full_name].get("input") func_options = { -- Gitee From 548cc88f9c102d5597eb08e1608108ad39fab92b Mon Sep 17 00:00:00 2001 From: wangchao426 Date: Mon, 23 Jun 2025 20:43:14 +0800 Subject: [PATCH 09/79] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/msprobe/nan_analyze/graph.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/nan_analyze/graph.py b/debug/accuracy_tools/msprobe/nan_analyze/graph.py index 39807306f..13ec61444 100644 --- a/debug/accuracy_tools/msprobe/nan_analyze/graph.py +++ b/debug/accuracy_tools/msprobe/nan_analyze/graph.py @@ -54,7 +54,8 @@ class DataNode: def find_stack(self, stack_info): for item in stack_info.values(): if not isinstance(item, list): - raise MsprobeException(4, f'The value\'s type in stack.json should be a list, not {type(item)}!') + raise MsprobeException(MsprobeException.UNSUPPORTED_TYPE_ERROR, + f'The value\'s type in stack.json should be a list, not {type(item)}!') if len(item) >= 2 and self.op_name in item[0]: return item[1] return {} -- Gitee From c651ce86e7eb77ac076891c4f27f7ca30f66d2a1 Mon Sep 17 00:00:00 2001 From: z30043230 Date: Mon, 23 Jun 2025 20:51:13 +0800 Subject: [PATCH 10/79] =?UTF-8?q?db=E5=92=8Ctext=E5=9C=BA=E6=99=AF?= =?UTF-8?q?=E4=B8=8Brank=5Fset=E4=BB=8Eparallel=5Fgroup=5Finfo=E4=B8=AD?= =?UTF-8?q?=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../communication_group/base_communication_group.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/profiler/msprof_analyze/cluster_analyse/communication_group/base_communication_group.py b/profiler/msprof_analyze/cluster_analyse/communication_group/base_communication_group.py index 2765ba263..31cf1ad9f 100644 --- a/profiler/msprof_analyze/cluster_analyse/communication_group/base_communication_group.py +++ b/profiler/msprof_analyze/cluster_analyse/communication_group/base_communication_group.py @@ -190,18 +190,22 @@ class BaseCommunicationGroup: comm_group_df.loc[comm_group_df.shape[0]] = [Constant.P2P, list(rank_set), group_name] # create parallel group dataframe - parallel_group_cols = ["group_name", "group_id", "pg_name"] + parallel_group_cols = ["group_name", "group_id", "pg_name", "global_ranks"] parallel_group_df = pd.DataFrame(columns=parallel_group_cols) for group_id, parallel_info in self.parallel_group_info.items(): group_name = str(double_hash(group_id)) # group_name is hashed group_id pg_name = parallel_info.get("group_name", "") - if not pg_name: + global_ranks = parallel_info.get("global_ranks", []) + if not pg_name or not global_ranks: continue - parallel_group_df.loc[parallel_group_df.shape[0]] = [group_name, group_id, pg_name] + parallel_group_df.loc[parallel_group_df.shape[0]] = [group_name, group_id, pg_name, global_ranks] # merge by group_name df = pd.merge(comm_group_df, parallel_group_df, on='group_name', how='left') df.fillna("", inplace=True) + if self.parallel_group_info: + df["rank_set"] = df["global_ranks"] + df = df.drop(columns=["global_ranks"]) self.comm_group_parallel_info_df = df -- Gitee From 39ef711498f624d43dd032ac8f48995ae7e9c17f Mon Sep 17 00:00:00 2001 From: l30036321 Date: Tue, 24 Jun 2025 09:44:42 +0800 Subject: [PATCH 11/79] fix bug --- .../msprobe/mindspore/debugger/precision_debugger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/mindspore/debugger/precision_debugger.py b/debug/accuracy_tools/msprobe/mindspore/debugger/precision_debugger.py index 05c0bf8e0..182eaf433 100644 --- a/debug/accuracy_tools/msprobe/mindspore/debugger/precision_debugger.py +++ b/debug/accuracy_tools/msprobe/mindspore/debugger/precision_debugger.py @@ -231,7 +231,7 @@ class PrecisionDebugger(BasePrecisionDebugger): @classmethod def _start_kernel_dump(cls): - instance = cls.get_instance() + instance = cls._get_instance() is_graph_config = cls._is_graph_dump(instance.config) instance.config.check_config_with_l2(is_graph_config) if not is_graph_config: -- Gitee From cbc28e120f343011353f08851b911f19ed23090f Mon Sep 17 00:00:00 2001 From: Linwei-Ying Date: Tue, 24 Jun 2025 09:55:08 +0800 Subject: [PATCH 12/79] msprobe exception bugfix --- debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py b/debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py index 144e886ca..2cdfe6f51 100644 --- a/debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py +++ b/debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py @@ -37,8 +37,6 @@ try: from rich.table import Table from rich import print as rich_print from rich.columns import Columns - - install() except ImportError as err: install = None Panel = None -- Gitee From 712bb2cb44fe013a0a1f1bd54dea7e412c786336 Mon Sep 17 00:00:00 2001 From: Mrtutu Date: Tue, 24 Jun 2025 10:41:41 +0800 Subject: [PATCH 13/79] fix dyno passwd --- msmonitor/dynolog_npu/cli/Cargo.toml | 1 - msmonitor/dynolog_npu/cli/src/main.rs | 22 ++++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/msmonitor/dynolog_npu/cli/Cargo.toml b/msmonitor/dynolog_npu/cli/Cargo.toml index 2f9703700..65b8d94af 100644 --- a/msmonitor/dynolog_npu/cli/Cargo.toml +++ b/msmonitor/dynolog_npu/cli/Cargo.toml @@ -17,4 +17,3 @@ chrono = "0.4" num-bigint = "0.4" openssl = { version = "0.10", features = ["vendored"] } rpassword = "7.2.0" - diff --git a/msmonitor/dynolog_npu/cli/src/main.rs b/msmonitor/dynolog_npu/cli/src/main.rs index 6df6dfb19..ba02f3a39 100644 --- a/msmonitor/dynolog_npu/cli/src/main.rs +++ b/msmonitor/dynolog_npu/cli/src/main.rs @@ -518,6 +518,20 @@ fn create_dyno_client_with_no_certs( Ok(DynoClient::Insecure(stream)) } +// 安全清除密码的函数 +fn secure_clear_password(password: &mut Vec) { + if !password.is_empty() { + // 使用零覆盖密码数据 + for byte in password.iter_mut() { + *byte = 0; + } + // 清空向量 + password.clear(); + // 收缩向量容量,释放内存 + password.shrink_to_fit(); + } +} + fn create_dyno_client_with_certs( host: &str, port: u16, @@ -597,12 +611,12 @@ fn create_dyno_client_with_certs( // 根据是否加密来加载私钥 let keys = if is_encrypted { // 如果私钥是加密的,请求用户输入密码 - let mut password = prompt_password("Please enter the certificate password: ")?; - let pkey = PKey::private_key_from_pem_passphrase(&key_data, password.as_bytes()) + let mut password = prompt_password("Please enter the certificate password: ")?.into_bytes(); + let pkey = PKey::private_key_from_pem_passphrase(&key_data, &password) .map_err(|e| io::Error::new(io::ErrorKind::InvalidData, format!("Failed to decrypt private key: {}", e)))?; - // 清除密码 - password.clear(); + // 手动清除密码 + secure_clear_password(&mut password); // 返回私钥 vec![pkey.private_key_to_der() -- Gitee From 37324aa5a576c110beb130c799d506e9c8e55c5a Mon Sep 17 00:00:00 2001 From: wuyulong17 <2284273586@qq.com> Date: Mon, 23 Jun 2025 19:30:35 +0800 Subject: [PATCH 14/79] =?UTF-8?q?=E4=BB=8Emaster=E5=88=86=E6=94=AF?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E6=9E=B6torch-tb-profiler-ascend=E6=8F=92?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +- plugins/tensorboard-plugins/tb_plugin/.flake8 | 3 - .../tensorboard-plugins/tb_plugin/.gitignore | 4 - .../tb_plugin/.pre-commit-config.yaml | 34 - plugins/tensorboard-plugins/tb_plugin/LICENSE | 33 - .../tensorboard-plugins/tb_plugin/README.md | 33 +- .../tb_plugin/ci_scripts/install_env.sh | 17 - .../tb_plugin/docs/gpu_utilization.md | 22 - ...7\275\221URL\350\257\264\346\230\216.xlsx" | Bin 17513 -> 0 bytes .../tb_plugin/examples/datapipe_example.py | 50 - .../examples/resnet50_autograd_api.py | 46 - .../examples/resnet50_ddp_profiler.py | 95 - .../examples/resnet50_profiler_api.py | 52 - .../tb_plugin/fe/.gitignore | 3 - .../tb_plugin/fe/README.md | 18 - .../tb_plugin/fe/index.html | 10 - .../tb_plugin/fe/package.json | 47 - .../tb_plugin/fe/prettier.json | 12 - .../tb_plugin/fe/scripts/add_header.py | 51 - .../tb_plugin/fe/scripts/build.sh | 13 - .../tb_plugin/fe/scripts/setup.sh | 25 - .../tb_plugin/fe/src/api/README.md | 13 - .../tb_plugin/fe/src/api/generated/api.ts | 4724 ------- .../fe/src/api/generated/configuration.ts | 68 - .../fe/src/api/generated/custom.d.ts | 6 - .../tb_plugin/fe/src/api/generated/index.ts | 18 - .../tb_plugin/fe/src/api/index.ts | 8 - .../tb_plugin/fe/src/api/mock.ts | 6684 ---------- .../tb_plugin/fe/src/api/openapi.yaml | 1204 -- .../tb_plugin/fe/src/app.tsx | 625 - .../components/Accuracy/AccuracyLeftPanel.tsx | 334 - .../components/Accuracy/ComparisonPanel.tsx | 322 - .../components/Accuracy/LossComparison.tsx | 87 - .../components/Accuracy/LossDisplayPanel.tsx | 228 - .../components/Accuracy/RegexConfigModal.tsx | 116 - .../fe/src/components/Accuracy/entity.ts | 30 - .../fe/src/components/DataLoading.tsx | 19 - .../fe/src/components/DiffOverview.tsx | 942 -- .../fe/src/components/DistributedView.tsx | 313 - .../src/components/FullCircularProgress.tsx | 23 - .../fe/src/components/GpuInfoTable.tsx | 130 - .../tb_plugin/fe/src/components/Kernel.tsx | 301 - .../fe/src/components/MemoryView.tsx | 531 - .../fe/src/components/ModuleView.tsx | 244 - .../tb_plugin/fe/src/components/Operator.tsx | 282 - .../tb_plugin/fe/src/components/Overview.tsx | 225 - .../fe/src/components/TextListItem.tsx | 82 - .../fe/src/components/TooltipDescriptions.ts | 38 - .../tb_plugin/fe/src/components/TraceView.tsx | 79 - .../src/components/charts/AntTableChart.tsx | 111 - .../fe/src/components/charts/AreaChart.tsx | 72 - .../fe/src/components/charts/ColumnChart.tsx | 118 - .../fe/src/components/charts/NewLineChart.tsx | 386 - .../fe/src/components/charts/PieChart.tsx | 173 - .../components/charts/SteppedAreaChart.tsx | 106 - .../fe/src/components/charts/TableChart.tsx | 85 - .../tb_plugin/fe/src/components/helpers.tsx | 41 - .../src/components/tables/CallFrameList.tsx | 35 - .../src/components/tables/CallStackTable.tsx | 103 - .../fe/src/components/tables/ExpandIcon.tsx | 35 - .../components/tables/MemoryStatsTable.tsx | 77 - .../src/components/tables/NavToCodeButton.tsx | 29 - .../src/components/tables/OperationTable.tsx | 105 - .../fe/src/components/tables/common.tsx | 150 - .../fe/src/components/tables/transform.ts | 63 - .../tb_plugin/fe/src/components/transform.ts | 83 - .../tb_plugin/fe/src/constants/groupBy.ts | 13 - .../tb_plugin/fe/src/gstatic.d.ts | 6 - .../tb_plugin/fe/src/index.tsx | 10 - .../tb_plugin/fe/src/setup.tsx | 9 - .../tb_plugin/fe/src/styles.css | 16 - .../tb_plugin/fe/src/utils/binarysearch.ts | 20 - .../tb_plugin/fe/src/utils/debounce.ts | 21 - .../tb_plugin/fe/src/utils/def.ts | 20 - .../tb_plugin/fe/src/utils/hooks.ts | 27 - .../tb_plugin/fe/src/utils/index.ts | 24 - .../tb_plugin/fe/src/utils/resize.ts | 27 - .../tb_plugin/fe/src/utils/search.ts | 68 - .../tb_plugin/fe/src/utils/top.ts | 54 - .../tb_plugin/fe/src/utils/type.ts | 9 - .../tb_plugin/fe/src/utils/vscode.ts | 13 - .../tb_plugin/fe/tsconfig.json | 18 - .../tb_plugin/fe/update-static.js | 7 - .../tb_plugin/fe/webpack.config.js | 36 - .../packaging/torch_tb_profiler/meta.yaml | 39 - .../tensorboard-plugins/tb_plugin/setup.py | 125 - .../tb_plugin/test/gpu_metrics_expected.json | 3105 ----- .../tb_plugin/test/gpu_metrics_input.json | 3105 ----- .../worker0.1623143089861.pt.trace.json.gz | Bin 1159569 -> 0 bytes .../worker0.1623143566756.pt.trace.json.gz | Bin 1160275 -> 0 bytes .../worker0.1623212756351.pt.trace.json.gz | Bin 1095617 -> 0 bytes .../worker0.1623213129365.pt.trace.json.gz | Bin 1091740 -> 0 bytes .../tb_plugin/test/result_check_file.txt | 10 - .../test/test_compare_with_autograd.py | 301 - .../tb_plugin/test/test_diffrun.py | 51 - .../tb_plugin/test/test_profiler.py | 2752 ----- .../tb_plugin/test/test_ranges.py | 50 - .../test/test_tensorboard_end2end.py | 170 - .../tb_plugin/torch_tb_profiler/__init__.py | 7 - .../torch_tb_profiler/config/config.ini | 11 - .../tb_plugin/torch_tb_profiler/consts.py | 116 - .../torch_tb_profiler/io/__init__.py | 23 - .../torch_tb_profiler/io/azureblob.py | 187 - .../tb_plugin/torch_tb_profiler/io/base.py | 114 - .../tb_plugin/torch_tb_profiler/io/cache.py | 81 - .../tb_plugin/torch_tb_profiler/io/file.py | 658 - .../tb_plugin/torch_tb_profiler/io/gs.py | 126 - .../tb_plugin/torch_tb_profiler/io/utils.py | 72 - .../torch_tb_profiler/multiprocessing.py | 13 - .../tb_plugin/torch_tb_profiler/plugin.py | 651 - .../torch_tb_profiler/profiler/__init__.py | 6 - .../profiler/communication.py | 95 - .../torch_tb_profiler/profiler/data.py | 488 - .../profiler/diffrun/__init__.py | 3 - .../profiler/diffrun/contract.py | 99 - .../profiler/diffrun/operator.py | 124 - .../profiler/diffrun/tree.py | 163 - .../profiler/event_parser.py | 467 - .../profiler/gpu_metrics_parser.py | 314 - .../profiler/kernel_parser.py | 45 - .../torch_tb_profiler/profiler/loader.py | 230 - .../profiler/memory_parser.py | 331 - .../torch_tb_profiler/profiler/module_op.py | 262 - .../torch_tb_profiler/profiler/node.py | 321 - .../torch_tb_profiler/profiler/op_agg.py | 164 - .../torch_tb_profiler/profiler/op_tree.py | 355 - .../profiler/overall_parser.py | 114 - .../torch_tb_profiler/profiler/range_utils.py | 190 - .../profiler/run_generator.py | 1402 --- .../torch_tb_profiler/profiler/tensor_core.py | 50 - .../profiler/tensor_cores_parser.py | 77 - .../torch_tb_profiler/profiler/trace.py | 241 - .../tb_plugin/torch_tb_profiler/run.py | 525 - .../torch_tb_profiler/static/index.html | 2 - .../torch_tb_profiler/static/index.js | 3 - .../static/trace_embedding.html | 103 - .../torch_tb_profiler/static/trace_script.js | 27 - .../static/trace_viewer_full.html | 10175 ---------------- .../tb_plugin/torch_tb_profiler/utils.py | 147 - 139 files changed, 8 insertions(+), 48703 deletions(-) delete mode 100644 plugins/tensorboard-plugins/tb_plugin/.flake8 delete mode 100644 plugins/tensorboard-plugins/tb_plugin/.gitignore delete mode 100644 plugins/tensorboard-plugins/tb_plugin/.pre-commit-config.yaml delete mode 100644 plugins/tensorboard-plugins/tb_plugin/LICENSE delete mode 100644 plugins/tensorboard-plugins/tb_plugin/ci_scripts/install_env.sh delete mode 100644 plugins/tensorboard-plugins/tb_plugin/docs/gpu_utilization.md delete mode 100644 "plugins/tensorboard-plugins/tb_plugin/docs/\345\205\254\347\275\221URL\350\257\264\346\230\216.xlsx" delete mode 100644 plugins/tensorboard-plugins/tb_plugin/examples/datapipe_example.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/examples/resnet50_autograd_api.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/examples/resnet50_ddp_profiler.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/examples/resnet50_profiler_api.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/.gitignore delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/README.md delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/index.html delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/package.json delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/prettier.json delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/scripts/add_header.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/scripts/build.sh delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/scripts/setup.sh delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/api/README.md delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/api.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/configuration.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/custom.d.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/index.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/api/index.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/api/mock.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/api/openapi.yaml delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/app.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/AccuracyLeftPanel.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/ComparisonPanel.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/LossComparison.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/LossDisplayPanel.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/RegexConfigModal.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/entity.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/DataLoading.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/DiffOverview.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/DistributedView.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/FullCircularProgress.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/GpuInfoTable.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/Kernel.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/MemoryView.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/ModuleView.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/Operator.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/Overview.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/TextListItem.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/TooltipDescriptions.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/TraceView.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/AntTableChart.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/AreaChart.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/ColumnChart.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/NewLineChart.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/PieChart.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/SteppedAreaChart.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/TableChart.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/helpers.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/CallFrameList.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/CallStackTable.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/ExpandIcon.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/MemoryStatsTable.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/NavToCodeButton.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/OperationTable.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/common.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/transform.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/components/transform.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/constants/groupBy.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/gstatic.d.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/index.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/setup.tsx delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/styles.css delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/utils/binarysearch.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/utils/debounce.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/utils/def.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/utils/hooks.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/utils/index.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/utils/resize.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/utils/search.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/utils/top.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/utils/type.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/src/utils/vscode.ts delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/tsconfig.json delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/update-static.js delete mode 100644 plugins/tensorboard-plugins/tb_plugin/fe/webpack.config.js delete mode 100644 plugins/tensorboard-plugins/tb_plugin/packaging/torch_tb_profiler/meta.yaml delete mode 100644 plugins/tensorboard-plugins/tb_plugin/setup.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/test/gpu_metrics_expected.json delete mode 100644 plugins/tensorboard-plugins/tb_plugin/test/gpu_metrics_input.json delete mode 100644 plugins/tensorboard-plugins/tb_plugin/test/resources/resnet50_num_workers_0/worker0.1623143089861.pt.trace.json.gz delete mode 100644 plugins/tensorboard-plugins/tb_plugin/test/resources/resnet50_num_workers_0/worker0.1623143566756.pt.trace.json.gz delete mode 100644 plugins/tensorboard-plugins/tb_plugin/test/resources/resnet50_num_workers_4/worker0.1623212756351.pt.trace.json.gz delete mode 100644 plugins/tensorboard-plugins/tb_plugin/test/resources/resnet50_num_workers_4/worker0.1623213129365.pt.trace.json.gz delete mode 100644 plugins/tensorboard-plugins/tb_plugin/test/result_check_file.txt delete mode 100644 plugins/tensorboard-plugins/tb_plugin/test/test_compare_with_autograd.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/test/test_diffrun.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/test/test_profiler.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/test/test_ranges.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/test/test_tensorboard_end2end.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/__init__.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/config/config.ini delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/consts.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/__init__.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/azureblob.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/base.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/cache.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/file.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/gs.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/utils.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/multiprocessing.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/plugin.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/__init__.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/communication.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/data.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/__init__.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/contract.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/operator.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/tree.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/event_parser.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/gpu_metrics_parser.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/kernel_parser.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/loader.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/memory_parser.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/module_op.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/node.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/op_agg.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/op_tree.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/overall_parser.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/range_utils.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/run_generator.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/tensor_core.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/tensor_cores_parser.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/trace.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/run.py delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/index.html delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/index.js delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/trace_embedding.html delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/trace_script.js delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/trace_viewer_full.html delete mode 100644 plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/utils.py diff --git a/README.md b/README.md index 96394cb1e..899f32e5c 100644 --- a/README.md +++ b/README.md @@ -46,11 +46,10 @@ mstt包括精度工具(msprobe)和性能工具(msprof-analyze),分析 MindStudio一站式在线监控工具。 -## [Tensorboard](./plugins/tensorboard-plugins/tb_plugin) +## [Tensorboard](./plugins/tensorboard-plugins/tb_graph_ascend) +Tensorboard 支持模型结构进行分级可视化展示的插件 tb-graph-ascend。 -Tensorboard 支持 NPU 性能数据可视化插件 PyTorch Profiler TensorBoard NPU Plugin。 - -支持将 Ascend 平台采集、解析的 PyTorch Profiling 数据可视化呈现,也兼容 GPU 数据采集、解析可视化。 +可将模型的层级关系、精度数据进行可视化,并支持将调试模型和标杆模型进行分视图展示和关联比对,方便用户快速定位精度问题。 ## 分支维护策略 diff --git a/plugins/tensorboard-plugins/tb_plugin/.flake8 b/plugins/tensorboard-plugins/tb_plugin/.flake8 deleted file mode 100644 index 1c5254b9f..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/.flake8 +++ /dev/null @@ -1,3 +0,0 @@ -[flake8] -max-line-length = 120 -per-file-ignores = __init__.py:F401 torch_tb_profiler/io/file.py: F401 diff --git a/plugins/tensorboard-plugins/tb_plugin/.gitignore b/plugins/tensorboard-plugins/tb_plugin/.gitignore deleted file mode 100644 index dc7d4e627..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/build -/dist -/*.egg-info -__pycache__ diff --git a/plugins/tensorboard-plugins/tb_plugin/.pre-commit-config.yaml b/plugins/tensorboard-plugins/tb_plugin/.pre-commit-config.yaml deleted file mode 100644 index a650ec832..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/.pre-commit-config.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -default_language_version: - python: python3.8 - -ci: - autofix_prs: true - autoupdate_commit_msg: '[pre-commit.ci] pre-commit suggestions' - autoupdate_schedule: quarterly - # submodules: true - -repos: - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.1.0 - hooks: - - id: end-of-file-fixer - exclude: torch_tb_profiler/static/index.html - - id: trailing-whitespace - - id: double-quote-string-fixer - - - repo: https://github.com/pre-commit/mirrors-autopep8 - rev: v1.6.0 - hooks: - - id: autopep8 - name: Format code - - repo: https://github.com/PyCQA/flake8 - rev: 4.0.1 - hooks: - - id: flake8 - args: - - "--max-line-length=120" - - "--per-file-ignores=__init__.py:F401 tb_plugin/torch_tb_profiler/io/file.py: F401" - name: Check PEP8 diff --git a/plugins/tensorboard-plugins/tb_plugin/LICENSE b/plugins/tensorboard-plugins/tb_plugin/LICENSE deleted file mode 100644 index edb179715..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/LICENSE +++ /dev/null @@ -1,33 +0,0 @@ -BSD License - -For Kineto software - -Copyright (c) Facebook, Inc. and its affiliates. All rights reserved. - -All contributions by Microsoft: -Copyright (c) Microsoft Corporation. (The Azure AI Platform team) - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name Facebook nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/plugins/tensorboard-plugins/tb_plugin/README.md b/plugins/tensorboard-plugins/tb_plugin/README.md index 6b9a3aee0..f3a629c19 100644 --- a/plugins/tensorboard-plugins/tb_plugin/README.md +++ b/plugins/tensorboard-plugins/tb_plugin/README.md @@ -1,44 +1,21 @@ # PyTorch Profiler TensorBoard NPU Plugin +### 下架说明 +本插件代码已不再维护,推荐使用[MindStudio Insight](https://www.hiascend.com/document/detail/zh/mindstudio/80RC1/GUI_baseddevelopmenttool/msascendinsightug/)工具获取更为强大的调优体验。 + ### 介绍 此工具是PyTorch profiling数据以及可视化的TensorBoard的插件。 \ -它支持将Ascend平台采集、解析的Pytorch Profiling数据可视化呈现,也兼容GPU数据采集、解析可视化,现已支持PyTorch 2.0GPU版本的profiling数据可视化。同时集成了精度比对的功能,支持查看loss曲线和比对两个网络的loss收敛趋势。 +它支持将Ascend平台采集、解析的Pytorch Profiling数据可视化呈现,也兼容GPU数据采集、解析可视化,支持PyTorch 2.0GPU版本的profiling数据可视化。同时集成了精度比对的功能,支持查看loss曲线和比对两个网络的loss收敛趋势。 ### 快速安装说明 * 相关依赖: pandas >= 1.0.0 ,tensorboard >= 2.11.0,protobuf <= 3.20.3 * 安装方式 - 1. pip安装(推荐) \ - * 现本插件已经上传到pypi社区,用户可在python环境下直接通过以下pip指令进行安装:\ + * 本插件已经上传到pypi社区,用户可在python环境下直接通过以下pip指令进行安装:\ `pip install torch-tb-profiler-ascend` * 也可在pypi社区上下载离线whl包,传输到无法访问公网的环境上离线安装使用。访问[下载链接](https://pypi.org/project/torch-tb-profiler-ascend/#files)选择whl包进行下载,之后便可使用指令安装(此处{version}为whl包实际版本)\ `pip install torch-tb-profiler_ascend_{version}_py3_none_any.whl` - 2. 从源代码安装 - * 从仓库下载源码: - - `git clone https://gitee.com/ascend/mstt.git` - - * 进入目录 `/plugins/tensorboard-plugins/tb_plugin` 下. - * 编译前端代码 - ``` - cd fe - # 此步骤为安装前端依赖 - yarn - # 回到上层目录执行构建指令 - cd .. - python setup.py build_fe - ``` - **注意**: 编译前端步骤需要安装[Node.js](https://nodejs.org/zh-cn/download)和[yarn](https://yarn.bootcss.com/docs/install/index.html)环境 - * 执行安装命令可直接安装: - - `pip install .` - * 或: 构建whl包安装 - - `python setup.py build_fe sdist bdist_wheel` - - 在 `/tb_plugins/profiling/tb_plugin/dist` 目录下取出whl包,使用以下指令安装(此处{version}为whl包实际版本) - - `pip install torch-tb-profiler-ascend-{version}-py3-none-any.whl` - ### 解析数据说明 * 准备profiling数据 diff --git a/plugins/tensorboard-plugins/tb_plugin/ci_scripts/install_env.sh b/plugins/tensorboard-plugins/tb_plugin/ci_scripts/install_env.sh deleted file mode 100644 index 04406ae6e..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/ci_scripts/install_env.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -set -ex - -# install pytorch -pip install numpy tensorboard typing-extensions pillow pytest -if [ "$PYTORCH_VERSION" = "nightly" ]; then - pip install --pre torch -f "https://download.pytorch.org/whl/nightly/$CUDA_VERSION/torch_nightly.html" - pip install --pre torchvision --no-deps -f "https://download.pytorch.org/whl/nightly/$CUDA_VERSION/torch_nightly.html" -elif [ "$PYTORCH_VERSION" = "1.11rc" ]; then - pip install --pre torch -f "https://download.pytorch.org/whl/test/$CUDA_VERSION/torch_test.html" - pip install --pre torchvision --no-deps -f "https://download.pytorch.org/whl/test/$CUDA_VERSION/torch_test.html" -elif [ "$PYTORCH_VERSION" = "stable" ]; then - pip install torch torchvision -fi - -python -c "import torch; print(torch.__version__, torch.version.git_version); from torch.autograd import kineto_available; print(kineto_available())" diff --git a/plugins/tensorboard-plugins/tb_plugin/docs/gpu_utilization.md b/plugins/tensorboard-plugins/tb_plugin/docs/gpu_utilization.md deleted file mode 100644 index c4f45b880..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/docs/gpu_utilization.md +++ /dev/null @@ -1,22 +0,0 @@ -* GPU Utilization: GPU busy time / all steps time. The higher, the better. All steps time is the total time of all profiler steps(or called as iterations). - GPU busy time is the time during “all steps time” when is at least one GPU kernel running on this GPU. - However, this high-level utilization metric is coarse. It can’t tell how many SMs(Stream Multiprocessors) are in use. - For example, a kernel with a single thread running continuously will get 100% GPU utilization. - -* Est. SM Efficiency: Estimated Stream Multiprocessor Efficiency. The higher, the better. This metric of a kernel, SM_Eff_K = min(blocks of this kernel / SM number of this GPU, 100%). - This overall number is the sum of all kernels' SM_Eff_K weighted by kernel's execution duration, divided by “all steps time”. - It shows GPU Stream Multiprocessors’ utilization. - Although it is finer grained than above “GPU Utilization”, it still can’t tell the whole story. - For example, a kernel with only one thread per block can’t fully utilize each SM. - -* Est. Achieved Occupancy: For most cases such as memory bandwidth bound kernels, a higher value often translates to better performance, especially when the initial value is very low. [Reference](http://developer.download.nvidia.com/GTC/PDF/GTC2012/PresentationPDF/S0514-GTC2012-GPU-Performance-Analysis.pdf). The definition of occupancy is [here](https://docs.nvidia.com/gameworks/content/developertools/desktop/analysis/report/cudaexperiments/kernellevel/achievedoccupancy.htm). - Occupancy is the ratio of active warps on an SM to the maximum number of - active warps supported by the SM. The theoretical occupancy of a kernel is upper limit occupancy of this kernel, limited by multiple - factors such as kernel shape, kernel used resource, and the GPU compute capability. - Est. Achieved Occupancy of a kernel, OCC_K = min(threads of the kernel / SM number / max threads per SM, theoretical occupancy of the kernel). - This overall number is the weighted sum of all kernels OCC_K using kernel's execution duration as weight. It shows fine-grained low-level GPU utilization. - - * Kernel Time using Tensor Cores: Total GPU Time for Tensor Core kernels / Total GPU Time for all kernels. Higher is better. - Tensor Cores are mixed precision floating point operations available for Volta GPUs (Titan V) and beyond. - The cuDNN and cuBLAS libraries contain several Tensor Cores enabled GPU kernels for most Convolution and GEMM operations. - This number shows Tensor Cores usage time ratio among all kernels on a GPU. diff --git "a/plugins/tensorboard-plugins/tb_plugin/docs/\345\205\254\347\275\221URL\350\257\264\346\230\216.xlsx" "b/plugins/tensorboard-plugins/tb_plugin/docs/\345\205\254\347\275\221URL\350\257\264\346\230\216.xlsx" deleted file mode 100644 index de0bb25fe155aa188e5670a377311e96168586e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17513 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 4: - break - p.step() - print("done") diff --git a/plugins/tensorboard-plugins/tb_plugin/examples/resnet50_autograd_api.py b/plugins/tensorboard-plugins/tb_plugin/examples/resnet50_autograd_api.py deleted file mode 100644 index 9ff5d89aa..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/examples/resnet50_autograd_api.py +++ /dev/null @@ -1,46 +0,0 @@ -import os -import torch -import torch.nn as nn -import torch.backends.cudnn as cudnn -import torch.optim -import torch.utils.data -import torchvision -import torchvision.transforms as T -import torchvision.models as models - -from torch.autograd.profiler import profile - -model = models.resnet50(pretrained=True) -model.cuda() -cudnn.benchmark = True - -transform = T.Compose([T.Resize(256), T.CenterCrop(224), T.ToTensor()]) -trainset = torchvision.datasets.CIFAR10(root='./data', train=True, - download=True, transform=transform) -trainloader = torch.utils.data.DataLoader(trainset, batch_size=32, - shuffle=True, num_workers=0) - -criterion = nn.CrossEntropyLoss().cuda() -optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9) -device = torch.device("cuda:0") -model.train() - -with profile(use_cuda=True, use_kineto=True, record_shapes=True) as p: - for step, data in enumerate(trainloader, 0): - print("step:{}".format(step)) - inputs, labels = data[0].to(device=device), data[1].to(device=device) - - outputs = model(inputs) - loss = criterion(outputs, labels) - - optimizer.zero_grad() - loss.backward() - optimizer.step() - if step >= 5: - break - -try: - os.mkdir("result") -except Exception: - pass -p.export_chrome_trace("./result/worker0.pt.trace.json") diff --git a/plugins/tensorboard-plugins/tb_plugin/examples/resnet50_ddp_profiler.py b/plugins/tensorboard-plugins/tb_plugin/examples/resnet50_ddp_profiler.py deleted file mode 100644 index 0ebcfe989..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/examples/resnet50_ddp_profiler.py +++ /dev/null @@ -1,95 +0,0 @@ -import os - -import torch -import torch.backends.cudnn as cudnn -import torch.distributed as dist -import torch.multiprocessing as mp -import torch.nn as nn -import torch.optim -import torch.profiler -import torch.utils.data -import torchvision -import torchvision.models as models -import torchvision.transforms as T -from torch.nn.parallel import DistributedDataParallel as DDP - - -def example(rank, use_gpu=True): - if use_gpu: - torch.cuda.set_device(rank) - model = models.resnet50(pretrained=True).to(rank) - model.cuda() - cudnn.benchmark = True - model = DDP(model, device_ids=[rank]) - else: - model = models.resnet50(pretrained=True) - model = DDP(model) - - # Use gradient compression to reduce communication - # model.register_comm_hook(None, default.fp16_compress_hook) - # or - # state = powerSGD_hook.PowerSGDState(process_group=None,matrix_approximation_rank=1,start_powerSGD_iter=2) - # model.register_comm_hook(state, powerSGD_hook.powerSGD_hook) - - transform = T.Compose([T.Resize(256), T.CenterCrop(224), T.ToTensor()]) - trainset = torchvision.datasets.CIFAR10(root='./data', train=True, - download=True, transform=transform) - train_sampler = torch.utils.data.distributed.DistributedSampler(trainset) - trainloader = torch.utils.data.DataLoader(trainset, batch_size=32, sampler=train_sampler, - shuffle=False, num_workers=4) - - if use_gpu: - criterion = nn.CrossEntropyLoss().to(rank) - else: - criterion = nn.CrossEntropyLoss() - optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9) - model.train() - - with torch.profiler.profile( - activities=[ - torch.profiler.ProfilerActivity.CPU, - torch.profiler.ProfilerActivity.CUDA], - schedule=torch.profiler.schedule( - wait=2, - warmup=2, - active=5), - with_stack=False, - on_trace_ready=torch.profiler.tensorboard_trace_handler('./result'), - record_shapes=True - ) as p: - for step, data in enumerate(trainloader, 0): - print("step:{}".format(step)) - if use_gpu: - inputs, labels = data[0].to(rank), data[1].to(rank) - else: - inputs, labels = data[0], data[1] - outputs = model(inputs) - loss = criterion(outputs, labels) - - optimizer.zero_grad() - loss.backward() - optimizer.step() - p.step() - if step + 1 >= 10: - break - - -def init_process(rank, size, fn, backend='nccl'): - """ Initialize the distributed environment. """ - os.environ['MASTER_ADDR'] = '127.0.0.1' - os.environ['MASTER_PORT'] = '29500' - dist.init_process_group(backend, rank=rank, world_size=size) - fn(rank, size) - - -if __name__ == "__main__": - size = 4 - processes = [] - mp.set_start_method("spawn") - for rank in range(size): - p = mp.Process(target=init_process, args=(rank, size, example)) - p.start() - processes.append(p) - - for p in processes: - p.join() diff --git a/plugins/tensorboard-plugins/tb_plugin/examples/resnet50_profiler_api.py b/plugins/tensorboard-plugins/tb_plugin/examples/resnet50_profiler_api.py deleted file mode 100644 index cdfa14aa7..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/examples/resnet50_profiler_api.py +++ /dev/null @@ -1,52 +0,0 @@ -import torch -import torch.nn as nn -import torch.backends.cudnn as cudnn -import torch.optim -import torch.utils.data -import torchvision -import torchvision.transforms as T -import torchvision.models as models - -import torch.profiler - -model = models.resnet50(pretrained=True) -model.cuda() -cudnn.benchmark = True - -transform = T.Compose([T.Resize(256), T.CenterCrop(224), T.ToTensor()]) -trainset = torchvision.datasets.CIFAR10(root='./data', train=True, - download=True, transform=transform) -trainloader = torch.utils.data.DataLoader(trainset, batch_size=32, - shuffle=True, num_workers=4) - -criterion = nn.CrossEntropyLoss().cuda() -optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9) -device = torch.device("cuda:0") -model.train() - -with torch.profiler.profile( - activities=[ - torch.profiler.ProfilerActivity.CPU, - torch.profiler.ProfilerActivity.CUDA], - schedule=torch.profiler.schedule( - wait=1, - warmup=1, - active=2), - on_trace_ready=torch.profiler.tensorboard_trace_handler('./result', worker_name='worker0'), - record_shapes=True, - profile_memory=True, # This will take 1 to 2 minutes. Setting it to False could greatly speedup. - with_stack=True -) as p: - for step, data in enumerate(trainloader, 0): - print("step:{}".format(step)) - inputs, labels = data[0].to(device=device), data[1].to(device=device) - - outputs = model(inputs) - loss = criterion(outputs, labels) - - optimizer.zero_grad() - loss.backward() - optimizer.step() - if step + 1 >= 4: - break - p.step() diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/.gitignore b/plugins/tensorboard-plugins/tb_plugin/fe/.gitignore deleted file mode 100644 index e6a926968..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/dist -/node_modules -*.log diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/README.md b/plugins/tensorboard-plugins/tb_plugin/fe/README.md deleted file mode 100644 index aa9cf2587..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Pytorch Profiler - -### Install & Build - -1. install [Node.js](https://nodejs.org/) - * ```bash - curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - - sudo apt-get install -y nodejs``` -2. install [Yarn](https://yarnpkg.com/) - * ```bash - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list - sudo apt update && sudo apt install yarn - ``` -3. shell `yarn` to prepare JS dependency -4. shell `yarn build:copy` -5. Go to `tb_plugin` folder and install the package using `python setup.py develop` -6. Launch tensorboard diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/index.html b/plugins/tensorboard-plugins/tb_plugin/fe/index.html deleted file mode 100644 index a58ddc088..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -
- - diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/package.json b/plugins/tensorboard-plugins/tb_plugin/fe/package.json deleted file mode 100644 index 5edca28fa..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "fe", - "private": "true", - "version": "1.0.0", - "main": "index.js", - "scripts": { - "build": "cross-env NODE_ENV=production webpack", - "build:copy": "yarn build && node ./update-static.js", - "build:dev": "webpack", - "dev": "webpack serve", - "prettier": "prettier --config ./prettier.json --write ./src/**/*.{ts,tsx} ./*.js" - }, - "dependencies": { - "@ant-design/icons": "^5.2.6", - "@babel/runtime": "^7.13.10", - "@material-ui/core": "^4.11.3", - "@material-ui/icons": "^4.11.2", - "antd": "^4.23.0", - "clsx": "^1.1.1", - "echarts": "^5.4.2", - "portable-fetch": "^3.0.0", - "react": "^16.13.1", - "react-dom": "^16.13.1", - "react-flame-graph": "^1.4.0", - "url": "^0.11.1" - }, - "devDependencies": { - "@types/react": "^17.0.69", - "@types/react-dom": "^18.2.14", - "cross-env": "^7.0.2", - "css-loader": "^5.2.4", - "html-webpack-plugin": "^5.3.1", - "inline-chunk-html-plugin": "^1.1.1", - "prettier": "^2.1.2", - "style-loader": "^2.0.0", - "ts-loader": "^8.0.18", - "typescript": "^4.0.3", - "webpack": "^5.28.0", - "webpack-cli": "^4.5.0", - "webpack-dev-server": "^4.7.4" - }, - "resolutions": { - "portable-fetch/**/node-fetch": "^2.6.1", - "webpack/**/browserslist": "^4.16.5", - "postcss/**/nanoid": "^3.1.31" - } -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/prettier.json b/plugins/tensorboard-plugins/tb_plugin/fe/prettier.json deleted file mode 100644 index ef5789da9..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/prettier.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "parser": "typescript", - "semi": true, - "singleQuote": true, - "jsxSingleQuote": false, - "bracketSpacing": true, - "tabWidth": 2, - "useTabs": false, - "trailingComma": "all", - "proseWrap": "always", - "endOfLine": "lf" -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/scripts/add_header.py b/plugins/tensorboard-plugins/tb_plugin/fe/scripts/add_header.py deleted file mode 100644 index 69bc6c055..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/scripts/add_header.py +++ /dev/null @@ -1,51 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. -# Copyright(c) 2023 Huawei Technologies. -# All rights reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Modifications: Add visualization of PyTorch Ascend profiling. -# -------------------------------------------------------------------------- -# !/usr/bin/env python -import glob -import os -import sys - -HEADER = '''/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -''' - - -def add_header(file): - with open(file, 'r') as f: - contents = f.readlines() - - # do nothing if there is already header - if contents and contents[0].startswith('/*-'): - return - - with open(file, 'w') as out: - out.write(HEADER) - out.writelines(contents) - - -if __name__ == '__main__': - directory = sys.argv[1] - if not os.path.isdir(directory): - raise ValueError('{} is not a directory'.format(directory)) - - for ts_file in glob.glob(directory + '/*.ts'): - add_header(ts_file) diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/scripts/build.sh b/plugins/tensorboard-plugins/tb_plugin/fe/scripts/build.sh deleted file mode 100644 index 014a26e26..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/scripts/build.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -set -e - -current_dir="$( cd "$( dirname "$0" )" && pwd )" -FE_ROOT="$(dirname "$current_dir")" -cd $FE_ROOT/ - -java -jar $FE_ROOT/swagger-codegen-cli.jar generate -i $FE_ROOT/src/api/openapi.yaml -l typescript-fetch -o $FE_ROOT/src/api/generated/ --additional-properties modelPropertyNaming=original -rm $FE_ROOT/src/api/generated/api_test.spec.ts -yarn prettier --end-of-line lf -python $FE_ROOT/scripts/add_header.py $FE_ROOT/src/api/generated/ - -yarn build:copy diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/scripts/setup.sh b/plugins/tensorboard-plugins/tb_plugin/fe/scripts/setup.sh deleted file mode 100644 index fb2680d98..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/scripts/setup.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -set -e - -current_dir="$( cd "$( dirname "$0" )" && pwd )" -FE_ROOT="$(dirname "$current_dir")" - -# # install nodejs -if ! command -v node &> /dev/null -then - curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - - sudo apt-get install -y nodejs -fi - -# install yarn -if ! command -v yarn &> /dev/null -then - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list - sudo apt update && sudo apt install yarn -fi - -# download swagger-codegen-cli -if [[ ! -f "$FE_ROOT/swagger-codegen-cli.jar" ]]; then - wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.25/swagger-codegen-cli-3.0.25.jar -O swagger-codegen-cli.jar -fi diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/README.md b/plugins/tensorboard-plugins/tb_plugin/fe/src/api/README.md deleted file mode 100644 index 06208c419..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# How to generate the api.ts - -## Prerequisites -1. install java -2. run command -```bash - cd fe - wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.25/swagger-codegen-cli-3.0.25.jar -O swagger-codegen-cli.jar - java -jar swagger-codegen-cli.jar generate -i ./src/api/openapi.yaml -l typescript-fetch -o ./src/api/generated/ --additional-properties modelPropertyNaming=original - rm ./src/api/generated/api_test.spec.ts - yarn prettier --end-of-line lf - python ./scripts/add_header.py ./src/api/generated/ -``` diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/api.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/api.ts deleted file mode 100644 index 29cde96eb..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/api.ts +++ /dev/null @@ -1,4724 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Modifications: Add visualization of PyTorch Ascend profiling. - *--------------------------------------------------------------------------------------------*/ - -/// -// tslint:disable -/** - * Pytorch profile API - * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) - * - * OpenAPI spec version: 1.0.0 - * - * - * NOTE: This file is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the file manually. - */ - -import * as url from 'url'; -import * as portableFetch from 'portable-fetch'; -import { Configuration } from './configuration'; - -const BASE_PATH = '.'.replace(/\/+$/, ''); - -/** - * - * @export - */ -export const COLLECTION_FORMATS = { - csv: ',', - ssv: ' ', - tsv: '\t', - pipes: '|', -}; - -/** - * - * @export - * @interface FetchAPI - */ -export interface FetchAPI { - (url: string, init?: any): Promise; -} - -/** - * - * @export - * @interface FetchArgs - */ -export interface FetchArgs { - url: string; - options: any; -} - -/** - * - * @export - * @class BaseAPI - */ -export class BaseAPI { - protected configuration: Configuration; - - constructor( - configuration?: Configuration, - protected basePath: string = BASE_PATH, - protected fetch: FetchAPI = portableFetch - ) { - if (configuration) { - this.configuration = configuration; - this.basePath = configuration.basePath || this.basePath; - } - } -} - -/** - * - * @export - * @class RequiredError - * @extends {Error} - */ -export class RequiredError extends Error { - name: 'RequiredError'; - constructor(public field: string, msg?: string) { - super(msg); - } -} - -/** - * - * @export - * @interface CallStackTableData - */ -export interface CallStackTableData extends Array {} -/** - * - * @export - * @interface CallStackTableDataInner - */ -export interface CallStackTableDataInner { - /** - * - * @type {string} - * @memberof CallStackTableDataInner - */ - name: string; - /** - * - * @type {string} - * @memberof CallStackTableDataInner - */ - input_shape?: string; - /** - * - * @type {number} - * @memberof CallStackTableDataInner - */ - calls: number; - /** - * - * @type {number} - * @memberof CallStackTableDataInner - */ - device_self_duration?: number; - /** - * - * @type {number} - * @memberof CallStackTableDataInner - */ - device_total_duration?: number; - /** - * - * @type {number} - * @memberof CallStackTableDataInner - */ - host_self_duration: number; - /** - * - * @type {number} - * @memberof CallStackTableDataInner - */ - host_total_duration: number; - /** - * - * @type {string} - * @memberof CallStackTableDataInner - */ - call_stack?: string; - /** - * - * @type {string} - * @memberof CallStackTableDataInner - */ - tc_eligible?: string; - /** - * - * @type {number} - * @memberof CallStackTableDataInner - */ - tc_self_ratio?: number; - /** - * - * @type {number} - * @memberof CallStackTableDataInner - */ - tc_total_ratio?: number; -} -/** - * - * @export - * @interface DiffNode - */ -export interface DiffNode { - /** - * - * @type {OpStats} - * @memberof DiffNode - */ - left: OpStats; - /** - * - * @type {OpStats} - * @memberof DiffNode - */ - right: OpStats; - /** - * - * @type {string} - * @memberof DiffNode - */ - path: string; - /** - * - * @type {Array} - * @memberof DiffNode - */ - children: Array; -} -/** - * - * @export - * @interface DistributedGraph - */ -export interface DistributedGraph { - /** - * - * @type {DistributedGraphMetadata} - * @memberof DistributedGraph - */ - metadata: DistributedGraphMetadata; - /** - * - * @type {any} - * @memberof DistributedGraph - */ - data: any; -} -/** - * - * @export - * @interface DistributedGraphMetadata - */ -export interface DistributedGraphMetadata { - /** - * - * @type {string} - * @memberof DistributedGraphMetadata - */ - title: string; - /** - * - * @type {Array} - * @memberof DistributedGraphMetadata - */ - legends: Array; - /** - * - * @type {string} - * @memberof DistributedGraphMetadata - */ - units: string; -} -/** - * - * @export - * @interface Environment - */ -export interface Environment { - /** - * - * @type {string} - * @memberof Environment - */ - title: string; - /** - * - * @type {string} - * @memberof Environment - */ - value: string; -} -/** - * - * @export - * @interface GpuInfo - */ -export interface GpuInfo { - /** - * - * @type {GpuInfoMetadata} - * @memberof GpuInfo - */ - metadata: GpuInfoMetadata; - /** - * - * @type {any} - * @memberof GpuInfo - */ - data: any; -} -/** - * - * @export - * @interface GpuInfoMetadata - */ -export interface GpuInfoMetadata { - /** - * - * @type {string} - * @memberof GpuInfoMetadata - */ - title: string; -} -/** - * - * @export - * @interface GpuMetric - */ -export interface GpuMetric { - /** - * - * @type {string} - * @memberof GpuMetric - */ - title: string; - /** - * - * @type {string} - * @memberof GpuMetric - */ - value: string; -} -/** - * - * @export - * @interface GpuMetrics - */ -export interface GpuMetrics { - /** - * - * @type {Array} - * @memberof GpuMetrics - */ - data: Array; - /** - * - * @type {string} - * @memberof GpuMetrics - */ - tooltip: string; -} -/** - * - * @export - * @interface Graph - */ -export interface Graph { - /** - * - * @type {string} - * @memberof Graph - */ - title?: string; - /** - * - * @type {Array} - * @memberof Graph - */ - columns: Array; - /** - * - * @type {Array>} - * @memberof Graph - */ - rows: Array>; -} -/** - * - * @export - * @interface ValueAndTooltip - */ -export interface ValueAndTooltip { - /** - * - * @type {string | number} - * @memberof ValueAndTooltip - */ - value: string | number; - /** - * - * @type {string} - * @memberof ValueAndTooltip - */ - tooltip?: string; -} -/** - * - * @export - * @interface StepedGraph - */ -export interface StepedGraph { - /** - * - * @type {string} - * @memberof StepedGraph - */ - title?: string; - /** - * - * @type {Array} - * @memberof StepedGraph - */ - columns: Array; - /** - * - * @type {Array>} - * @memberof StepedGraph - */ - rows: Array>; -} -/** - * - * @export - * @interface GraphAscend - */ -export interface GraphAscend { - /** - * - * @type {string} - * @memberof GraphAscend - */ - title?: string; - /** - * - * @type {Array} - * @memberof GraphAscend - */ - columns: Array; - /** - * - * @type {any} - * @memberof GraphAscend - */ - rows: any; -} -/** - * - * @export - * @interface GraphColumn - */ -export interface GraphColumn { - /** - * - * @type {string} - * @memberof GraphColumn - */ - type: string; - /** - * - * @type {string} - * @memberof GraphColumn - */ - name: string; - /** - * - * @type {string} - * @memberof GraphColumn - */ - role?: string; - /** - * - * @type {GraphColumnP} - * @memberof GraphColumn - */ - p?: GraphColumnP; -} -/** - * - * @export - * @interface GraphColumnP - */ -export interface GraphColumnP { - /** - * - * @type {boolean} - * @memberof GraphColumnP - */ - html?: boolean; -} -/** - * - * @export - * @interface InlineResponse200 - */ -export interface InlineResponse200 { - /** - * - * @type {TableMetadata} - * @memberof InlineResponse200 - */ - metadata: TableMetadata; - /** - * - * @type {OperationTableData} - * @memberof InlineResponse200 - */ - data: OperationTableData; -} -/** - * - * @export - * @interface InlineResponse2001 - */ -export interface InlineResponse2001 { - /** - * - * @type {TableMetadata} - * @memberof InlineResponse2001 - */ - metadata: TableMetadata; - /** - * - * @type {CallStackTableData} - * @memberof InlineResponse2001 - */ - data: CallStackTableData; -} -/** - * - * @export - * @interface InlineResponse2002 - */ -export interface InlineResponse2002 { - /** - * - * @type {GpuInfoMetadata} - * @memberof InlineResponse2002 - */ - metadata: GpuInfoMetadata; - /** - * - * @type {any} - * @memberof InlineResponse2002 - */ - data: any; -} -/** - * - * @export - * @interface KernelGraph - */ -export interface KernelGraph { - /** - * - * @type {Graph} - * @memberof KernelGraph - */ - total: Graph; - device_target: string; -} -/** - * - * @export - * @interface KeyedColumn - */ -export interface KeyedColumn { - /** - * - * @type {string} - * @memberof KeyedColumn - */ - type: string; - /** - * - * @type {string} - * @memberof KeyedColumn - */ - name: string; - /** - * - * @type {string} - * @memberof KeyedColumn - */ - key: string; -} -/** - * - * @export - * @interface MemoryCurveDataAll - */ -export interface MemoryCurveDataAll { - /** - * - * @type {string} - * @memberof MemoryCurveDataAll - */ - default_device: string; - /** - * - * @type {Array} - * @memberof MemoryCurveDataAll - */ - devices: Array; - /** - * - * @type {MemoryCurveDataAscend} - * @memberof MemoryCurveDataAll - */ - total: MemoryCurveDataAscend; - /** - * - * @type {MemoryCurveDataAscend} - * @memberof MemoryCurveDataAll - */ - ptaGe: MemoryCurveDataAscend; -} -/** - * - * @export - * @interface MemoryCurveData - */ -export interface MemoryCurveData { - /** - * - * @type {MemoryCurveDataMetadata} - * @memberof MemoryCurveData - */ - metadata: MemoryCurveDataMetadata; - /** - * - * @type {Array} - * @memberof MemoryCurveData - */ - columns: Array; - /** - * - * @type {any} - * @memberof MemoryCurveData - */ - rows: any; -} -/** - * - * @export - * @interface MemoryCurveDataAscend - */ -export interface MemoryCurveDataAscend { - /** - * - * @type {MemoryCurveDataMetadata} - * @memberof MemoryCurveDataAscend - */ - metadata: MemoryCurveDataMetadata; - /** - * - * @type {any} - * @memberof MemoryCurveDataAscend - */ - columns: any; - /** - * - * @type {any} - * @memberof MemoryCurveDataAscend - */ - rows: any; -} -/** - * - * @export - * @interface MemoryCurveDataMetadata - */ -export interface MemoryCurveDataMetadata { - /** - * - * @type {string} - * @memberof MemoryCurveDataMetadata - */ - default_device: string; - /** - * - * @type {Array} - * @memberof MemoryCurveDataMetadata - */ - devices: Array; - /** - * - * @type {any} - * @memberof MemoryCurveDataMetadata - */ - peaks: any; - /** - * - * @type {any} - * @memberof MemoryCurveDataMetadata - */ - totals: any; - /** - * - * @type {number} - * @memberof MemoryCurveDataMetadata - */ - first_ts: number; - /** - * - * @type {string} - * @memberof MemoryCurveDataMetadata - */ - time_metric: string; - /** - * - * @type {string} - * @memberof MemoryCurveDataMetadata - */ - memory_metric: string; - /** - * - * @type {number} - * @memberof MemoryCurveDataMetadata - */ - time_factor: number; - /** - * - * @type {number} - * @memberof MemoryCurveDataMetadata - */ - memory_factor: number; -} -/** - * - * @export - * @interface MemoryEventsData - */ -export interface MemoryEventsData { - /** - * - * @type {MemoryEventsTableMetadata} - * @memberof MemoryEventsData - */ - metadata: MemoryEventsTableMetadata; - /** - * - * @type {Array} - * @memberof MemoryEventsData - */ - columns: Array; - /** - * - * @type {any} - * @memberof MemoryEventsData - */ - rows: any; -} -/** - * - * @exports - * @interface MemoryEventsDataAll - */ -export interface MemoryEventsDataAll { - /** - * - * @type {MemoryEventsData} - * @memberof MemoryEventsDataAll - */ - operator: MemoryEventsData; - /** - * - * @type {MemoryEventsData} - * @memberof MemoryEventsDataAll - */ - component: MemoryEventsData; -} -/** - * - * @export - * @interface MemoryEventsTableMetadata - */ -export interface MemoryEventsTableMetadata { - /** - * - * @type {string} - * @memberof MemoryEventsTableMetadata - */ - title: string; - /** - * - * @type {string} - * @memberof MemoryEventsTableMetadata - */ - default_device: string; - /** - * - * @type {string} - * @memberof MemoryEventsTableMetadata - */ - search?: string; - /** - * - * @type {string} - * @memberof MemoryEventsTableMetadata - */ - sort?: string; -} -/** - * - * @export - * @interface MemoryStatsData - */ -export interface MemoryStatsData { - /** - * - * @type {MemoryStatsTableMetadata} - * @memberof MemoryStatsData - */ - metadata: MemoryStatsTableMetadata; - /** - * - * @type {Array} - * @memberof MemoryStatsData - */ - columns: Array; - /** - * - * @type {any} - * @memberof MemoryStatsData - */ - rows: any; -} -/** - * - * @export - * @interface MemoryStatsTableMetadata - */ -export interface MemoryStatsTableMetadata { - /** - * - * @type {string} - * @memberof MemoryStatsTableMetadata - */ - title: string; - /** - * - * @type {string} - * @memberof MemoryStatsTableMetadata - */ - default_device: string; - /** - * - * @type {string} - * @memberof MemoryStatsTableMetadata - */ - search: string; - /** - * - * @type {string} - * @memberof MemoryStatsTableMetadata - */ - sort: string; -} -/** - * - * @export - * @interface ModuleStats - */ -export interface ModuleStats { - /** - * - * @type {string} - * @memberof ModuleStats - */ - name: string; - /** - * - * @type {string} - * @memberof ModuleStats - */ - id: string; - /** - * - * @type {number} - * @memberof ModuleStats - */ - occurences: number; - /** - * - * @type {number} - * @memberof ModuleStats - */ - operators: number; - /** - * - * @type {number} - * @memberof ModuleStats - */ - host_duration: number; - /** - * - * @type {number} - * @memberof ModuleStats - */ - self_host_duration: number; - /** - * - * @type {number} - * @memberof ModuleStats - */ - device_duration: number; - /** - * - * @type {number} - * @memberof ModuleStats - */ - self_device_duration: number; - /** - * - * @type {number} - * @memberof ModuleStats - */ - avg_duration: number; - /** - * - * @type {Array} - * @memberof ModuleStats - */ - children: Array; -} -/** - * - * @export - * @interface ModuleViewData - */ -export interface ModuleViewData { - /** - * - * @type {Array} - * @memberof ModuleViewData - */ - columns: Array; - /** - * - * @type {Array} - * @memberof ModuleViewData - */ - data: Array; -} -/** - * - * @export - * @interface OpAgg - */ -export interface OpAgg { - /** - * - * @type {string} - * @memberof OpAgg - */ - name: string; - /** - * - * @type {number} - * @memberof OpAgg - */ - calls: number; - /** - * - * @type {number} - * @memberof OpAgg - */ - host_duration: number; - /** - * - * @type {number} - * @memberof OpAgg - */ - device_duration: number; - /** - * - * @type {number} - * @memberof OpAgg - */ - self_host_duration: number; - /** - * - * @type {number} - * @memberof OpAgg - */ - self_device_duration: number; -} -/** - * - * @export - * @interface OpStats - */ -export interface OpStats { - /** - * - * @type {string} - * @memberof OpStats - */ - name: string; - /** - * - * @type {number} - * @memberof OpStats - */ - duration: number; - /** - * - * @type {number} - * @memberof OpStats - */ - device_duration: number; - /** - * - * @type {number} - * @memberof OpStats - */ - total_duration: number; - /** - * - * @type {Array} - * @memberof OpStats - */ - aggs: Array; -} -/** - * - * @export - * @interface OperationTableData - */ -export interface OperationTableData extends Array {} -/** - * - * @export - * @interface OperationTableDataInner - */ -export interface OperationTableDataInner { - /** - * - * @type {string} - * @memberof OperationTableDataInner - */ - name: string; - /** - * - * @type {string} - * @memberof OperationTableDataInner - */ - input_shape?: string; - /** - * - * @type {number} - * @memberof OperationTableDataInner - */ - calls: number; - /** - * - * @type {number} - * @memberof OperationTableDataInner - */ - device_self_duration?: number; - /** - * - * @type {number} - * @memberof OperationTableDataInner - */ - device_total_duration?: number; - /** - * - * @type {number} - * @memberof OperationTableDataInner - */ - host_self_duration: number; - /** - * - * @type {number} - * @memberof OperationTableDataInner - */ - host_total_duration: number; - /** - * - * @type {boolean} - * @memberof OperationTableDataInner - */ - has_call_stack: boolean; - /** - * - * @type {string} - * @memberof OperationTableDataInner - */ - tc_eligible?: string; - /** - * - * @type {number} - * @memberof OperationTableDataInner - */ - tc_self_ratio?: number; - /** - * - * @type {number} - * @memberof OperationTableDataInner - */ - tc_total_ratio?: number; -} -/** - * - * @export - * @interface OperatorGraph - */ -export interface OperatorGraph { - /** - * - * @type {Graph} - * @memberof OperatorGraph - */ - device_total_time: Graph; - /** - * - * @type {Graph} - * @memberof OperatorGraph - */ - device_self_time: Graph; - /** - * - * @type {Graph} - * @memberof OperatorGraph - */ - host_total_time: Graph; - /** - * - * @type {Graph} - * @memberof OperatorGraph - */ - host_self_time: Graph; -} -/** - * - * @export - * @interface OperatorNode - */ -export interface OperatorNode { - /** - * - * @type {string} - * @memberof OperatorNode - */ - name: string; - /** - * - * @type {number} - * @memberof OperatorNode - */ - start_time: number; - /** - * - * @type {number} - * @memberof OperatorNode - */ - end_time: number; - /** - * - * @type {string} - * @memberof OperatorNode - */ - type: string; - /** - * - * @type {number} - * @memberof OperatorNode - */ - tid: number; - /** - * - * @type {Array} - * @memberof OperatorNode - */ - children: Array; -} -/** - * - * @export - * @interface Overview - */ -export interface Overview { - /** - * - * @type {Array} - * @memberof Overview - */ - performance: Array; - /** - * - * @type {Array} - * @memberof Overview - */ - environments: Array; - /** - * - * @type {StepedGraph} - * @memberof Overview - */ - steps: StepedGraph; - /** - * - * @type {string} - * @memberof Overview - */ - recommendations: string; - /** - * - * @type {GpuMetrics} - * @memberof Overview - */ - gpu_metrics?: GpuMetrics; -} -/** - * - * @export - * @interface Performance - */ -export interface Performance { - /** - * - * @type {string} - * @memberof Performance - */ - name: string; - /** - * - * @type {string} - * @memberof Performance - */ - description?: string; - /** - * - * @type {string} - * @memberof Performance - */ - value?: string; - /** - * - * @type {string} - * @memberof Performance - */ - extra?: string; - /** - * - * @type {Array} - * @memberof Performance - */ - children?: Array; -} -/** - * - * @export - * @interface Runs - */ -export interface Runs { - /** - * - * @type {Array} - * @memberof Runs - */ - runs: Array; - /** - * - * @type {boolean} - * @memberof Runs - */ - loading: boolean; -} -/** - * - * @export - * @interface TableData - */ -export interface TableData { - /** - * - * @type {Graph} - * @memberof TableData - */ - data: Graph; - /** - * - * @type {TableMetadata} - * @memberof TableData - */ - metadata: TableMetadata; -} -/** - * - * @export - * @interface TableMetadata - */ -export interface TableMetadata { - /** - * - * @type {string} - * @memberof TableMetadata - */ - sort: string; - /** - * - * @type {any} - * @memberof TableMetadata - */ - tooltips?: any; -} -/** - * - * @export - * @interface TensorCoresGraph - */ -export interface TensorCoresGraph { - /** - * - * @type {Graph} - * @memberof TensorCoresGraph - */ - total: Graph; -} -/** - * - * @export - * @interface ValueAndFormat - */ -export interface ValueAndFormat { - /** - * - * @type {string | number | boolean} - * @memberof ValueAndFormat - */ - v: string | number | boolean; - /** - * - * @type {string} - * @memberof ValueAndFormat - */ - f: string; -} -/** - * - * @exports - * @interface Views - */ -export interface Views { - /** - * - * @type {string} - * @memberof Views - */ - device_target: string; - /** - * - * @type {Array} - * @memberof Views - */ - views: Array; -} -/** - * DefaultApi - fetch parameter creator - * @export - */ -export const DefaultApiFetchParamCreator = function ( - configuration?: Configuration -) { - return { - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} exp_run - * @param {string} exp_worker - * @param {string} exp_span - * @param {string} [path] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - diffnodeGet( - run: string, - worker: string, - span: string, - exp_run: string, - exp_worker: string, - exp_span: string, - path?: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling diffnodeGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling diffnodeGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling diffnodeGet.' - ); - } - // verify required parameter 'exp_run' is not null or undefined - if (exp_run === null || exp_run === undefined) { - throw new RequiredError( - 'exp_run', - 'Required parameter exp_run was null or undefined when calling diffnodeGet.' - ); - } - // verify required parameter 'exp_worker' is not null or undefined - if (exp_worker === null || exp_worker === undefined) { - throw new RequiredError( - 'exp_worker', - 'Required parameter exp_worker was null or undefined when calling diffnodeGet.' - ); - } - // verify required parameter 'exp_span' is not null or undefined - if (exp_span === null || exp_span === undefined) { - throw new RequiredError( - 'exp_span', - 'Required parameter exp_span was null or undefined when calling diffnodeGet.' - ); - } - const localVarPath = `/diffnode`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - if (exp_run !== undefined) { - localVarQueryParameter.exp_run = exp_run; - } - - if (exp_worker !== undefined) { - localVarQueryParameter.exp_worker = exp_worker; - } - - if (exp_span !== undefined) { - localVarQueryParameter.exp_span = exp_span; - } - - if (path !== undefined) { - localVarQueryParameter.path = path; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - distributedCommopsGet( - run: string, - worker: string, - span: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling distributedCommopsGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling distributedCommopsGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling distributedCommopsGet.' - ); - } - const localVarPath = `/distributed/commops`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - distributedGpuinfoGet( - run: string, - worker: string, - span: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling distributedGpuinfoGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling distributedGpuinfoGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling distributedGpuinfoGet.' - ); - } - const localVarPath = `/distributed/gpuinfo`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - distributedOverlapGet( - run: string, - worker: string, - span: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling distributedOverlapGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling distributedOverlapGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling distributedOverlapGet.' - ); - } - const localVarPath = `/distributed/overlap`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - distributedWaittimeGet( - run: string, - worker: string, - span: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling distributedWaittimeGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling distributedWaittimeGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling distributedWaittimeGet.' - ); - } - const localVarPath = `/distributed/waittime`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - kernelGet( - run: string, - worker: string, - span: string, - group_by: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling kernelGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling kernelGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling kernelGet.' - ); - } - // verify required parameter 'group_by' is not null or undefined - if (group_by === null || group_by === undefined) { - throw new RequiredError( - 'group_by', - 'Required parameter group_by was null or undefined when calling kernelGet.' - ); - } - const localVarPath = `/kernel`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - if (group_by !== undefined) { - localVarQueryParameter.group_by = group_by; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} [group_by] Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - kernelTableGet( - run: string, - worker: string, - span: string, - group_by?: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling kernelTableGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling kernelTableGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling kernelTableGet.' - ); - } - const localVarPath = `/kernel/table`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - if (group_by !== undefined) { - localVarQueryParameter.group_by = group_by; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - kernelTcPieGet( - run: string, - worker: string, - span: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling kernelTcPieGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling kernelTcPieGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling kernelTcPieGet.' - ); - } - const localVarPath = `/kernel/tc_pie`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - memoryCurveGet( - run: string, - worker: string, - span: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling memoryCurveGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling memoryCurveGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling memoryCurveGet.' - ); - } - const localVarPath = `/memory_curve`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {number} [start_ts] - * @param {number} [end_ts] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - memoryEventsGet( - run: string, - worker: string, - span: string, - start_ts?: number, - end_ts?: number, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling memoryEventsGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling memoryEventsGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling memoryEventsGet.' - ); - } - const localVarPath = `/memory_events`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - if (start_ts !== undefined) { - localVarQueryParameter.start_ts = start_ts; - } - - if (end_ts !== undefined) { - localVarQueryParameter.end_ts = end_ts; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {number} [start_ts] - * @param {number} [end_ts] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - memoryGet( - run: string, - worker: string, - span: string, - start_ts?: number, - end_ts?: number, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling memoryGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling memoryGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling memoryGet.' - ); - } - const localVarPath = `/memory`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - if (start_ts !== undefined) { - localVarQueryParameter.start_ts = start_ts; - } - - if (end_ts !== undefined) { - localVarQueryParameter.end_ts = end_ts; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - moduleGet( - run: string, - worker: string, - span: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling moduleGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling moduleGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling moduleGet.' - ); - } - const localVarPath = `/module`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - operationGet( - run: string, - worker: string, - span: string, - group_by: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling operationGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling operationGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling operationGet.' - ); - } - // verify required parameter 'group_by' is not null or undefined - if (group_by === null || group_by === undefined) { - throw new RequiredError( - 'group_by', - 'Required parameter group_by was null or undefined when calling operationGet.' - ); - } - const localVarPath = `/operation`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - if (group_by !== undefined) { - localVarQueryParameter.group_by = group_by; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {string} op_name - * @param {string} [input_shape] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - operationStackGet( - run: string, - worker: string, - span: string, - group_by: string, - op_name: string, - input_shape?: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling operationStackGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling operationStackGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling operationStackGet.' - ); - } - // verify required parameter 'group_by' is not null or undefined - if (group_by === null || group_by === undefined) { - throw new RequiredError( - 'group_by', - 'Required parameter group_by was null or undefined when calling operationStackGet.' - ); - } - // verify required parameter 'op_name' is not null or undefined - if (op_name === null || op_name === undefined) { - throw new RequiredError( - 'op_name', - 'Required parameter op_name was null or undefined when calling operationStackGet.' - ); - } - const localVarPath = `/operation/stack`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - if (group_by !== undefined) { - localVarQueryParameter.group_by = group_by; - } - - if (op_name !== undefined) { - localVarQueryParameter.op_name = op_name; - } - - if (input_shape !== undefined) { - localVarQueryParameter.input_shape = input_shape; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - operationTableGet( - run: string, - worker: string, - span: string, - group_by: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling operationTableGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling operationTableGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling operationTableGet.' - ); - } - // verify required parameter 'group_by' is not null or undefined - if (group_by === null || group_by === undefined) { - throw new RequiredError( - 'group_by', - 'Required parameter group_by was null or undefined when calling operationTableGet.' - ); - } - const localVarPath = `/operation/table`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - if (group_by !== undefined) { - localVarQueryParameter.group_by = group_by; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - overviewGet( - run: string, - worker: string, - span: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling overviewGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling overviewGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling overviewGet.' - ); - } - const localVarPath = `/overview`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - runsGet(options: any = {}): FetchArgs { - const localVarPath = `/runs`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - spansGet(run: string, worker: string, options: any = {}): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling spansGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling spansGet.' - ); - } - const localVarPath = `/spans`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - traceGet( - run: string, - worker: string, - span: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling traceGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling traceGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling traceGet.' - ); - } - const localVarPath = `/trace`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - treeGet( - run: string, - worker: string, - span: string, - options: any = {} - ): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling treeGet.' - ); - } - // verify required parameter 'worker' is not null or undefined - if (worker === null || worker === undefined) { - throw new RequiredError( - 'worker', - 'Required parameter worker was null or undefined when calling treeGet.' - ); - } - // verify required parameter 'span' is not null or undefined - if (span === null || span === undefined) { - throw new RequiredError( - 'span', - 'Required parameter span was null or undefined when calling treeGet.' - ); - } - const localVarPath = `/tree`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (worker !== undefined) { - localVarQueryParameter.worker = worker; - } - - if (span !== undefined) { - localVarQueryParameter.span = span; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - viewsGet(run: string, options: any = {}): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling viewsGet.' - ); - } - const localVarPath = `/views`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - /** - * - * @param {string} run - * @param {string} view - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - workersGet(run: string, view: string, options: any = {}): FetchArgs { - // verify required parameter 'run' is not null or undefined - if (run === null || run === undefined) { - throw new RequiredError( - 'run', - 'Required parameter run was null or undefined when calling workersGet.' - ); - } - // verify required parameter 'view' is not null or undefined - if (view === null || view === undefined) { - throw new RequiredError( - 'view', - 'Required parameter view was null or undefined when calling workersGet.' - ); - } - const localVarPath = `/workers`; - const localVarUrlObj = url.parse(localVarPath, true); - const localVarRequestOptions = Object.assign({ method: 'GET' }, options); - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (run !== undefined) { - localVarQueryParameter.run = run; - } - - if (view !== undefined) { - localVarQueryParameter.view = view; - } - - localVarUrlObj.query = Object.assign( - {}, - localVarUrlObj.query, - localVarQueryParameter, - options.query - ); - // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943 - delete localVarUrlObj.search; - localVarRequestOptions.headers = Object.assign( - {}, - localVarHeaderParameter, - options.headers - ); - - return { - url: url.format(localVarUrlObj), - options: localVarRequestOptions, - }; - }, - }; -}; - -/** - * DefaultApi - functional programming interface - * @export - */ -export const DefaultApiFp = function (configuration?: Configuration) { - return { - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} exp_run - * @param {string} exp_worker - * @param {string} exp_span - * @param {string} [path] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - diffnodeGet( - run: string, - worker: string, - span: string, - exp_run: string, - exp_worker: string, - exp_span: string, - path?: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).diffnodeGet( - run, - worker, - span, - exp_run, - exp_worker, - exp_span, - path, - options - ); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - distributedCommopsGet( - run: string, - worker: string, - span: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).distributedCommopsGet(run, worker, span, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - distributedGpuinfoGet( - run: string, - worker: string, - span: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).distributedGpuinfoGet(run, worker, span, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - distributedOverlapGet( - run: string, - worker: string, - span: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).distributedOverlapGet(run, worker, span, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - distributedWaittimeGet( - run: string, - worker: string, - span: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).distributedWaittimeGet(run, worker, span, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - kernelGet( - run: string, - worker: string, - span: string, - group_by: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).kernelGet(run, worker, span, group_by, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} [group_by] Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - kernelTableGet( - run: string, - worker: string, - span: string, - group_by?: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).kernelTableGet(run, worker, span, group_by, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - kernelTcPieGet( - run: string, - worker: string, - span: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).kernelTcPieGet(run, worker, span, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - memoryCurveGet( - run: string, - worker: string, - span: string, - options?: any - ): ( - fetch?: FetchAPI, - basePath?: string - ) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).memoryCurveGet(run, worker, span, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {number} [start_ts] - * @param {number} [end_ts] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - memoryEventsGet( - run: string, - worker: string, - span: string, - start_ts?: number, - end_ts?: number, - options?: any - ): ( - fetch?: FetchAPI, - basePath?: string - ) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).memoryEventsGet(run, worker, span, start_ts, end_ts, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {number} [start_ts] - * @param {number} [end_ts] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - memoryGet( - run: string, - worker: string, - span: string, - start_ts?: number, - end_ts?: number, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).memoryGet(run, worker, span, start_ts, end_ts, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - moduleGet( - run: string, - worker: string, - span: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).moduleGet(run, worker, span, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - operationGet( - run: string, - worker: string, - span: string, - group_by: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).operationGet(run, worker, span, group_by, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {string} op_name - * @param {string} [input_shape] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - operationStackGet( - run: string, - worker: string, - span: string, - group_by: string, - op_name: string, - input_shape?: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).operationStackGet( - run, - worker, - span, - group_by, - op_name, - input_shape, - options - ); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - operationTableGet( - run: string, - worker: string, - span: string, - group_by: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).operationTableGet(run, worker, span, group_by, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - overviewGet( - run: string, - worker: string, - span: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).overviewGet(run, worker, span, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - runsGet( - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = - DefaultApiFetchParamCreator(configuration).runsGet(options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - spansGet( - run: string, - worker: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise> { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).spansGet(run, worker, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - traceGet( - run: string, - worker: string, - span: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).traceGet(run, worker, span, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - treeGet( - run: string, - worker: string, - span: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).treeGet(run, worker, span, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - viewsGet( - run: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).viewsGet(run, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - /** - * - * @param {string} run - * @param {string} view - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - workersGet( - run: string, - view: string, - options?: any - ): (fetch?: FetchAPI, basePath?: string) => Promise> { - const localVarFetchArgs = DefaultApiFetchParamCreator( - configuration - ).workersGet(run, view, options); - return ( - fetch: FetchAPI = portableFetch, - basePath: string = BASE_PATH - ) => { - return fetch( - basePath + localVarFetchArgs.url, - localVarFetchArgs.options - ).then((response) => { - if (response.status >= 200 && response.status < 300) { - return response.json(); - } else { - throw response; - } - }); - }; - }, - }; -}; - -/** - * DefaultApi - factory interface - * @export - */ -export const DefaultApiFactory = function ( - configuration?: Configuration, - fetch?: FetchAPI, - basePath?: string -) { - return { - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} exp_run - * @param {string} exp_worker - * @param {string} exp_span - * @param {string} [path] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - diffnodeGet( - run: string, - worker: string, - span: string, - exp_run: string, - exp_worker: string, - exp_span: string, - path?: string, - options?: any - ) { - return DefaultApiFp(configuration).diffnodeGet( - run, - worker, - span, - exp_run, - exp_worker, - exp_span, - path, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - distributedCommopsGet( - run: string, - worker: string, - span: string, - options?: any - ) { - return DefaultApiFp(configuration).distributedCommopsGet( - run, - worker, - span, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - distributedGpuinfoGet( - run: string, - worker: string, - span: string, - options?: any - ) { - return DefaultApiFp(configuration).distributedGpuinfoGet( - run, - worker, - span, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - distributedOverlapGet( - run: string, - worker: string, - span: string, - options?: any - ) { - return DefaultApiFp(configuration).distributedOverlapGet( - run, - worker, - span, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - distributedWaittimeGet( - run: string, - worker: string, - span: string, - options?: any - ) { - return DefaultApiFp(configuration).distributedWaittimeGet( - run, - worker, - span, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - kernelGet( - run: string, - worker: string, - span: string, - group_by: string, - options?: any - ) { - return DefaultApiFp(configuration).kernelGet( - run, - worker, - span, - group_by, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} [group_by] Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - kernelTableGet( - run: string, - worker: string, - span: string, - group_by?: string, - options?: any - ) { - return DefaultApiFp(configuration).kernelTableGet( - run, - worker, - span, - group_by, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - kernelTcPieGet(run: string, worker: string, span: string, options?: any) { - return DefaultApiFp(configuration).kernelTcPieGet( - run, - worker, - span, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - memoryCurveGet(run: string, worker: string, span: string, options?: any) { - return DefaultApiFp(configuration).memoryCurveGet( - run, - worker, - span, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {number} [start_ts] - * @param {number} [end_ts] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - memoryEventsGet( - run: string, - worker: string, - span: string, - start_ts?: number, - end_ts?: number, - options?: any - ) { - return DefaultApiFp(configuration).memoryEventsGet( - run, - worker, - span, - start_ts, - end_ts, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {number} [start_ts] - * @param {number} [end_ts] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - memoryGet( - run: string, - worker: string, - span: string, - start_ts?: number, - end_ts?: number, - options?: any - ) { - return DefaultApiFp(configuration).memoryGet( - run, - worker, - span, - start_ts, - end_ts, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - moduleGet(run: string, worker: string, span: string, options?: any) { - return DefaultApiFp(configuration).moduleGet( - run, - worker, - span, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - operationGet( - run: string, - worker: string, - span: string, - group_by: string, - options?: any - ) { - return DefaultApiFp(configuration).operationGet( - run, - worker, - span, - group_by, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {string} op_name - * @param {string} [input_shape] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - operationStackGet( - run: string, - worker: string, - span: string, - group_by: string, - op_name: string, - input_shape?: string, - options?: any - ) { - return DefaultApiFp(configuration).operationStackGet( - run, - worker, - span, - group_by, - op_name, - input_shape, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - operationTableGet( - run: string, - worker: string, - span: string, - group_by: string, - options?: any - ) { - return DefaultApiFp(configuration).operationTableGet( - run, - worker, - span, - group_by, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - overviewGet(run: string, worker: string, span: string, options?: any) { - return DefaultApiFp(configuration).overviewGet( - run, - worker, - span, - options - )(fetch, basePath); - }, - /** - * - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - runsGet(options?: any) { - return DefaultApiFp(configuration).runsGet(options)(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - spansGet(run: string, worker: string, options?: any) { - return DefaultApiFp(configuration).spansGet( - run, - worker, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - traceGet(run: string, worker: string, span: string, options?: any) { - return DefaultApiFp(configuration).traceGet( - run, - worker, - span, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - treeGet(run: string, worker: string, span: string, options?: any) { - return DefaultApiFp(configuration).treeGet( - run, - worker, - span, - options - )(fetch, basePath); - }, - /** - * - * @param {string} run - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - viewsGet(run: string, options?: any) { - return DefaultApiFp(configuration).viewsGet(run, options)( - fetch, - basePath - ); - }, - /** - * - * @param {string} run - * @param {string} view - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - workersGet(run: string, view: string, options?: any) { - return DefaultApiFp(configuration).workersGet( - run, - view, - options - )(fetch, basePath); - }, - }; -}; - -/** - * DefaultApi - object-oriented interface - * @export - * @class DefaultApi - * @extends {BaseAPI} - */ -export class DefaultApi extends BaseAPI { - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} exp_run - * @param {string} exp_worker - * @param {string} exp_span - * @param {string} [path] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public diffnodeGet( - run: string, - worker: string, - span: string, - exp_run: string, - exp_worker: string, - exp_span: string, - path?: string, - options?: any - ) { - return DefaultApiFp(this.configuration).diffnodeGet( - run, - worker, - span, - exp_run, - exp_worker, - exp_span, - path, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public distributedCommopsGet( - run: string, - worker: string, - span: string, - options?: any - ) { - return DefaultApiFp(this.configuration).distributedCommopsGet( - run, - worker, - span, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public distributedGpuinfoGet( - run: string, - worker: string, - span: string, - options?: any - ) { - return DefaultApiFp(this.configuration).distributedGpuinfoGet( - run, - worker, - span, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public distributedOverlapGet( - run: string, - worker: string, - span: string, - options?: any - ) { - return DefaultApiFp(this.configuration).distributedOverlapGet( - run, - worker, - span, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public distributedWaittimeGet( - run: string, - worker: string, - span: string, - options?: any - ) { - return DefaultApiFp(this.configuration).distributedWaittimeGet( - run, - worker, - span, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public kernelGet( - run: string, - worker: string, - span: string, - group_by: string, - options?: any - ) { - return DefaultApiFp(this.configuration).kernelGet( - run, - worker, - span, - group_by, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} [group_by] Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public kernelTableGet( - run: string, - worker: string, - span: string, - group_by?: string, - options?: any - ) { - return DefaultApiFp(this.configuration).kernelTableGet( - run, - worker, - span, - group_by, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public kernelTcPieGet( - run: string, - worker: string, - span: string, - options?: any - ) { - return DefaultApiFp(this.configuration).kernelTcPieGet( - run, - worker, - span, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public memoryCurveGet( - run: string, - worker: string, - span: string, - options?: any - ) { - return DefaultApiFp(this.configuration).memoryCurveGet( - run, - worker, - span, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {number} [start_ts] - * @param {number} [end_ts] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public memoryEventsGet( - run: string, - worker: string, - span: string, - start_ts?: number, - end_ts?: number, - options?: any - ) { - return DefaultApiFp(this.configuration).memoryEventsGet( - run, - worker, - span, - start_ts, - end_ts, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {number} [start_ts] - * @param {number} [end_ts] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public memoryGet( - run: string, - worker: string, - span: string, - start_ts?: number, - end_ts?: number, - options?: any - ) { - return DefaultApiFp(this.configuration).memoryGet( - run, - worker, - span, - start_ts, - end_ts, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public moduleGet(run: string, worker: string, span: string, options?: any) { - return DefaultApiFp(this.configuration).moduleGet( - run, - worker, - span, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public operationGet( - run: string, - worker: string, - span: string, - group_by: string, - options?: any - ) { - return DefaultApiFp(this.configuration).operationGet( - run, - worker, - span, - group_by, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {string} op_name - * @param {string} [input_shape] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public operationStackGet( - run: string, - worker: string, - span: string, - group_by: string, - op_name: string, - input_shape?: string, - options?: any - ) { - return DefaultApiFp(this.configuration).operationStackGet( - run, - worker, - span, - group_by, - op_name, - input_shape, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {string} group_by Group By - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public operationTableGet( - run: string, - worker: string, - span: string, - group_by: string, - options?: any - ) { - return DefaultApiFp(this.configuration).operationTableGet( - run, - worker, - span, - group_by, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public overviewGet(run: string, worker: string, span: string, options?: any) { - return DefaultApiFp(this.configuration).overviewGet( - run, - worker, - span, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public runsGet(options?: any) { - return DefaultApiFp(this.configuration).runsGet(options)( - this.fetch, - this.basePath - ); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public spansGet(run: string, worker: string, options?: any) { - return DefaultApiFp(this.configuration).spansGet( - run, - worker, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public traceGet(run: string, worker: string, span: string, options?: any) { - return DefaultApiFp(this.configuration).traceGet( - run, - worker, - span, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {string} worker - * @param {string} span - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public treeGet(run: string, worker: string, span: string, options?: any) { - return DefaultApiFp(this.configuration).treeGet( - run, - worker, - span, - options - )(this.fetch, this.basePath); - } - - /** - * - * @param {string} run - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public viewsGet(run: string, options?: any) { - return DefaultApiFp(this.configuration).viewsGet(run, options)( - this.fetch, - this.basePath - ); - } - - /** - * - * @param {string} run - * @param {string} view - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof DefaultApi - */ - public workersGet(run: string, view: string, options?: any) { - return DefaultApiFp(this.configuration).workersGet( - run, - view, - options - )(this.fetch, this.basePath); - } -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/configuration.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/configuration.ts deleted file mode 100644 index 85b77bf65..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/configuration.ts +++ /dev/null @@ -1,68 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -// tslint:disable -/** - * Pytorch profile API - * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) - * - * OpenAPI spec version: 1.0.0 - * - * - * NOTE: This file is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the file manually. - */ -export interface ConfigurationParameters { - apiKey?: string | ((name: string) => string); - username?: string; - password?: string; - accessToken?: string | ((name: string, scopes?: string[]) => string); - basePath?: string; -} - -export class Configuration { - /** - * parameter for apiKey security - * @param name security name - * @memberof Configuration - */ - apiKey?: string | ((name: string) => string); - /** - * parameter for basic security - * - * @type {string} - * @memberof Configuration - */ - username?: string; - /** - * parameter for basic security - * - * @type {string} - * @memberof Configuration - */ - password?: string; - /** - * parameter for oauth2 security - * @param name security name - * @param scopes oauth2 scope - * @memberof Configuration - */ - accessToken?: string | ((name: string, scopes?: string[]) => string); - /** - * override base path - * - * @type {string} - * @memberof Configuration - */ - basePath?: string; - - constructor(param: ConfigurationParameters = {}) { - this.apiKey = param.apiKey; - this.username = param.username; - this.password = param.password; - this.accessToken = param.accessToken; - this.basePath = param.basePath; - } -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/custom.d.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/custom.d.ts deleted file mode 100644 index 992af4688..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/custom.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -declare module 'portable-fetch'; -declare module 'url'; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/index.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/index.ts deleted file mode 100644 index 7ad784e60..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/generated/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -// tslint:disable -/** - * Pytorch profile API - * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) - * - * OpenAPI spec version: 1.0.0 - * - * - * NOTE: This file is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the file manually. - */ -export * from './api'; -export * from './configuration'; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/index.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/api/index.ts deleted file mode 100644 index 98b35abfb..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import * as api from './generated'; - -export const defaultApi = new api.DefaultApi(undefined, undefined, fetch); -export * from './generated/api'; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/mock.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/api/mock.ts deleted file mode 100644 index 4b4b447d9..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/mock.ts +++ /dev/null @@ -1,6684 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -export class MockAPI { - runsGet() { - return { - runs: ['resnet50_num_workers_0', 'resnet50_num_workers_4'], - loading: false, - }; - } - - viewsGet(run: string) { - return Promise.resolve([ - 'Overview', - 'Operator', - 'Kernel', - 'Trace', - 'Memory', - ]); - } - - spansGet(run: string, view: string): Promise { - return Promise.resolve(['1', '2']); - } - - workersGet(run: string, view: string): Promise { - return Promise.resolve(['worker0']); - } - - overviewGet(run: string, worker: string, span: string) { - return Promise.resolve({ - steps: { - columns: [ - { type: 'string', name: 'Step' }, - { type: 'number', name: 'Kernel' }, - { type: 'string', role: 'tooltip', p: { html: 'true' } }, - { type: 'number', name: 'Memcpy' }, - { type: 'string', role: 'tooltip', p: { html: 'true' } }, - { type: 'number', name: 'Memset' }, - { type: 'string', role: 'tooltip', p: { html: 'true' } }, - { type: 'number', name: 'Runtime' }, - { type: 'string', role: 'tooltip', p: { html: 'true' } }, - { type: 'number', name: 'DataLoader' }, - { type: 'string', role: 'tooltip', p: { html: 'true' } }, - { type: 'number', name: 'CPU Exec' }, - { type: 'string', role: 'tooltip', p: { html: 'true' } }, - { type: 'number', name: 'Other' }, - { type: 'string', role: 'tooltip', p: { html: 'true' } }, - ], - rows: [ - [ - '5', - 98598, - '
Step 5
Total: 187948us
Kernel: 98598us
Percentage: 52.46%
', - 1941, - '
Step 5
Total: 187948us
Memcpy: 1941us
Percentage: 1.03%
', - 90, - '
Step 5
Total: 187948us
Memset: 90us
Percentage: 0.05%
', - 2796, - '
Step 5
Total: 187948us
Runtime: 2796us
Percentage: 1.49%
', - 69317, - '
Step 5
Total: 187948us
DataLoader: 69317us
Percentage: 36.88%
', - 14091, - '
Step 5
Total: 187948us
CPU Exec: 14091us
Percentage: 7.5%
', - 1115, - '
Step 5
Total: 187948us
Other: 1115us
Percentage: 0.59%
', - ], - [ - '6', - 98570, - '
Step 6
Total: 175153us
Kernel: 98570us
Percentage: 56.28%
', - 1947, - '
Step 6
Total: 175153us
Memcpy: 1947us
Percentage: 1.11%
', - 89, - '
Step 6
Total: 175153us
Memset: 89us
Percentage: 0.05%
', - 2762, - '
Step 6
Total: 175153us
Runtime: 2762us
Percentage: 1.58%
', - 57669, - '
Step 6
Total: 175153us
DataLoader: 57669us
Percentage: 32.92%
', - 12968, - '
Step 6
Total: 175153us
CPU Exec: 12968us
Percentage: 7.4%
', - 1148, - '
Step 6
Total: 175153us
Other: 1148us
Percentage: 0.66%
', - ], - [ - '7', - 98596, - '
Step 7
Total: 179733us
Kernel: 98596us
Percentage: 54.86%
', - 1931, - '
Step 7
Total: 179733us
Memcpy: 1931us
Percentage: 1.07%
', - 91, - '
Step 7
Total: 179733us
Memset: 91us
Percentage: 0.05%
', - 2877, - '
Step 7
Total: 179733us
Runtime: 2877us
Percentage: 1.6%
', - 61257, - '
Step 7
Total: 179733us
DataLoader: 61257us
Percentage: 34.08%
', - 13768, - '
Step 7
Total: 179733us
CPU Exec: 13768us
Percentage: 7.66%
', - 1213, - '
Step 7
Total: 179733us
Other: 1213us
Percentage: 0.67%
', - ], - [ - '8', - 98623, - '
Step 8
Total: 174564us
Kernel: 98623us
Percentage: 56.5%
', - 1938, - '
Step 8
Total: 174564us
Memcpy: 1938us
Percentage: 1.11%
', - 89, - '
Step 8
Total: 174564us
Memset: 89us
Percentage: 0.05%
', - 2841, - '
Step 8
Total: 174564us
Runtime: 2841us
Percentage: 1.63%
', - 56453, - '
Step 8
Total: 174564us
DataLoader: 56453us
Percentage: 32.34%
', - 13420, - '
Step 8
Total: 174564us
CPU Exec: 13420us
Percentage: 7.69%
', - 1200, - '
Step 8
Total: 174564us
Other: 1200us
Percentage: 0.69%
', - ], - [ - '9', - 98504, - '
Step 9
Total: 182172us
Kernel: 98504us
Percentage: 54.07%
', - 1937, - '
Step 9
Total: 182172us
Memcpy: 1937us
Percentage: 1.06%
', - 87, - '
Step 9
Total: 182172us
Memset: 87us
Percentage: 0.05%
', - 2788, - '
Step 9
Total: 182172us
Runtime: 2788us
Percentage: 1.53%
', - 62690, - '
Step 9
Total: 182172us
DataLoader: 62690us
Percentage: 34.41%
', - 15025, - '
Step 9
Total: 182172us
CPU Exec: 15025us
Percentage: 8.25%
', - 1141, - '
Step 9
Total: 182172us
Other: 1141us
Percentage: 0.63%
', - ], - [ - '10', - 98641, - '
Step 10
Total: 165983us
Kernel: 98641us
Percentage: 59.43%
', - 1798, - '
Step 10
Total: 165983us
Memcpy: 1798us
Percentage: 1.08%
', - 88, - '
Step 10
Total: 165983us
Memset: 88us
Percentage: 0.05%
', - 3381, - '
Step 10
Total: 165983us
Runtime: 3381us
Percentage: 2.04%
', - 48185, - '
Step 10
Total: 165983us
DataLoader: 48185us
Percentage: 29.03%
', - 12773, - '
Step 10
Total: 165983us
CPU Exec: 12773us
Percentage: 7.7%
', - 1117, - '
Step 10
Total: 165983us
Other: 1117us
Percentage: 0.67%
', - ], - ], - }, - performance: [ - { - name: 'Average Step Time', - description: '', - value: 177592, - extra: 100, - children: [ - { name: 'Kernel', description: '', value: 98589, extra: 55.51 }, - { name: 'Memcpy', description: '', value: 1915, extra: 1.08 }, - { name: 'Memset', description: '', value: 89, extra: 0.05 }, - { name: 'Runtime', description: '', value: 2908, extra: 1.64 }, - { name: 'DataLoader', description: '', value: 59262, extra: 33.37 }, - { name: 'CPU Exec', description: '', value: 13674, extra: 7.7 }, - { name: 'Other', description: '', value: 1156, extra: 0.65 }, - ], - }, - ], - recommendations: - '
  • This run has high time cost on input data loading. 33.4% of the step time is in DataLoader. You could try to set num_workers on DataLoader\'s construction and enable multi-processes on data loading.
  • Kernels with 68% time are launched by Tensor Cores eligible operators. You could enable Automatic Mixed Precision to speedup by using FP16.
', - environments: [ - { title: 'Number of Worker(s)', value: '1' }, - { title: 'Device Type', value: 'GPU' }, - ], - gpu_metrics: { - title: 'GPU Summary', - data: [ - { title: 'GPU 0:', value: '' }, - { title: 'Name', value: 'Tesla V100-DGXS-32GB' }, - { title: 'Memory', value: '31.74 GB' }, - { title: 'Compute Capability', value: '7.0' }, - { title: 'GPU Utilization', value: '55.51 %' }, - { title: 'Est. SM Efficiency', value: '54.68 %' }, - { title: 'Est. Achieved Occupancy', value: '49.13 %' }, - { title: 'Kernel Time using Tensor Cores', value: '0.0 %' }, - ], - tooltip: - "The GPU usage metrics:\n\nGPU Utilization:\nGPU busy time / All steps time. The higher, the better. GPU busy time is the time during which there is at least one GPU kernel running on it. All steps time is the total time of all profiler steps(or called as iterations).\n\nEst. SM Efficiency:\nEstimated Stream Multiprocessor Efficiency. The higher, the better. This metric of a kernel, SM_Eff_K = min(blocks of this kernel / SM number of this GPU, 100%). This overall number is the sum of all kernels' SM_Eff_K weighted by kernel's execution duration, divided by all steps time.\n\nEst. Achieved Occupancy:\nFor most cases such as memory bandwidth bounded kernels, the higher the better. Occupancy is the ratio of active warps on an SM to the maximum number of active warps supported by the SM. The theoretical occupancy of a kernel is upper limit occupancy of this kernel, limited by multiple factors such as kernel shape, kernel used resource, and the GPU compute capability.\nEst. Achieved Occupancy of a kernel, OCC_K = min(threads of the kernel / SM number / max threads per SM, theoretical occupancy of the kernel). This overall number is the weighted average of all kernels' OCC_K using kernel's execution duration as weight. It shows fine-grained low-level GPU utilization.\n\nKernel using Tensor Cores:\nTotal GPU Time for Tensor Core kernels / Total GPU Time for all kernels.\n", - }, - }); - } - - diffnodeGet( - run: string, - worker: string, - span: string, - exp_run: string, - exp_worker: string, - exp_span: string, - path?: string - ) { - return Promise.resolve({ - left: { - name: 'multiple nodes', - duration: 4246748, - device_duration: 376761, - total_duration: 3823182, - aggs: [ - { - name: 'aten::empty', - calls: 4214, - host_duration: 186312, - device_duration: 0, - self_host_duration: 186312, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 846, - host_duration: 31902, - device_duration: 736, - self_host_duration: 17460, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 520, - host_duration: 62713, - device_duration: 0, - self_host_duration: 32640, - self_device_duration: 0, - }, - { - name: 'aten::to', - calls: 2696, - host_duration: 1711486, - device_duration: 8796, - self_host_duration: 37162, - self_device_duration: 0, - }, - { - name: 'detach', - calls: 256, - host_duration: 4379, - device_duration: 0, - self_host_duration: 4379, - self_device_duration: 0, - }, - { - name: 'aten::detach', - calls: 256, - host_duration: 10596, - device_duration: 0, - self_host_duration: 6217, - self_device_duration: 0, - }, - { - name: 'aten::as_strided', - calls: 914, - host_duration: 8470, - device_duration: 0, - self_host_duration: 8470, - self_device_duration: 0, - }, - { - name: 'aten::unsqueeze', - calls: 384, - host_duration: 19150, - device_duration: 0, - self_host_duration: 16142, - self_device_duration: 0, - }, - { - name: 'aten::empty_strided', - calls: 1158, - host_duration: 50043, - device_duration: 0, - self_host_duration: 50043, - self_device_duration: 0, - }, - { - name: 'aten::copy_', - calls: 1412, - host_duration: 1518205, - device_duration: 8796, - self_host_duration: 1509009, - self_device_duration: 8796, - }, - { - name: 'aten::_to_copy', - calls: 1284, - host_duration: 1674324, - device_duration: 8796, - self_host_duration: 104788, - self_device_duration: 0, - }, - { - name: 'aten::upsample_bilinear2d', - calls: 128, - host_duration: 460479, - device_duration: 0, - self_host_duration: 421547, - self_device_duration: 0, - }, - { - name: 'aten::squeeze', - calls: 128, - host_duration: 9401, - device_duration: 0, - self_host_duration: 8211, - self_device_duration: 0, - }, - { - name: 'aten::round', - calls: 128, - host_duration: 31311, - device_duration: 0, - self_host_duration: 31311, - self_device_duration: 0, - }, - { - name: 'aten::slice', - calls: 260, - host_duration: 17762, - device_duration: 0, - self_host_duration: 15082, - self_device_duration: 0, - }, - { - name: 'detach_', - calls: 512, - host_duration: 4194, - device_duration: 0, - self_host_duration: 4194, - self_device_duration: 0, - }, - { - name: 'aten::detach_', - calls: 512, - host_duration: 14514, - device_duration: 0, - self_host_duration: 10320, - self_device_duration: 0, - }, - { - name: 'aten::result_type', - calls: 640, - host_duration: 1734, - device_duration: 0, - self_host_duration: 1734, - self_device_duration: 0, - }, - { - name: 'aten::pow', - calls: 640, - host_duration: 86249, - device_duration: 0, - self_host_duration: 78373, - self_device_duration: 0, - }, - { - name: 'aten::sub', - calls: 640, - host_duration: 183533, - device_duration: 0, - self_host_duration: 75637, - self_device_duration: 0, - }, - { - name: 'aten::gt', - calls: 640, - host_duration: 71284, - device_duration: 0, - self_host_duration: 49575, - self_device_duration: 0, - }, - { - name: 'aten::_local_scalar_dense', - calls: 768, - host_duration: 4948, - device_duration: 0, - self_host_duration: 4948, - self_device_duration: 0, - }, - { - name: 'aten::item', - calls: 768, - host_duration: 20922, - device_duration: 0, - self_host_duration: 15974, - self_device_duration: 0, - }, - { - name: 'aten::is_nonzero', - calls: 640, - host_duration: 27934, - device_duration: 0, - self_host_duration: 10747, - self_device_duration: 0, - }, - { - name: 'aten::div', - calls: 130, - host_duration: 168214, - device_duration: 75, - self_host_duration: 146203, - self_device_duration: 75, - }, - { - name: 'aten::resize_', - calls: 6, - host_duration: 248, - device_duration: 0, - self_host_duration: 248, - self_device_duration: 0, - }, - { - name: 'aten::narrow', - calls: 4, - host_duration: 280, - device_duration: 0, - self_host_duration: 99, - self_device_duration: 0, - }, - { - name: 'aten::_cat', - calls: 4, - host_duration: 92993, - device_duration: 0, - self_host_duration: 92405, - self_device_duration: 0, - }, - { - name: 'aten::cat', - calls: 4, - host_duration: 93282, - device_duration: 0, - self_host_duration: 289, - self_device_duration: 0, - }, - { - name: 'aten::stack', - calls: 4, - host_duration: 124757, - device_duration: 0, - self_host_duration: 22050, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_convolution', - calls: 106, - host_duration: 44043, - device_duration: 71832, - self_host_duration: 35027, - self_device_duration: 71832, - }, - { - name: 'aten::_convolution', - calls: 106, - host_duration: 51312, - device_duration: 71832, - self_host_duration: 7269, - self_device_duration: 0, - }, - { - name: 'aten::convolution', - calls: 106, - host_duration: 55287, - device_duration: 71832, - self_host_duration: 3975, - self_device_duration: 0, - }, - { - name: 'aten::conv2d', - calls: 106, - host_duration: 59323, - device_duration: 71832, - self_host_duration: 4036, - self_device_duration: 0, - }, - { - name: 'aten::add', - calls: 138, - host_duration: 17461, - device_duration: 10540, - self_host_duration: 15188, - self_device_duration: 10540, - }, - { - name: 'aten::empty_like', - calls: 108, - host_duration: 11504, - device_duration: 0, - self_host_duration: 4865, - self_device_duration: 0, - }, - { - name: 'aten::view', - calls: 214, - host_duration: 3589, - device_duration: 0, - self_host_duration: 3589, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_batch_norm', - calls: 106, - host_duration: 71328, - device_duration: 25802, - self_host_duration: 40944, - self_device_duration: 25802, - }, - { - name: 'aten::_batch_norm_impl_index', - calls: 106, - host_duration: 76354, - device_duration: 25802, - self_host_duration: 5026, - self_device_duration: 0, - }, - { - name: 'aten::batch_norm', - calls: 106, - host_duration: 79832, - device_duration: 25802, - self_host_duration: 3478, - self_device_duration: 0, - }, - { - name: 'aten::clamp_min', - calls: 98, - host_duration: 5417, - device_duration: 12000, - self_host_duration: 3885, - self_device_duration: 12000, - }, - { - name: 'aten::clamp_min_', - calls: 98, - host_duration: 8537, - device_duration: 12000, - self_host_duration: 3120, - self_device_duration: 0, - }, - { - name: 'aten::relu_', - calls: 98, - host_duration: 16708, - device_duration: 12000, - self_host_duration: 8171, - self_device_duration: 0, - }, - { - name: 'aten::max_pool2d_with_indices', - calls: 2, - host_duration: 442, - device_duration: 940, - self_host_duration: 405, - self_device_duration: 940, - }, - { - name: 'aten::max_pool2d', - calls: 2, - host_duration: 542, - device_duration: 940, - self_host_duration: 100, - self_device_duration: 0, - }, - { - name: 'aten::add_', - calls: 998, - host_duration: 72931, - device_duration: 13090, - self_host_duration: 57558, - self_device_duration: 13090, - }, - { - name: 'aten::mean', - calls: 2, - host_duration: 376, - device_duration: 133, - self_host_duration: 339, - self_device_duration: 133, - }, - { - name: 'aten::adaptive_avg_pool2d', - calls: 2, - host_duration: 465, - device_duration: 133, - self_host_duration: 89, - self_device_duration: 0, - }, - { - name: 'aten::_reshape_alias', - calls: 4, - host_duration: 170, - device_duration: 0, - self_host_duration: 170, - self_device_duration: 0, - }, - { - name: 'aten::flatten', - calls: 2, - host_duration: 207, - device_duration: 0, - self_host_duration: 103, - self_device_duration: 0, - }, - { - name: 'aten::transpose', - calls: 10, - host_duration: 587, - device_duration: 0, - self_host_duration: 465, - self_device_duration: 0, - }, - { - name: 'aten::t', - calls: 10, - host_duration: 1068, - device_duration: 0, - self_host_duration: 481, - self_device_duration: 0, - }, - { - name: 'aten::expand', - calls: 4, - host_duration: 277, - device_duration: 0, - self_host_duration: 227, - self_device_duration: 0, - }, - { - name: 'aten::addmm', - calls: 2, - host_duration: 809, - device_duration: 84, - self_host_duration: 604, - self_device_duration: 84, - }, - { - name: 'aten::linear', - calls: 2, - host_duration: 1185, - device_duration: 84, - self_host_duration: 137, - self_device_duration: 0, - }, - { - name: 'aten::_log_softmax', - calls: 2, - host_duration: 308, - device_duration: 14, - self_host_duration: 271, - self_device_duration: 14, - }, - { - name: 'aten::log_softmax', - calls: 2, - host_duration: 472, - device_duration: 14, - self_host_duration: 153, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_forward', - calls: 2, - host_duration: 522, - device_duration: 8, - self_host_duration: 476, - self_device_duration: 8, - }, - { - name: 'aten::nll_loss', - calls: 2, - host_duration: 590, - device_duration: 8, - self_host_duration: 68, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_nd', - calls: 2, - host_duration: 641, - device_duration: 8, - self_host_duration: 51, - self_device_duration: 0, - }, - { - name: 'aten::cross_entropy_loss', - calls: 2, - host_duration: 1234, - device_duration: 22, - self_host_duration: 121, - self_device_duration: 0, - }, - { - name: 'aten::fill_', - calls: 328, - host_duration: 14541, - device_duration: 738, - self_host_duration: 10083, - self_device_duration: 738, - }, - { - name: 'aten::ones_like', - calls: 2, - host_duration: 516, - device_duration: 2, - self_host_duration: 142, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_backward', - calls: 2, - host_duration: 573, - device_duration: 8, - self_host_duration: 310, - self_device_duration: 6, - }, - { - name: 'NllLossBackward0', - calls: 2, - host_duration: 774, - device_duration: 8, - self_host_duration: 201, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: NllLossBackward0', - calls: 2, - host_duration: 1025, - device_duration: 8, - self_host_duration: 251, - self_device_duration: 0, - }, - { - name: 'aten::_log_softmax_backward_data', - calls: 2, - host_duration: 236, - device_duration: 18, - self_host_duration: 196, - self_device_duration: 18, - }, - { - name: 'LogSoftmaxBackward0', - calls: 2, - host_duration: 385, - device_duration: 18, - self_host_duration: 149, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: LogSoftmaxBackward0', - calls: 2, - host_duration: 632, - device_duration: 18, - self_host_duration: 247, - self_device_duration: 0, - }, - { - name: 'aten::mm', - calls: 4, - host_duration: 668, - device_duration: 140, - self_host_duration: 547, - self_device_duration: 140, - }, - { - name: 'AddmmBackward0', - calls: 2, - host_duration: 1698, - device_duration: 140, - self_host_duration: 417, - self_device_duration: 0, - }, - { - name: 'aten::sum', - calls: 2, - host_duration: 370, - device_duration: 15, - self_host_duration: 328, - self_device_duration: 15, - }, - { - name: 'autograd::engine::evaluate_function: AddmmBackward0', - calls: 2, - host_duration: 2710, - device_duration: 155, - self_host_duration: 567, - self_device_duration: 0, - }, - { - name: 'torch::autograd::AccumulateGrad', - calls: 322, - host_duration: 41184, - device_duration: 997, - self_host_duration: 16159, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: torch::autograd::AccumulateGrad', - calls: 322, - host_duration: 70946, - device_duration: 997, - self_host_duration: 29762, - self_device_duration: 0, - }, - { - name: 'TBackward0', - calls: 2, - host_duration: 280, - device_duration: 0, - self_host_duration: 64, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: TBackward0', - calls: 2, - host_duration: 428, - device_duration: 0, - self_host_duration: 148, - self_device_duration: 0, - }, - { - name: 'aten::reshape', - calls: 2, - host_duration: 170, - device_duration: 0, - self_host_duration: 104, - self_device_duration: 0, - }, - { - name: 'ReshapeAliasBackward0', - calls: 2, - host_duration: 264, - device_duration: 0, - self_host_duration: 94, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: ReshapeAliasBackward0', - calls: 2, - host_duration: 402, - device_duration: 0, - self_host_duration: 138, - self_device_duration: 0, - }, - { - name: 'MeanBackward1', - calls: 2, - host_duration: 1036, - device_duration: 75, - self_host_duration: 231, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: MeanBackward1', - calls: 2, - host_duration: 1254, - device_duration: 75, - self_host_duration: 218, - self_device_duration: 0, - }, - { - name: 'aten::threshold_backward', - calls: 98, - host_duration: 13838, - device_duration: 17984, - self_host_duration: 12131, - self_device_duration: 17984, - }, - { - name: 'ReluBackward0', - calls: 98, - host_duration: 21183, - device_duration: 17984, - self_host_duration: 7345, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: ReluBackward0', - calls: 98, - host_duration: 33492, - device_duration: 17984, - self_host_duration: 12309, - self_device_duration: 0, - }, - { - name: 'AddBackward0', - calls: 32, - host_duration: 251, - device_duration: 0, - self_host_duration: 251, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: AddBackward0', - calls: 32, - host_duration: 2579, - device_duration: 0, - self_host_duration: 2328, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_batch_norm_backward', - calls: 106, - host_duration: 62175, - device_duration: 44433, - self_host_duration: 36053, - self_device_duration: 44433, - }, - { - name: 'CudnnBatchNormBackward0', - calls: 106, - host_duration: 69160, - device_duration: 44433, - self_host_duration: 6985, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: CudnnBatchNormBackward0', - calls: 106, - host_duration: 88613, - device_duration: 44433, - self_host_duration: 19453, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_convolution_backward_input', - calls: 104, - host_duration: 40820, - device_duration: 76620, - self_host_duration: 30768, - self_device_duration: 76620, - }, - { - name: 'aten::cudnn_convolution_backward_weight', - calls: 106, - host_duration: 44875, - device_duration: 90108, - self_host_duration: 27458, - self_device_duration: 90108, - }, - { - name: 'aten::cudnn_convolution_backward', - calls: 106, - host_duration: 101020, - device_duration: 166728, - self_host_duration: 15325, - self_device_duration: 0, - }, - { - name: 'CudnnConvolutionBackward0', - calls: 106, - host_duration: 107964, - device_duration: 166728, - self_host_duration: 6944, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: CudnnConvolutionBackward0', - calls: 106, - host_duration: 129129, - device_duration: 177161, - self_host_duration: 16746, - self_device_duration: 0, - }, - { - name: 'aten::max_pool2d_with_indices_backward', - calls: 2, - host_duration: 483, - device_duration: 3048, - self_host_duration: 257, - self_device_duration: 2588, - }, - { - name: 'MaxPool2DWithIndicesBackward0', - calls: 2, - host_duration: 599, - device_duration: 3048, - self_host_duration: 116, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: MaxPool2DWithIndicesBackward0', - calls: 2, - host_duration: 836, - device_duration: 3048, - self_host_duration: 237, - self_device_duration: 0, - }, - { - name: 'aten::mul_', - calls: 322, - host_duration: 23818, - device_duration: 797, - self_host_duration: 19073, - self_device_duration: 797, - }, - ], - }, - right: { - name: 'multiple nodes', - duration: 468427, - device_duration: 374211, - total_duration: 644686, - aggs: [ - { - name: 'aten::empty', - calls: 4214, - host_duration: 31594, - device_duration: 0, - self_host_duration: 31594, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 846, - host_duration: 6010, - device_duration: 864, - self_host_duration: 1910, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 520, - host_duration: 10338, - device_duration: 0, - self_host_duration: 2951, - self_device_duration: 0, - }, - { - name: 'aten::to', - calls: 2696, - host_duration: 47031, - device_duration: 8684, - self_host_duration: 4258, - self_device_duration: 0, - }, - { - name: 'detach', - calls: 256, - host_duration: 701, - device_duration: 0, - self_host_duration: 698, - self_device_duration: 0, - }, - { - name: 'aten::detach', - calls: 256, - host_duration: 1374, - device_duration: 0, - self_host_duration: 676, - self_device_duration: 0, - }, - { - name: 'aten::as_strided', - calls: 914, - host_duration: 1013, - device_duration: 0, - self_host_duration: 1013, - self_device_duration: 0, - }, - { - name: 'aten::unsqueeze', - calls: 384, - host_duration: 2074, - device_duration: 0, - self_host_duration: 1723, - self_device_duration: 0, - }, - { - name: 'aten::empty_strided', - calls: 1158, - host_duration: 6859, - device_duration: 0, - self_host_duration: 6859, - self_device_duration: 0, - }, - { - name: 'aten::copy_', - calls: 1412, - host_duration: 25248, - device_duration: 8684, - self_host_duration: 16166, - self_device_duration: 8684, - }, - { - name: 'aten::_to_copy', - calls: 1284, - host_duration: 42773, - device_duration: 8684, - self_host_duration: 10227, - self_device_duration: 0, - }, - { - name: 'aten::upsample_bilinear2d', - calls: 128, - host_duration: 51788, - device_duration: 0, - self_host_duration: 46788, - self_device_duration: 0, - }, - { - name: 'aten::squeeze', - calls: 128, - host_duration: 1035, - device_duration: 0, - self_host_duration: 895, - self_device_duration: 0, - }, - { - name: 'aten::round', - calls: 128, - host_duration: 11074, - device_duration: 0, - self_host_duration: 11074, - self_device_duration: 0, - }, - { - name: 'aten::slice', - calls: 260, - host_duration: 1892, - device_duration: 0, - self_host_duration: 1600, - self_device_duration: 0, - }, - { - name: 'detach_', - calls: 512, - host_duration: 278, - device_duration: 0, - self_host_duration: 244, - self_device_duration: 0, - }, - { - name: 'aten::detach_', - calls: 512, - host_duration: 1341, - device_duration: 0, - self_host_duration: 1097, - self_device_duration: 0, - }, - { - name: 'aten::result_type', - calls: 640, - host_duration: 317, - device_duration: 0, - self_host_duration: 317, - self_device_duration: 0, - }, - { - name: 'aten::pow', - calls: 640, - host_duration: 8857, - device_duration: 0, - self_host_duration: 7959, - self_device_duration: 0, - }, - { - name: 'aten::sub', - calls: 640, - host_duration: 17840, - device_duration: 0, - self_host_duration: 7688, - self_device_duration: 0, - }, - { - name: 'aten::gt', - calls: 640, - host_duration: 6903, - device_duration: 0, - self_host_duration: 4901, - self_device_duration: 0, - }, - { - name: 'aten::_local_scalar_dense', - calls: 768, - host_duration: 395, - device_duration: 0, - self_host_duration: 395, - self_device_duration: 0, - }, - { - name: 'aten::item', - calls: 768, - host_duration: 2532, - device_duration: 0, - self_host_duration: 2130, - self_device_duration: 0, - }, - { - name: 'aten::is_nonzero', - calls: 640, - host_duration: 3601, - device_duration: 0, - self_host_duration: 1427, - self_device_duration: 0, - }, - { - name: 'aten::div', - calls: 130, - host_duration: 11707, - device_duration: 75, - self_host_duration: 9531, - self_device_duration: 75, - }, - { - name: 'aten::resize_', - calls: 6, - host_duration: 79, - device_duration: 0, - self_host_duration: 79, - self_device_duration: 0, - }, - { - name: 'aten::narrow', - calls: 4, - host_duration: 37, - device_duration: 0, - self_host_duration: 16, - self_device_duration: 0, - }, - { - name: 'aten::_cat', - calls: 4, - host_duration: 9241, - device_duration: 0, - self_host_duration: 9113, - self_device_duration: 0, - }, - { - name: 'aten::cat', - calls: 4, - host_duration: 9286, - device_duration: 0, - self_host_duration: 45, - self_device_duration: 0, - }, - { - name: 'aten::stack', - calls: 4, - host_duration: 16195, - device_duration: 0, - self_host_duration: 6105, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_convolution', - calls: 106, - host_duration: 17357, - device_duration: 71414, - self_host_duration: 13601, - self_device_duration: 71414, - }, - { - name: 'aten::_convolution', - calls: 106, - host_duration: 18514, - device_duration: 71414, - self_host_duration: 1157, - self_device_duration: 0, - }, - { - name: 'aten::convolution', - calls: 106, - host_duration: 19185, - device_duration: 71414, - self_host_duration: 671, - self_device_duration: 0, - }, - { - name: 'aten::conv2d', - calls: 106, - host_duration: 19750, - device_duration: 71414, - self_host_duration: 565, - self_device_duration: 0, - }, - { - name: 'aten::add', - calls: 138, - host_duration: 4973, - device_duration: 10567, - self_host_duration: 3157, - self_device_duration: 10567, - }, - { - name: 'aten::empty_like', - calls: 108, - host_duration: 1924, - device_duration: 0, - self_host_duration: 598, - self_device_duration: 0, - }, - { - name: 'aten::view', - calls: 214, - host_duration: 596, - device_duration: 0, - self_host_duration: 596, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_batch_norm', - calls: 106, - host_duration: 11083, - device_duration: 25737, - self_host_duration: 5031, - self_device_duration: 25737, - }, - { - name: 'aten::_batch_norm_impl_index', - calls: 106, - host_duration: 11856, - device_duration: 25737, - self_host_duration: 773, - self_device_duration: 0, - }, - { - name: 'aten::batch_norm', - calls: 106, - host_duration: 12386, - device_duration: 25737, - self_host_duration: 530, - self_device_duration: 0, - }, - { - name: 'aten::clamp_min', - calls: 98, - host_duration: 2189, - device_duration: 12010, - self_host_duration: 1030, - self_device_duration: 12010, - }, - { - name: 'aten::clamp_min_', - calls: 98, - host_duration: 2614, - device_duration: 12010, - self_host_duration: 425, - self_device_duration: 0, - }, - { - name: 'aten::relu_', - calls: 98, - host_duration: 3880, - device_duration: 12010, - self_host_duration: 1266, - self_device_duration: 0, - }, - { - name: 'aten::max_pool2d_with_indices', - calls: 2, - host_duration: 112, - device_duration: 938, - self_host_duration: 82, - self_device_duration: 938, - }, - { - name: 'aten::max_pool2d', - calls: 2, - host_duration: 127, - device_duration: 938, - self_host_duration: 15, - self_device_duration: 0, - }, - { - name: 'aten::add_', - calls: 998, - host_duration: 21459, - device_duration: 13178, - self_host_duration: 11041, - self_device_duration: 13178, - }, - { - name: 'aten::mean', - calls: 2, - host_duration: 104, - device_duration: 126, - self_host_duration: 76, - self_device_duration: 126, - }, - { - name: 'aten::adaptive_avg_pool2d', - calls: 2, - host_duration: 117, - device_duration: 126, - self_host_duration: 13, - self_device_duration: 0, - }, - { - name: 'aten::_reshape_alias', - calls: 4, - host_duration: 26, - device_duration: 0, - self_host_duration: 26, - self_device_duration: 0, - }, - { - name: 'aten::flatten', - calls: 2, - host_duration: 31, - device_duration: 0, - self_host_duration: 15, - self_device_duration: 0, - }, - { - name: 'aten::transpose', - calls: 10, - host_duration: 85, - device_duration: 0, - self_host_duration: 68, - self_device_duration: 0, - }, - { - name: 'aten::t', - calls: 10, - host_duration: 145, - device_duration: 0, - self_host_duration: 60, - self_device_duration: 0, - }, - { - name: 'aten::expand', - calls: 4, - host_duration: 30, - device_duration: 0, - self_host_duration: 25, - self_device_duration: 0, - }, - { - name: 'aten::addmm', - calls: 2, - host_duration: 334, - device_duration: 84, - self_host_duration: 234, - self_device_duration: 84, - }, - { - name: 'aten::linear', - calls: 2, - host_duration: 386, - device_duration: 84, - self_host_duration: 19, - self_device_duration: 0, - }, - { - name: 'aten::_log_softmax', - calls: 2, - host_duration: 83, - device_duration: 14, - self_host_duration: 55, - self_device_duration: 14, - }, - { - name: 'aten::log_softmax', - calls: 2, - host_duration: 106, - device_duration: 14, - self_host_duration: 20, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_forward', - calls: 2, - host_duration: 96, - device_duration: 8, - self_host_duration: 68, - self_device_duration: 8, - }, - { - name: 'aten::nll_loss', - calls: 2, - host_duration: 105, - device_duration: 8, - self_host_duration: 9, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_nd', - calls: 2, - host_duration: 113, - device_duration: 8, - self_host_duration: 8, - self_device_duration: 0, - }, - { - name: 'aten::cross_entropy_loss', - calls: 2, - host_duration: 243, - device_duration: 22, - self_host_duration: 24, - self_device_duration: 0, - }, - { - name: 'aten::fill_', - calls: 328, - host_duration: 4140, - device_duration: 866, - self_host_duration: 1851, - self_device_duration: 866, - }, - { - name: 'aten::ones_like', - calls: 2, - host_duration: 104, - device_duration: 2, - self_host_duration: 14, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_backward', - calls: 2, - host_duration: 192, - device_duration: 9, - self_host_duration: 84, - self_device_duration: 6, - }, - { - name: 'NllLossBackward0', - calls: 2, - host_duration: 297, - device_duration: 9, - self_host_duration: 105, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: NllLossBackward0', - calls: 2, - host_duration: 352, - device_duration: 9, - self_host_duration: 55, - self_device_duration: 0, - }, - { - name: 'aten::_log_softmax_backward_data', - calls: 2, - host_duration: 71, - device_duration: 18, - self_host_duration: 43, - self_device_duration: 18, - }, - { - name: 'LogSoftmaxBackward0', - calls: 2, - host_duration: 91, - device_duration: 18, - self_host_duration: 20, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: LogSoftmaxBackward0', - calls: 2, - host_duration: 126, - device_duration: 18, - self_host_duration: 35, - self_device_duration: 0, - }, - { - name: 'aten::mm', - calls: 4, - host_duration: 283, - device_duration: 134, - self_host_duration: 186, - self_device_duration: 134, - }, - { - name: 'AddmmBackward0', - calls: 2, - host_duration: 418, - device_duration: 134, - self_host_duration: 47, - self_device_duration: 0, - }, - { - name: 'aten::sum', - calls: 2, - host_duration: 92, - device_duration: 14, - self_host_duration: 62, - self_device_duration: 14, - }, - { - name: 'autograd::engine::evaluate_function: AddmmBackward0', - calls: 2, - host_duration: 594, - device_duration: 148, - self_host_duration: 75, - self_device_duration: 0, - }, - { - name: 'torch::autograd::AccumulateGrad', - calls: 322, - host_duration: 10317, - device_duration: 1069, - self_host_duration: 2127, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: torch::autograd::AccumulateGrad', - calls: 322, - host_duration: 15128, - device_duration: 1069, - self_host_duration: 4811, - self_device_duration: 0, - }, - { - name: 'TBackward0', - calls: 2, - host_duration: 30, - device_duration: 0, - self_host_duration: 6, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: TBackward0', - calls: 2, - host_duration: 45, - device_duration: 0, - self_host_duration: 15, - self_device_duration: 0, - }, - { - name: 'aten::reshape', - calls: 2, - host_duration: 20, - device_duration: 0, - self_host_duration: 10, - self_device_duration: 0, - }, - { - name: 'ReshapeAliasBackward0', - calls: 2, - host_duration: 31, - device_duration: 0, - self_host_duration: 11, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: ReshapeAliasBackward0', - calls: 2, - host_duration: 48, - device_duration: 0, - self_host_duration: 17, - self_device_duration: 0, - }, - { - name: 'MeanBackward1', - calls: 2, - host_duration: 172, - device_duration: 75, - self_host_duration: 18, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: MeanBackward1', - calls: 2, - host_duration: 201, - device_duration: 75, - self_host_duration: 29, - self_device_duration: 0, - }, - { - name: 'aten::threshold_backward', - calls: 98, - host_duration: 3652, - device_duration: 18018, - self_host_duration: 2361, - self_device_duration: 18018, - }, - { - name: 'ReluBackward0', - calls: 98, - host_duration: 4567, - device_duration: 18018, - self_host_duration: 915, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: ReluBackward0', - calls: 98, - host_duration: 6457, - device_duration: 18018, - self_host_duration: 1890, - self_device_duration: 0, - }, - { - name: 'AddBackward0', - calls: 32, - host_duration: 26, - device_duration: 0, - self_host_duration: 26, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: AddBackward0', - calls: 32, - host_duration: 261, - device_duration: 0, - self_host_duration: 235, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_batch_norm_backward', - calls: 106, - host_duration: 9943, - device_duration: 44401, - self_host_duration: 4355, - self_device_duration: 44401, - }, - { - name: 'CudnnBatchNormBackward0', - calls: 106, - host_duration: 11132, - device_duration: 44401, - self_host_duration: 1189, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: CudnnBatchNormBackward0', - calls: 106, - host_duration: 14696, - device_duration: 44401, - self_host_duration: 3564, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_convolution_backward_input', - calls: 104, - host_duration: 18813, - device_duration: 75568, - self_host_duration: 13997, - self_device_duration: 75568, - }, - { - name: 'aten::cudnn_convolution_backward_weight', - calls: 106, - host_duration: 18792, - device_duration: 88992, - self_host_duration: 11101, - self_device_duration: 88992, - }, - { - name: 'aten::cudnn_convolution_backward', - calls: 106, - host_duration: 40064, - device_duration: 164560, - self_host_duration: 2459, - self_device_duration: 0, - }, - { - name: 'CudnnConvolutionBackward0', - calls: 106, - host_duration: 41205, - device_duration: 164560, - self_host_duration: 1141, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: CudnnConvolutionBackward0', - calls: 106, - host_duration: 45209, - device_duration: 175014, - self_host_duration: 2826, - self_device_duration: 0, - }, - { - name: 'aten::max_pool2d_with_indices_backward', - calls: 2, - host_duration: 145, - device_duration: 3016, - self_host_duration: 61, - self_device_duration: 2556, - }, - { - name: 'MaxPool2DWithIndicesBackward0', - calls: 2, - host_duration: 165, - device_duration: 3016, - self_host_duration: 20, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: MaxPool2DWithIndicesBackward0', - calls: 2, - host_duration: 209, - device_duration: 3016, - self_host_duration: 44, - self_device_duration: 0, - }, - { - name: 'aten::mul_', - calls: 322, - host_duration: 6835, - device_duration: 803, - self_host_duration: 3630, - self_device_duration: 803, - }, - ], - }, - path: '0', - children: [ - { - left: { - name: 'multiple nodes', - duration: 168, - device_duration: 0, - total_duration: 168, - aggs: [ - { - name: 'aten::empty', - calls: 2, - host_duration: 100, - device_duration: 0, - self_host_duration: 100, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 4, - device_duration: 0, - self_host_duration: 4, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 1, - host_duration: 119, - device_duration: 0, - self_host_duration: 64, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'multiple nodes', - duration: 24, - device_duration: 0, - total_duration: 24, - aggs: [ - { - name: 'aten::empty', - calls: 2, - host_duration: 17, - device_duration: 0, - self_host_duration: 17, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 1, - device_duration: 0, - self_host_duration: 1, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 1, - host_duration: 15, - device_duration: 0, - self_host_duration: 6, - self_device_duration: 0, - }, - ], - }, - path: '0-0', - }, - { - left: { - name: 'enumerate(DataLoader)#_SingleProcessDataLoaderIter.__next__', - duration: 1766103, - device_duration: 0, - total_duration: 1766103, - aggs: [ - { - name: 'aten::empty', - calls: 1413, - host_duration: 62288, - device_duration: 0, - self_host_duration: 62288, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 257, - host_duration: 959, - device_duration: 0, - self_host_duration: 959, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 257, - host_duration: 35273, - device_duration: 0, - self_host_duration: 16154, - self_device_duration: 0, - }, - { - name: 'aten::to', - calls: 1344, - host_duration: 877101, - device_duration: 0, - self_host_duration: 18482, - self_device_duration: 0, - }, - { - name: 'detach', - calls: 128, - host_duration: 2191, - device_duration: 0, - self_host_duration: 2191, - self_device_duration: 0, - }, - { - name: 'aten::detach', - calls: 128, - host_duration: 5301, - device_duration: 0, - self_host_duration: 3110, - self_device_duration: 0, - }, - { - name: 'aten::as_strided', - calls: 450, - host_duration: 4175, - device_duration: 0, - self_host_duration: 4175, - self_device_duration: 0, - }, - { - name: 'aten::unsqueeze', - calls: 192, - host_duration: 9560, - device_duration: 0, - self_host_duration: 8045, - self_device_duration: 0, - }, - { - name: 'aten::empty_strided', - calls: 576, - host_duration: 24689, - device_duration: 0, - self_host_duration: 24689, - self_device_duration: 0, - }, - { - name: 'aten::copy_', - calls: 704, - host_duration: 780214, - device_duration: 0, - self_host_duration: 780214, - self_device_duration: 0, - }, - { - name: 'aten::_to_copy', - calls: 640, - host_duration: 858619, - device_duration: 0, - self_host_duration: 53009, - self_device_duration: 0, - }, - { - name: 'aten::upsample_bilinear2d', - calls: 64, - host_duration: 224031, - device_duration: 0, - self_host_duration: 204660, - self_device_duration: 0, - }, - { - name: 'aten::squeeze', - calls: 64, - host_duration: 4719, - device_duration: 0, - self_host_duration: 4119, - self_device_duration: 0, - }, - { - name: 'aten::round', - calls: 64, - host_duration: 16028, - device_duration: 0, - self_host_duration: 16028, - self_device_duration: 0, - }, - { - name: 'aten::slice', - calls: 130, - host_duration: 8918, - device_duration: 0, - self_host_duration: 7569, - self_device_duration: 0, - }, - { - name: 'detach_', - calls: 256, - host_duration: 2092, - device_duration: 0, - self_host_duration: 2092, - self_device_duration: 0, - }, - { - name: 'aten::detach_', - calls: 256, - host_duration: 7228, - device_duration: 0, - self_host_duration: 5136, - self_device_duration: 0, - }, - { - name: 'aten::result_type', - calls: 320, - host_duration: 884, - device_duration: 0, - self_host_duration: 884, - self_device_duration: 0, - }, - { - name: 'aten::pow', - calls: 320, - host_duration: 43030, - device_duration: 0, - self_host_duration: 39068, - self_device_duration: 0, - }, - { - name: 'aten::sub', - calls: 320, - host_duration: 91440, - device_duration: 0, - self_host_duration: 37676, - self_device_duration: 0, - }, - { - name: 'aten::gt', - calls: 320, - host_duration: 35514, - device_duration: 0, - self_host_duration: 24706, - self_device_duration: 0, - }, - { - name: 'aten::_local_scalar_dense', - calls: 384, - host_duration: 2467, - device_duration: 0, - self_host_duration: 2467, - self_device_duration: 0, - }, - { - name: 'aten::item', - calls: 384, - host_duration: 10375, - device_duration: 0, - self_host_duration: 7908, - self_device_duration: 0, - }, - { - name: 'aten::is_nonzero', - calls: 320, - host_duration: 13905, - device_duration: 0, - self_host_duration: 5383, - self_device_duration: 0, - }, - { - name: 'aten::div', - calls: 64, - host_duration: 87841, - device_duration: 0, - self_host_duration: 76794, - self_device_duration: 0, - }, - { - name: 'aten::resize_', - calls: 2, - host_duration: 117, - device_duration: 0, - self_host_duration: 117, - self_device_duration: 0, - }, - { - name: 'aten::narrow', - calls: 2, - host_duration: 142, - device_duration: 0, - self_host_duration: 51, - self_device_duration: 0, - }, - { - name: 'aten::_cat', - calls: 2, - host_duration: 51526, - device_duration: 0, - self_host_duration: 51229, - self_device_duration: 0, - }, - { - name: 'aten::cat', - calls: 2, - host_duration: 51674, - device_duration: 0, - self_host_duration: 148, - self_device_duration: 0, - }, - { - name: 'aten::stack', - calls: 2, - host_duration: 75677, - device_duration: 0, - self_host_duration: 19330, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'enumerate(DataLoader)#_SingleProcessDataLoaderIter.__next__', - duration: 146745, - device_duration: 0, - total_duration: 146745, - aggs: [ - { - name: 'aten::empty', - calls: 1413, - host_duration: 12399, - device_duration: 0, - self_host_duration: 12399, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 257, - host_duration: 98, - device_duration: 0, - self_host_duration: 98, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 257, - host_duration: 7665, - device_duration: 0, - self_host_duration: 1689, - self_device_duration: 0, - }, - { - name: 'aten::to', - calls: 1344, - host_duration: 21137, - device_duration: 0, - self_host_duration: 2377, - self_device_duration: 0, - }, - { - name: 'detach', - calls: 128, - host_duration: 364, - device_duration: 0, - self_host_duration: 361, - self_device_duration: 0, - }, - { - name: 'aten::detach', - calls: 128, - host_duration: 745, - device_duration: 0, - self_host_duration: 384, - self_device_duration: 0, - }, - { - name: 'aten::as_strided', - calls: 450, - host_duration: 527, - device_duration: 0, - self_host_duration: 527, - self_device_duration: 0, - }, - { - name: 'aten::unsqueeze', - calls: 192, - host_duration: 1050, - device_duration: 0, - self_host_duration: 869, - self_device_duration: 0, - }, - { - name: 'aten::empty_strided', - calls: 576, - host_duration: 3689, - device_duration: 0, - self_host_duration: 3689, - self_device_duration: 0, - }, - { - name: 'aten::copy_', - calls: 704, - host_duration: 8695, - device_duration: 0, - self_host_duration: 8695, - self_device_duration: 0, - }, - { - name: 'aten::_to_copy', - calls: 640, - host_duration: 18760, - device_duration: 0, - self_host_duration: 6122, - self_device_duration: 0, - }, - { - name: 'aten::upsample_bilinear2d', - calls: 64, - host_duration: 20349, - device_duration: 0, - self_host_duration: 17634, - self_device_duration: 0, - }, - { - name: 'aten::squeeze', - calls: 64, - host_duration: 562, - device_duration: 0, - self_host_duration: 487, - self_device_duration: 0, - }, - { - name: 'aten::round', - calls: 64, - host_duration: 6658, - device_duration: 0, - self_host_duration: 6658, - self_device_duration: 0, - }, - { - name: 'aten::slice', - calls: 130, - host_duration: 1028, - device_duration: 0, - self_host_duration: 870, - self_device_duration: 0, - }, - { - name: 'detach_', - calls: 256, - host_duration: 142, - device_duration: 0, - self_host_duration: 129, - self_device_duration: 0, - }, - { - name: 'aten::detach_', - calls: 256, - host_duration: 755, - device_duration: 0, - self_host_duration: 626, - self_device_duration: 0, - }, - { - name: 'aten::result_type', - calls: 320, - host_duration: 168, - device_duration: 0, - self_host_duration: 168, - self_device_duration: 0, - }, - { - name: 'aten::pow', - calls: 320, - host_duration: 4922, - device_duration: 0, - self_host_duration: 4440, - self_device_duration: 0, - }, - { - name: 'aten::sub', - calls: 320, - host_duration: 9959, - device_duration: 0, - self_host_duration: 4339, - self_device_duration: 0, - }, - { - name: 'aten::gt', - calls: 320, - host_duration: 3848, - device_duration: 0, - self_host_duration: 2737, - self_device_duration: 0, - }, - { - name: 'aten::_local_scalar_dense', - calls: 384, - host_duration: 209, - device_duration: 0, - self_host_duration: 209, - self_device_duration: 0, - }, - { - name: 'aten::item', - calls: 384, - host_duration: 1398, - device_duration: 0, - self_host_duration: 1187, - self_device_duration: 0, - }, - { - name: 'aten::is_nonzero', - calls: 320, - host_duration: 2013, - device_duration: 0, - self_host_duration: 812, - self_device_duration: 0, - }, - { - name: 'aten::div', - calls: 64, - host_duration: 7421, - device_duration: 0, - self_host_duration: 6234, - self_device_duration: 0, - }, - { - name: 'aten::resize_', - calls: 2, - host_duration: 36, - device_duration: 0, - self_host_duration: 36, - self_device_duration: 0, - }, - { - name: 'aten::narrow', - calls: 2, - host_duration: 19, - device_duration: 0, - self_host_duration: 9, - self_device_duration: 0, - }, - { - name: 'aten::_cat', - calls: 2, - host_duration: 4628, - device_duration: 0, - self_host_duration: 4566, - self_device_duration: 0, - }, - { - name: 'aten::cat', - calls: 2, - host_duration: 4649, - device_duration: 0, - self_host_duration: 21, - self_device_duration: 0, - }, - { - name: 'aten::stack', - calls: 2, - host_duration: 10884, - device_duration: 0, - self_host_duration: 5859, - self_device_duration: 0, - }, - ], - }, - path: '0-1', - }, - { - left: { - name: 'multiple nodes', - duration: 5170, - device_duration: 4402, - total_duration: 4402, - aggs: [ - { - name: 'aten::empty_strided', - calls: 2, - host_duration: 209, - device_duration: 0, - self_host_duration: 209, - self_device_duration: 0, - }, - { - name: 'aten::copy_', - calls: 2, - host_duration: 4696, - device_duration: 4402, - self_host_duration: 93, - self_device_duration: 4402, - }, - { - name: 'aten::_to_copy', - calls: 2, - host_duration: 5111, - device_duration: 4402, - self_host_duration: 206, - self_device_duration: 0, - }, - { - name: 'aten::to', - calls: 2, - host_duration: 5170, - device_duration: 4402, - self_host_duration: 59, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'multiple nodes', - duration: 4681, - device_duration: 4350, - total_duration: 4350, - aggs: [ - { - name: 'aten::empty_strided', - calls: 2, - host_duration: 65, - device_duration: 0, - self_host_duration: 65, - self_device_duration: 0, - }, - { - name: 'aten::copy_', - calls: 2, - host_duration: 4575, - device_duration: 4350, - self_host_duration: 26, - self_device_duration: 4350, - }, - { - name: 'aten::_to_copy', - calls: 2, - host_duration: 4670, - device_duration: 4350, - self_host_duration: 30, - self_device_duration: 0, - }, - { - name: 'aten::to', - calls: 2, - host_duration: 4681, - device_duration: 4350, - self_host_duration: 11, - self_device_duration: 0, - }, - ], - }, - path: '0-2', - }, - { - left: { - name: 'nn.Module: ResNet', - duration: 113664, - device_duration: 61356, - total_duration: 61356, - aggs: [ - { - name: 'aten::empty', - calls: 318, - host_duration: 14161, - device_duration: 0, - self_host_duration: 14161, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_convolution', - calls: 53, - host_duration: 22091, - device_duration: 36599, - self_host_duration: 17567, - self_device_duration: 36599, - }, - { - name: 'aten::_convolution', - calls: 53, - host_duration: 25744, - device_duration: 36599, - self_host_duration: 3653, - self_device_duration: 0, - }, - { - name: 'aten::convolution', - calls: 53, - host_duration: 27753, - device_duration: 36599, - self_host_duration: 2009, - self_device_duration: 0, - }, - { - name: 'aten::conv2d', - calls: 53, - host_duration: 29777, - device_duration: 36599, - self_host_duration: 2024, - self_device_duration: 0, - }, - { - name: 'aten::add', - calls: 53, - host_duration: 6519, - device_duration: 54, - self_host_duration: 5666, - self_device_duration: 54, - }, - { - name: 'aten::empty_like', - calls: 53, - host_duration: 5624, - device_duration: 0, - self_host_duration: 2390, - self_device_duration: 0, - }, - { - name: 'aten::view', - calls: 53, - host_duration: 826, - device_duration: 0, - self_host_duration: 826, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_batch_norm', - calls: 53, - host_duration: 35818, - device_duration: 12974, - self_host_duration: 20557, - self_device_duration: 12974, - }, - { - name: 'aten::_batch_norm_impl_index', - calls: 53, - host_duration: 38324, - device_duration: 12974, - self_host_duration: 2506, - self_device_duration: 0, - }, - { - name: 'aten::batch_norm', - calls: 53, - host_duration: 40105, - device_duration: 12974, - self_host_duration: 1781, - self_device_duration: 0, - }, - { - name: 'aten::clamp_min', - calls: 49, - host_duration: 2702, - device_duration: 6002, - self_host_duration: 1935, - self_device_duration: 6002, - }, - { - name: 'aten::clamp_min_', - calls: 49, - host_duration: 4273, - device_duration: 6002, - self_host_duration: 1571, - self_device_duration: 0, - }, - { - name: 'aten::relu_', - calls: 49, - host_duration: 8371, - device_duration: 6002, - self_host_duration: 4098, - self_device_duration: 0, - }, - { - name: 'aten::max_pool2d_with_indices', - calls: 1, - host_duration: 230, - device_duration: 474, - self_host_duration: 212, - self_device_duration: 474, - }, - { - name: 'aten::max_pool2d', - calls: 1, - host_duration: 280, - device_duration: 474, - self_host_duration: 50, - self_device_duration: 0, - }, - { - name: 'aten::add_', - calls: 16, - host_duration: 1546, - device_duration: 5141, - self_host_duration: 1290, - self_device_duration: 5141, - }, - { - name: 'aten::mean', - calls: 1, - host_duration: 189, - device_duration: 69, - self_host_duration: 170, - self_device_duration: 69, - }, - { - name: 'aten::adaptive_avg_pool2d', - calls: 1, - host_duration: 234, - device_duration: 69, - self_host_duration: 45, - self_device_duration: 0, - }, - { - name: 'aten::_reshape_alias', - calls: 1, - host_duration: 52, - device_duration: 0, - self_host_duration: 52, - self_device_duration: 0, - }, - { - name: 'aten::flatten', - calls: 1, - host_duration: 106, - device_duration: 0, - self_host_duration: 54, - self_device_duration: 0, - }, - { - name: 'aten::as_strided', - calls: 2, - host_duration: 23, - device_duration: 0, - self_host_duration: 23, - self_device_duration: 0, - }, - { - name: 'aten::transpose', - calls: 1, - host_duration: 55, - device_duration: 0, - self_host_duration: 41, - self_device_duration: 0, - }, - { - name: 'aten::t', - calls: 1, - host_duration: 119, - device_duration: 0, - self_host_duration: 64, - self_device_duration: 0, - }, - { - name: 'aten::expand', - calls: 1, - host_duration: 49, - device_duration: 0, - self_host_duration: 40, - self_device_duration: 0, - }, - { - name: 'aten::addmm', - calls: 1, - host_duration: 404, - device_duration: 43, - self_host_duration: 302, - self_device_duration: 43, - }, - { - name: 'aten::linear', - calls: 1, - host_duration: 591, - device_duration: 43, - self_host_duration: 68, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'nn.Module: ResNet', - duration: 28725, - device_duration: 60899, - total_duration: 60899, - aggs: [ - { - name: 'aten::empty', - calls: 318, - host_duration: 2292, - device_duration: 0, - self_host_duration: 2292, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_convolution', - calls: 53, - host_duration: 8713, - device_duration: 36205, - self_host_duration: 6819, - self_device_duration: 36205, - }, - { - name: 'aten::_convolution', - calls: 53, - host_duration: 9298, - device_duration: 36205, - self_host_duration: 585, - self_device_duration: 0, - }, - { - name: 'aten::convolution', - calls: 53, - host_duration: 9653, - device_duration: 36205, - self_host_duration: 355, - self_device_duration: 0, - }, - { - name: 'aten::conv2d', - calls: 53, - host_duration: 9932, - device_duration: 36205, - self_host_duration: 279, - self_device_duration: 0, - }, - { - name: 'aten::add', - calls: 53, - host_duration: 1897, - device_duration: 58, - self_host_duration: 1201, - self_device_duration: 58, - }, - { - name: 'aten::empty_like', - calls: 53, - host_duration: 933, - device_duration: 0, - self_host_duration: 284, - self_device_duration: 0, - }, - { - name: 'aten::view', - calls: 53, - host_duration: 130, - device_duration: 0, - self_host_duration: 130, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_batch_norm', - calls: 53, - host_duration: 5540, - device_duration: 12913, - self_host_duration: 2504, - self_device_duration: 12913, - }, - { - name: 'aten::_batch_norm_impl_index', - calls: 53, - host_duration: 5942, - device_duration: 12913, - self_host_duration: 402, - self_device_duration: 0, - }, - { - name: 'aten::batch_norm', - calls: 53, - host_duration: 6219, - device_duration: 12913, - self_host_duration: 277, - self_device_duration: 0, - }, - { - name: 'aten::clamp_min', - calls: 49, - host_duration: 1108, - device_duration: 6006, - self_host_duration: 523, - self_device_duration: 6006, - }, - { - name: 'aten::clamp_min_', - calls: 49, - host_duration: 1315, - device_duration: 6006, - self_host_duration: 207, - self_device_duration: 0, - }, - { - name: 'aten::relu_', - calls: 49, - host_duration: 1939, - device_duration: 6006, - self_host_duration: 624, - self_device_duration: 0, - }, - { - name: 'aten::max_pool2d_with_indices', - calls: 1, - host_duration: 53, - device_duration: 472, - self_host_duration: 38, - self_device_duration: 472, - }, - { - name: 'aten::max_pool2d', - calls: 1, - host_duration: 61, - device_duration: 472, - self_host_duration: 8, - self_device_duration: 0, - }, - { - name: 'aten::add_', - calls: 16, - host_duration: 448, - device_duration: 5140, - self_host_duration: 268, - self_device_duration: 5140, - }, - { - name: 'aten::mean', - calls: 1, - host_duration: 53, - device_duration: 63, - self_host_duration: 39, - self_device_duration: 63, - }, - { - name: 'aten::adaptive_avg_pool2d', - calls: 1, - host_duration: 59, - device_duration: 63, - self_host_duration: 6, - self_device_duration: 0, - }, - { - name: 'aten::_reshape_alias', - calls: 1, - host_duration: 8, - device_duration: 0, - self_host_duration: 8, - self_device_duration: 0, - }, - { - name: 'aten::flatten', - calls: 1, - host_duration: 15, - device_duration: 0, - self_host_duration: 7, - self_device_duration: 0, - }, - { - name: 'aten::as_strided', - calls: 2, - host_duration: 3, - device_duration: 0, - self_host_duration: 3, - self_device_duration: 0, - }, - { - name: 'aten::transpose', - calls: 1, - host_duration: 8, - device_duration: 0, - self_host_duration: 6, - self_device_duration: 0, - }, - { - name: 'aten::t', - calls: 1, - host_duration: 15, - device_duration: 0, - self_host_duration: 7, - self_device_duration: 0, - }, - { - name: 'aten::expand', - calls: 1, - host_duration: 6, - device_duration: 0, - self_host_duration: 5, - self_device_duration: 0, - }, - { - name: 'aten::addmm', - calls: 1, - host_duration: 173, - device_duration: 42, - self_host_duration: 123, - self_device_duration: 42, - }, - { - name: 'aten::linear', - calls: 1, - host_duration: 198, - device_duration: 42, - self_host_duration: 10, - self_device_duration: 0, - }, - ], - }, - path: '0-3', - }, - { - left: { - name: 'nn.Module: CrossEntropyLoss', - duration: 711, - device_duration: 11, - total_duration: 11, - aggs: [ - { - name: 'aten::to', - calls: 1, - host_duration: 5, - device_duration: 0, - self_host_duration: 5, - self_device_duration: 0, - }, - { - name: 'aten::_log_softmax', - calls: 1, - host_duration: 158, - device_duration: 7, - self_host_duration: 139, - self_device_duration: 7, - }, - { - name: 'aten::log_softmax', - calls: 1, - host_duration: 241, - device_duration: 7, - self_host_duration: 78, - self_device_duration: 0, - }, - { - name: 'aten::resize_', - calls: 1, - host_duration: 5, - device_duration: 0, - self_host_duration: 5, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_forward', - calls: 1, - host_duration: 256, - device_duration: 4, - self_host_duration: 233, - self_device_duration: 4, - }, - { - name: 'aten::nll_loss', - calls: 1, - host_duration: 290, - device_duration: 4, - self_host_duration: 34, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_nd', - calls: 1, - host_duration: 313, - device_duration: 4, - self_host_duration: 23, - self_device_duration: 0, - }, - { - name: 'aten::cross_entropy_loss', - calls: 1, - host_duration: 614, - device_duration: 11, - self_host_duration: 60, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'nn.Module: CrossEntropyLoss', - duration: 156, - device_duration: 11, - total_duration: 11, - aggs: [ - { - name: 'aten::to', - calls: 1, - host_duration: 2, - device_duration: 0, - self_host_duration: 2, - self_device_duration: 0, - }, - { - name: 'aten::_log_softmax', - calls: 1, - host_duration: 42, - device_duration: 7, - self_host_duration: 28, - self_device_duration: 7, - }, - { - name: 'aten::log_softmax', - calls: 1, - host_duration: 54, - device_duration: 7, - self_host_duration: 10, - self_device_duration: 0, - }, - { - name: 'aten::resize_', - calls: 1, - host_duration: 0, - device_duration: 0, - self_host_duration: 0, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_forward', - calls: 1, - host_duration: 47, - device_duration: 4, - self_host_duration: 34, - self_device_duration: 4, - }, - { - name: 'aten::nll_loss', - calls: 1, - host_duration: 52, - device_duration: 4, - self_host_duration: 5, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_nd', - calls: 1, - host_duration: 56, - device_duration: 4, - self_host_duration: 4, - self_device_duration: 0, - }, - { - name: 'aten::cross_entropy_loss', - calls: 1, - host_duration: 119, - device_duration: 11, - self_host_duration: 9, - self_device_duration: 0, - }, - ], - }, - path: '0-4', - }, - { - left: { - name: 'aten::zeros', - duration: 119, - device_duration: 0, - total_duration: 119, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 47, - device_duration: 0, - self_host_duration: 47, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 4, - device_duration: 0, - self_host_duration: 4, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 1, - host_duration: 119, - device_duration: 0, - self_host_duration: 68, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'aten::zeros', - duration: 17, - device_duration: 0, - total_duration: 17, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 8, - device_duration: 0, - self_host_duration: 8, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 2, - device_duration: 0, - self_host_duration: 2, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 1, - host_duration: 17, - device_duration: 0, - self_host_duration: 7, - self_device_duration: 0, - }, - ], - }, - path: '0-5', - }, - { - left: { - name: 'Optimizer.zero_grad#SGD.zero_grad', - duration: 22960, - device_duration: 142, - total_duration: 142, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 38, - device_duration: 0, - self_host_duration: 38, - self_device_duration: 0, - }, - { - name: 'aten::fill_', - calls: 161, - host_duration: 7097, - device_duration: 142, - self_host_duration: 4914, - self_device_duration: 142, - }, - { - name: 'aten::zero_', - calls: 161, - host_duration: 14725, - device_duration: 142, - self_host_duration: 7628, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'Optimizer.zero_grad#SGD.zero_grad', - duration: 4075, - device_duration: 264, - total_duration: 264, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 6, - device_duration: 0, - self_host_duration: 6, - self_device_duration: 0, - }, - { - name: 'aten::fill_', - calls: 161, - host_duration: 2036, - device_duration: 264, - self_host_duration: 909, - self_device_duration: 264, - }, - { - name: 'aten::zero_', - calls: 161, - host_duration: 2855, - device_duration: 264, - self_host_duration: 819, - self_device_duration: 0, - }, - ], - }, - path: '0-6', - }, - { - left: { - name: 'aten::ones_like', - duration: 253, - device_duration: 1, - total_duration: 1, - aggs: [ - { - name: 'aten::empty_strided', - calls: 1, - host_duration: 79, - device_duration: 0, - self_host_duration: 79, - self_device_duration: 0, - }, - { - name: 'aten::empty_like', - calls: 1, - host_duration: 126, - device_duration: 0, - self_host_duration: 47, - self_device_duration: 0, - }, - { - name: 'aten::fill_', - calls: 1, - host_duration: 50, - device_duration: 1, - self_host_duration: 35, - self_device_duration: 1, - }, - { - name: 'aten::ones_like', - calls: 1, - host_duration: 253, - device_duration: 1, - self_host_duration: 77, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'aten::ones_like', - duration: 53, - device_duration: 1, - total_duration: 1, - aggs: [ - { - name: 'aten::empty_strided', - calls: 1, - host_duration: 18, - device_duration: 0, - self_host_duration: 18, - self_device_duration: 0, - }, - { - name: 'aten::empty_like', - calls: 1, - host_duration: 26, - device_duration: 0, - self_host_duration: 8, - self_device_duration: 0, - }, - { - name: 'aten::fill_', - calls: 1, - host_duration: 20, - device_duration: 1, - self_host_duration: 8, - self_device_duration: 1, - }, - { - name: 'aten::ones_like', - calls: 1, - host_duration: 53, - device_duration: 1, - self_host_duration: 7, - self_device_duration: 0, - }, - ], - }, - path: '0-7', - }, - { - left: { - name: 'nn.Module: CrossEntropyLoss.backward', - duration: 898, - device_duration: 13, - total_duration: 13, - aggs: [ - { - name: 'aten::fill_', - calls: 1, - host_duration: 69, - device_duration: 1, - self_host_duration: 43, - self_device_duration: 1, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 120, - device_duration: 1, - self_host_duration: 51, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_backward', - calls: 1, - host_duration: 304, - device_duration: 4, - self_host_duration: 168, - self_device_duration: 3, - }, - { - name: 'NllLossBackward0', - calls: 1, - host_duration: 368, - device_duration: 4, - self_host_duration: 64, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: NllLossBackward0', - calls: 1, - host_duration: 503, - device_duration: 4, - self_host_duration: 135, - self_device_duration: 0, - }, - { - name: 'aten::_log_softmax_backward_data', - calls: 1, - host_duration: 127, - device_duration: 9, - self_host_duration: 105, - self_device_duration: 9, - }, - { - name: 'LogSoftmaxBackward0', - calls: 1, - host_duration: 207, - device_duration: 9, - self_host_duration: 80, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: LogSoftmaxBackward0', - calls: 1, - host_duration: 349, - device_duration: 9, - self_host_duration: 142, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'nn.Module: CrossEntropyLoss.backward', - duration: 214, - device_duration: 14, - total_duration: 14, - aggs: [ - { - name: 'aten::fill_', - calls: 1, - host_duration: 36, - device_duration: 2, - self_host_duration: 13, - self_device_duration: 2, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 45, - device_duration: 2, - self_host_duration: 9, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_backward', - calls: 1, - host_duration: 99, - device_duration: 5, - self_host_duration: 43, - self_device_duration: 3, - }, - { - name: 'NllLossBackward0', - calls: 1, - host_duration: 112, - device_duration: 5, - self_host_duration: 13, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: NllLossBackward0', - calls: 1, - host_duration: 141, - device_duration: 5, - self_host_duration: 29, - self_device_duration: 0, - }, - { - name: 'aten::_log_softmax_backward_data', - calls: 1, - host_duration: 35, - device_duration: 9, - self_host_duration: 21, - self_device_duration: 9, - }, - { - name: 'LogSoftmaxBackward0', - calls: 1, - host_duration: 46, - device_duration: 9, - self_host_duration: 11, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: LogSoftmaxBackward0', - calls: 1, - host_duration: 64, - device_duration: 9, - self_host_duration: 18, - self_device_duration: 0, - }, - ], - }, - path: '0-8', - }, - { - left: { - name: 'nn.Module: ResNet.backward', - duration: 180998, - device_duration: 123177, - total_duration: 123177, - aggs: [ - { - name: 'aten::as_strided', - calls: 5, - host_duration: 61, - device_duration: 0, - self_host_duration: 61, - self_device_duration: 0, - }, - { - name: 'aten::transpose', - calls: 4, - host_duration: 226, - device_duration: 0, - self_host_duration: 180, - self_device_duration: 0, - }, - { - name: 'aten::t', - calls: 4, - host_duration: 399, - device_duration: 0, - self_host_duration: 173, - self_device_duration: 0, - }, - { - name: 'aten::mm', - calls: 2, - host_duration: 345, - device_duration: 72, - self_host_duration: 282, - self_device_duration: 72, - }, - { - name: 'AddmmBackward0', - calls: 1, - host_duration: 854, - device_duration: 72, - self_host_duration: 208, - self_device_duration: 0, - }, - { - name: 'aten::sum', - calls: 1, - host_duration: 173, - device_duration: 8, - self_host_duration: 153, - self_device_duration: 8, - }, - { - name: 'aten::view', - calls: 54, - host_duration: 971, - device_duration: 0, - self_host_duration: 971, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: AddmmBackward0', - calls: 1, - host_duration: 1333, - device_duration: 80, - self_host_duration: 271, - self_device_duration: 0, - }, - { - name: 'aten::add_', - calls: 161, - host_duration: 12621, - device_duration: 501, - self_host_duration: 9839, - self_device_duration: 501, - }, - { - name: 'torch::autograd::AccumulateGrad', - calls: 161, - host_duration: 20767, - device_duration: 501, - self_host_duration: 8146, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: torch::autograd::AccumulateGrad', - calls: 161, - host_duration: 35735, - device_duration: 501, - self_host_duration: 14968, - self_device_duration: 0, - }, - { - name: 'TBackward0', - calls: 1, - host_duration: 128, - device_duration: 0, - self_host_duration: 30, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: TBackward0', - calls: 1, - host_duration: 197, - device_duration: 0, - self_host_duration: 69, - self_device_duration: 0, - }, - { - name: 'aten::_reshape_alias', - calls: 1, - host_duration: 31, - device_duration: 0, - self_host_duration: 31, - self_device_duration: 0, - }, - { - name: 'aten::reshape', - calls: 1, - host_duration: 79, - device_duration: 0, - self_host_duration: 48, - self_device_duration: 0, - }, - { - name: 'ReshapeAliasBackward0', - calls: 1, - host_duration: 131, - device_duration: 0, - self_host_duration: 52, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: ReshapeAliasBackward0', - calls: 1, - host_duration: 197, - device_duration: 0, - self_host_duration: 66, - self_device_duration: 0, - }, - { - name: 'aten::expand', - calls: 1, - host_duration: 84, - device_duration: 0, - self_host_duration: 69, - self_device_duration: 0, - }, - { - name: 'aten::to', - calls: 1, - host_duration: 6, - device_duration: 0, - self_host_duration: 6, - self_device_duration: 0, - }, - { - name: 'aten::div', - calls: 1, - host_duration: 289, - device_duration: 38, - self_host_duration: 267, - self_device_duration: 38, - }, - { - name: 'MeanBackward1', - calls: 1, - host_duration: 489, - device_duration: 38, - self_host_duration: 110, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: MeanBackward1', - calls: 1, - host_duration: 592, - device_duration: 38, - self_host_duration: 103, - self_device_duration: 0, - }, - { - name: 'aten::threshold_backward', - calls: 49, - host_duration: 6958, - device_duration: 8972, - self_host_duration: 6094, - self_device_duration: 8972, - }, - { - name: 'ReluBackward0', - calls: 49, - host_duration: 10647, - device_duration: 8972, - self_host_duration: 3689, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: ReluBackward0', - calls: 49, - host_duration: 16826, - device_duration: 8972, - self_host_duration: 6179, - self_device_duration: 0, - }, - { - name: 'AddBackward0', - calls: 16, - host_duration: 129, - device_duration: 0, - self_host_duration: 129, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: AddBackward0', - calls: 16, - host_duration: 1301, - device_duration: 0, - self_host_duration: 1172, - self_device_duration: 0, - }, - { - name: 'aten::empty', - calls: 370, - host_duration: 20319, - device_duration: 0, - self_host_duration: 20319, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_batch_norm_backward', - calls: 53, - host_duration: 31300, - device_duration: 22267, - self_host_duration: 18144, - self_device_duration: 22267, - }, - { - name: 'CudnnBatchNormBackward0', - calls: 53, - host_duration: 34805, - device_duration: 22267, - self_host_duration: 3505, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: CudnnBatchNormBackward0', - calls: 53, - host_duration: 44607, - device_duration: 22267, - self_host_duration: 9802, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_convolution_backward_input', - calls: 52, - host_duration: 20324, - device_duration: 38733, - self_host_duration: 15252, - self_device_duration: 38733, - }, - { - name: 'aten::cudnn_convolution_backward_weight', - calls: 53, - host_duration: 21997, - device_duration: 45837, - self_host_duration: 13786, - self_device_duration: 45837, - }, - { - name: 'aten::cudnn_convolution_backward', - calls: 53, - host_duration: 50059, - device_duration: 84570, - self_host_duration: 7738, - self_device_duration: 0, - }, - { - name: 'CudnnConvolutionBackward0', - calls: 53, - host_duration: 53558, - device_duration: 84570, - self_host_duration: 3499, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: CudnnConvolutionBackward0', - calls: 53, - host_duration: 64252, - device_duration: 89775, - self_host_duration: 8462, - self_device_duration: 0, - }, - { - name: 'aten::add', - calls: 16, - host_duration: 2232, - device_duration: 5205, - self_host_duration: 1944, - self_device_duration: 5205, - }, - { - name: 'aten::fill_', - calls: 1, - host_duration: 61, - device_duration: 230, - self_host_duration: 44, - self_device_duration: 230, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 104, - device_duration: 230, - self_host_duration: 43, - self_device_duration: 0, - }, - { - name: 'aten::max_pool2d_with_indices_backward', - calls: 1, - host_duration: 246, - device_duration: 1544, - self_host_duration: 128, - self_device_duration: 1314, - }, - { - name: 'MaxPool2DWithIndicesBackward0', - calls: 1, - host_duration: 304, - device_duration: 1544, - self_host_duration: 58, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: MaxPool2DWithIndicesBackward0', - calls: 1, - host_duration: 425, - device_duration: 1544, - self_host_duration: 121, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'nn.Module: ResNet.backward', - duration: 43714, - device_duration: 120604, - total_duration: 120604, - aggs: [ - { - name: 'aten::as_strided', - calls: 5, - host_duration: 9, - device_duration: 0, - self_host_duration: 9, - self_device_duration: 0, - }, - { - name: 'aten::transpose', - calls: 4, - host_duration: 38, - device_duration: 0, - self_host_duration: 31, - self_device_duration: 0, - }, - { - name: 'aten::t', - calls: 4, - host_duration: 59, - device_duration: 0, - self_host_duration: 21, - self_device_duration: 0, - }, - { - name: 'aten::mm', - calls: 2, - host_duration: 139, - device_duration: 67, - self_host_duration: 90, - self_device_duration: 67, - }, - { - name: 'AddmmBackward0', - calls: 1, - host_duration: 210, - device_duration: 67, - self_host_duration: 23, - self_device_duration: 0, - }, - { - name: 'aten::sum', - calls: 1, - host_duration: 47, - device_duration: 7, - self_host_duration: 32, - self_device_duration: 7, - }, - { - name: 'aten::view', - calls: 54, - host_duration: 166, - device_duration: 0, - self_host_duration: 166, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: AddmmBackward0', - calls: 1, - host_duration: 299, - device_duration: 74, - self_host_duration: 37, - self_device_duration: 0, - }, - { - name: 'aten::add_', - calls: 161, - host_duration: 4087, - device_duration: 534, - self_host_duration: 2037, - self_device_duration: 534, - }, - { - name: 'torch::autograd::AccumulateGrad', - calls: 161, - host_duration: 5134, - device_duration: 534, - self_host_duration: 1047, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: torch::autograd::AccumulateGrad', - calls: 161, - host_duration: 7473, - device_duration: 534, - self_host_duration: 2339, - self_device_duration: 0, - }, - { - name: 'TBackward0', - calls: 1, - host_duration: 14, - device_duration: 0, - self_host_duration: 3, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: TBackward0', - calls: 1, - host_duration: 21, - device_duration: 0, - self_host_duration: 7, - self_device_duration: 0, - }, - { - name: 'aten::_reshape_alias', - calls: 1, - host_duration: 5, - device_duration: 0, - self_host_duration: 5, - self_device_duration: 0, - }, - { - name: 'aten::reshape', - calls: 1, - host_duration: 10, - device_duration: 0, - self_host_duration: 5, - self_device_duration: 0, - }, - { - name: 'ReshapeAliasBackward0', - calls: 1, - host_duration: 14, - device_duration: 0, - self_host_duration: 4, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: ReshapeAliasBackward0', - calls: 1, - host_duration: 21, - device_duration: 0, - self_host_duration: 7, - self_device_duration: 0, - }, - { - name: 'aten::expand', - calls: 1, - host_duration: 9, - device_duration: 0, - self_host_duration: 7, - self_device_duration: 0, - }, - { - name: 'aten::to', - calls: 1, - host_duration: 1, - device_duration: 0, - self_host_duration: 1, - self_device_duration: 0, - }, - { - name: 'aten::div', - calls: 1, - host_duration: 70, - device_duration: 38, - self_host_duration: 49, - self_device_duration: 38, - }, - { - name: 'MeanBackward1', - calls: 1, - host_duration: 89, - device_duration: 38, - self_host_duration: 9, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: MeanBackward1', - calls: 1, - host_duration: 102, - device_duration: 38, - self_host_duration: 13, - self_device_duration: 0, - }, - { - name: 'aten::threshold_backward', - calls: 49, - host_duration: 1789, - device_duration: 9015, - self_host_duration: 1158, - self_device_duration: 9015, - }, - { - name: 'ReluBackward0', - calls: 49, - host_duration: 2237, - device_duration: 9015, - self_host_duration: 448, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: ReluBackward0', - calls: 49, - host_duration: 3144, - device_duration: 9015, - self_host_duration: 907, - self_device_duration: 0, - }, - { - name: 'AddBackward0', - calls: 16, - host_duration: 12, - device_duration: 0, - self_host_duration: 12, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: AddBackward0', - calls: 16, - host_duration: 126, - device_duration: 0, - self_host_duration: 114, - self_device_duration: 0, - }, - { - name: 'aten::empty', - calls: 370, - host_duration: 3292, - device_duration: 0, - self_host_duration: 3292, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_batch_norm_backward', - calls: 53, - host_duration: 4896, - device_duration: 22157, - self_host_duration: 2136, - self_device_duration: 22157, - }, - { - name: 'CudnnBatchNormBackward0', - calls: 53, - host_duration: 5495, - device_duration: 22157, - self_host_duration: 599, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: CudnnBatchNormBackward0', - calls: 53, - host_duration: 7289, - device_duration: 22157, - self_host_duration: 1794, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_convolution_backward_input', - calls: 52, - host_duration: 9468, - device_duration: 37714, - self_host_duration: 7052, - self_device_duration: 37714, - }, - { - name: 'aten::cudnn_convolution_backward_weight', - calls: 53, - host_duration: 8906, - device_duration: 44342, - self_host_duration: 5723, - self_device_duration: 44342, - }, - { - name: 'aten::cudnn_convolution_backward', - calls: 53, - host_duration: 19611, - device_duration: 82056, - self_host_duration: 1237, - self_device_duration: 0, - }, - { - name: 'CudnnConvolutionBackward0', - calls: 53, - host_duration: 20205, - device_duration: 82056, - self_host_duration: 594, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: CudnnConvolutionBackward0', - calls: 53, - host_duration: 22185, - device_duration: 87283, - self_host_duration: 1386, - self_device_duration: 0, - }, - { - name: 'aten::add', - calls: 16, - host_duration: 594, - device_duration: 5227, - self_host_duration: 380, - self_device_duration: 5227, - }, - { - name: 'aten::fill_', - calls: 1, - host_duration: 24, - device_duration: 230, - self_host_duration: 11, - self_device_duration: 230, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 32, - device_duration: 230, - self_host_duration: 8, - self_device_duration: 0, - }, - { - name: 'aten::max_pool2d_with_indices_backward', - calls: 1, - host_duration: 72, - device_duration: 1503, - self_host_duration: 31, - self_device_duration: 1273, - }, - { - name: 'MaxPool2DWithIndicesBackward0', - calls: 1, - host_duration: 82, - device_duration: 1503, - self_host_duration: 10, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: MaxPool2DWithIndicesBackward0', - calls: 1, - host_duration: 103, - device_duration: 1503, - self_host_duration: 21, - self_device_duration: 0, - }, - ], - }, - path: '0-9', - }, - { - left: { - name: 'aten::zeros', - duration: 154, - device_duration: 0, - total_duration: 154, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 75, - device_duration: 0, - self_host_duration: 75, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 4, - device_duration: 0, - self_host_duration: 4, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 1, - host_duration: 154, - device_duration: 0, - self_host_duration: 75, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'aten::zeros', - duration: 42, - device_duration: 0, - total_duration: 42, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 32, - device_duration: 0, - self_host_duration: 32, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 1, - device_duration: 0, - self_host_duration: 1, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 1, - host_duration: 42, - device_duration: 0, - self_host_duration: 9, - self_device_duration: 0, - }, - ], - }, - path: '0-10', - }, - { - left: { - name: 'Optimizer.step#SGD.step', - duration: 75880, - device_duration: 1289, - total_duration: 1289, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 40, - device_duration: 0, - self_host_duration: 40, - self_device_duration: 0, - }, - { - name: 'aten::mul_', - calls: 161, - host_duration: 11873, - device_duration: 396, - self_host_duration: 9505, - self_device_duration: 396, - }, - { - name: 'aten::add_', - calls: 322, - host_duration: 22327, - device_duration: 893, - self_host_duration: 17668, - self_device_duration: 893, - }, - ], - }, - right: { - name: 'Optimizer.step#SGD.step', - duration: 16441, - device_duration: 1305, - total_duration: 1305, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 6, - device_duration: 0, - self_host_duration: 6, - self_device_duration: 0, - }, - { - name: 'aten::mul_', - calls: 161, - host_duration: 3395, - device_duration: 399, - self_host_duration: 1806, - self_device_duration: 399, - }, - { - name: 'aten::add_', - calls: 322, - host_duration: 6217, - device_duration: 906, - self_host_duration: 3246, - self_device_duration: 906, - }, - ], - }, - path: '0-11', - }, - { - left: { - name: 'multiple nodes', - duration: 145, - device_duration: 0, - total_duration: 145, - aggs: [ - { - name: 'aten::empty', - calls: 2, - host_duration: 79, - device_duration: 0, - self_host_duration: 79, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 4, - device_duration: 0, - self_host_duration: 4, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 1, - host_duration: 106, - device_duration: 0, - self_host_duration: 62, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'multiple nodes', - duration: 15, - device_duration: 0, - total_duration: 15, - aggs: [ - { - name: 'aten::empty', - calls: 2, - host_duration: 10, - device_duration: 0, - self_host_duration: 10, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 0, - device_duration: 0, - self_host_duration: 0, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 1, - host_duration: 9, - device_duration: 0, - self_host_duration: 5, - self_device_duration: 0, - }, - ], - }, - path: '0-12', - }, - { - left: { - name: 'enumerate(DataLoader)#_SingleProcessDataLoaderIter.__next__', - duration: 1679463, - device_duration: 0, - total_duration: 1679463, - aggs: [ - { - name: 'aten::empty', - calls: 1413, - host_duration: 53837, - device_duration: 0, - self_host_duration: 53837, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 257, - host_duration: 955, - device_duration: 0, - self_host_duration: 955, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 257, - host_duration: 26673, - device_duration: 0, - self_host_duration: 16083, - self_device_duration: 0, - }, - { - name: 'aten::to', - calls: 1344, - host_duration: 824006, - device_duration: 0, - self_host_duration: 18525, - self_device_duration: 0, - }, - { - name: 'detach', - calls: 128, - host_duration: 2188, - device_duration: 0, - self_host_duration: 2188, - self_device_duration: 0, - }, - { - name: 'aten::detach', - calls: 128, - host_duration: 5295, - device_duration: 0, - self_host_duration: 3107, - self_device_duration: 0, - }, - { - name: 'aten::as_strided', - calls: 450, - host_duration: 4123, - device_duration: 0, - self_host_duration: 4123, - self_device_duration: 0, - }, - { - name: 'aten::unsqueeze', - calls: 192, - host_duration: 9590, - device_duration: 0, - self_host_duration: 8097, - self_device_duration: 0, - }, - { - name: 'aten::empty_strided', - calls: 576, - host_duration: 24764, - device_duration: 0, - self_host_duration: 24764, - self_device_duration: 0, - }, - { - name: 'aten::copy_', - calls: 704, - host_duration: 728608, - device_duration: 0, - self_host_duration: 728608, - self_device_duration: 0, - }, - { - name: 'aten::_to_copy', - calls: 640, - host_duration: 805481, - device_duration: 0, - self_host_duration: 51350, - self_device_duration: 0, - }, - { - name: 'aten::upsample_bilinear2d', - calls: 64, - host_duration: 236448, - device_duration: 0, - self_host_duration: 216887, - self_device_duration: 0, - }, - { - name: 'aten::squeeze', - calls: 64, - host_duration: 4682, - device_duration: 0, - self_host_duration: 4092, - self_device_duration: 0, - }, - { - name: 'aten::round', - calls: 64, - host_duration: 15283, - device_duration: 0, - self_host_duration: 15283, - self_device_duration: 0, - }, - { - name: 'aten::slice', - calls: 130, - host_duration: 8844, - device_duration: 0, - self_host_duration: 7513, - self_device_duration: 0, - }, - { - name: 'detach_', - calls: 256, - host_duration: 2102, - device_duration: 0, - self_host_duration: 2102, - self_device_duration: 0, - }, - { - name: 'aten::detach_', - calls: 256, - host_duration: 7286, - device_duration: 0, - self_host_duration: 5184, - self_device_duration: 0, - }, - { - name: 'aten::result_type', - calls: 320, - host_duration: 850, - device_duration: 0, - self_host_duration: 850, - self_device_duration: 0, - }, - { - name: 'aten::pow', - calls: 320, - host_duration: 43219, - device_duration: 0, - self_host_duration: 39305, - self_device_duration: 0, - }, - { - name: 'aten::sub', - calls: 320, - host_duration: 92093, - device_duration: 0, - self_host_duration: 37961, - self_device_duration: 0, - }, - { - name: 'aten::gt', - calls: 320, - host_duration: 35770, - device_duration: 0, - self_host_duration: 24869, - self_device_duration: 0, - }, - { - name: 'aten::_local_scalar_dense', - calls: 384, - host_duration: 2481, - device_duration: 0, - self_host_duration: 2481, - self_device_duration: 0, - }, - { - name: 'aten::item', - calls: 384, - host_duration: 10547, - device_duration: 0, - self_host_duration: 8066, - self_device_duration: 0, - }, - { - name: 'aten::is_nonzero', - calls: 320, - host_duration: 14029, - device_duration: 0, - self_host_duration: 5364, - self_device_duration: 0, - }, - { - name: 'aten::div', - calls: 64, - host_duration: 79760, - device_duration: 0, - self_host_duration: 68841, - self_device_duration: 0, - }, - { - name: 'aten::resize_', - calls: 2, - host_duration: 121, - device_duration: 0, - self_host_duration: 121, - self_device_duration: 0, - }, - { - name: 'aten::narrow', - calls: 2, - host_duration: 138, - device_duration: 0, - self_host_duration: 48, - self_device_duration: 0, - }, - { - name: 'aten::_cat', - calls: 2, - host_duration: 41467, - device_duration: 0, - self_host_duration: 41176, - self_device_duration: 0, - }, - { - name: 'aten::cat', - calls: 2, - host_duration: 41608, - device_duration: 0, - self_host_duration: 141, - self_device_duration: 0, - }, - { - name: 'aten::stack', - calls: 2, - host_duration: 49080, - device_duration: 0, - self_host_duration: 2720, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'enumerate(DataLoader)#_SingleProcessDataLoaderIter.__next__', - duration: 123490, - device_duration: 0, - total_duration: 123490, - aggs: [ - { - name: 'aten::empty', - calls: 1413, - host_duration: 6528, - device_duration: 0, - self_host_duration: 6528, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 257, - host_duration: 94, - device_duration: 0, - self_host_duration: 94, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 257, - host_duration: 2448, - device_duration: 0, - self_host_duration: 1214, - self_device_duration: 0, - }, - { - name: 'aten::to', - calls: 1344, - host_duration: 16544, - device_duration: 0, - self_host_duration: 1856, - self_device_duration: 0, - }, - { - name: 'detach', - calls: 128, - host_duration: 337, - device_duration: 0, - self_host_duration: 337, - self_device_duration: 0, - }, - { - name: 'aten::detach', - calls: 128, - host_duration: 629, - device_duration: 0, - self_host_duration: 292, - self_device_duration: 0, - }, - { - name: 'aten::as_strided', - calls: 450, - host_duration: 464, - device_duration: 0, - self_host_duration: 464, - self_device_duration: 0, - }, - { - name: 'aten::unsqueeze', - calls: 192, - host_duration: 1024, - device_duration: 0, - self_host_duration: 854, - self_device_duration: 0, - }, - { - name: 'aten::empty_strided', - calls: 576, - host_duration: 3009, - device_duration: 0, - self_host_duration: 3009, - self_device_duration: 0, - }, - { - name: 'aten::copy_', - calls: 704, - host_duration: 7419, - device_duration: 0, - self_host_duration: 7419, - self_device_duration: 0, - }, - { - name: 'aten::_to_copy', - calls: 640, - host_duration: 14688, - device_duration: 0, - self_host_duration: 4039, - self_device_duration: 0, - }, - { - name: 'aten::upsample_bilinear2d', - calls: 64, - host_duration: 31439, - device_duration: 0, - self_host_duration: 29154, - self_device_duration: 0, - }, - { - name: 'aten::squeeze', - calls: 64, - host_duration: 473, - device_duration: 0, - self_host_duration: 408, - self_device_duration: 0, - }, - { - name: 'aten::round', - calls: 64, - host_duration: 4416, - device_duration: 0, - self_host_duration: 4416, - self_device_duration: 0, - }, - { - name: 'aten::slice', - calls: 130, - host_duration: 864, - device_duration: 0, - self_host_duration: 730, - self_device_duration: 0, - }, - { - name: 'detach_', - calls: 256, - host_duration: 136, - device_duration: 0, - self_host_duration: 115, - self_device_duration: 0, - }, - { - name: 'aten::detach_', - calls: 256, - host_duration: 586, - device_duration: 0, - self_host_duration: 471, - self_device_duration: 0, - }, - { - name: 'aten::result_type', - calls: 320, - host_duration: 149, - device_duration: 0, - self_host_duration: 149, - self_device_duration: 0, - }, - { - name: 'aten::pow', - calls: 320, - host_duration: 3935, - device_duration: 0, - self_host_duration: 3519, - self_device_duration: 0, - }, - { - name: 'aten::sub', - calls: 320, - host_duration: 7881, - device_duration: 0, - self_host_duration: 3349, - self_device_duration: 0, - }, - { - name: 'aten::gt', - calls: 320, - host_duration: 3055, - device_duration: 0, - self_host_duration: 2164, - self_device_duration: 0, - }, - { - name: 'aten::_local_scalar_dense', - calls: 384, - host_duration: 186, - device_duration: 0, - self_host_duration: 186, - self_device_duration: 0, - }, - { - name: 'aten::item', - calls: 384, - host_duration: 1134, - device_duration: 0, - self_host_duration: 943, - self_device_duration: 0, - }, - { - name: 'aten::is_nonzero', - calls: 320, - host_duration: 1588, - device_duration: 0, - self_host_duration: 615, - self_device_duration: 0, - }, - { - name: 'aten::div', - calls: 64, - host_duration: 4153, - device_duration: 0, - self_host_duration: 3203, - self_device_duration: 0, - }, - { - name: 'aten::resize_', - calls: 2, - host_duration: 42, - device_duration: 0, - self_host_duration: 42, - self_device_duration: 0, - }, - { - name: 'aten::narrow', - calls: 2, - host_duration: 18, - device_duration: 0, - self_host_duration: 7, - self_device_duration: 0, - }, - { - name: 'aten::_cat', - calls: 2, - host_duration: 4613, - device_duration: 0, - self_host_duration: 4547, - self_device_duration: 0, - }, - { - name: 'aten::cat', - calls: 2, - host_duration: 4637, - device_duration: 0, - self_host_duration: 24, - self_device_duration: 0, - }, - { - name: 'aten::stack', - calls: 2, - host_duration: 5311, - device_duration: 0, - self_host_duration: 246, - self_device_duration: 0, - }, - ], - }, - path: '0-13', - }, - { - left: { - name: 'multiple nodes', - duration: 5185, - device_duration: 4394, - total_duration: 4394, - aggs: [ - { - name: 'aten::empty_strided', - calls: 2, - host_duration: 203, - device_duration: 0, - self_host_duration: 203, - self_device_duration: 0, - }, - { - name: 'aten::copy_', - calls: 2, - host_duration: 4687, - device_duration: 4394, - self_host_duration: 94, - self_device_duration: 4394, - }, - { - name: 'aten::_to_copy', - calls: 2, - host_duration: 5113, - device_duration: 4394, - self_host_duration: 223, - self_device_duration: 0, - }, - { - name: 'aten::to', - calls: 2, - host_duration: 5185, - device_duration: 4394, - self_host_duration: 72, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'multiple nodes', - duration: 4664, - device_duration: 4334, - total_duration: 4334, - aggs: [ - { - name: 'aten::empty_strided', - calls: 2, - host_duration: 60, - device_duration: 0, - self_host_duration: 60, - self_device_duration: 0, - }, - { - name: 'aten::copy_', - calls: 2, - host_duration: 4559, - device_duration: 4334, - self_host_duration: 26, - self_device_duration: 4334, - }, - { - name: 'aten::_to_copy', - calls: 2, - host_duration: 4655, - device_duration: 4334, - self_host_duration: 36, - self_device_duration: 0, - }, - { - name: 'aten::to', - calls: 2, - host_duration: 4664, - device_duration: 4334, - self_host_duration: 9, - self_device_duration: 0, - }, - ], - }, - path: '0-14', - }, - { - left: { - name: 'nn.Module: ResNet', - duration: 112761, - device_duration: 59848, - total_duration: 59848, - aggs: [ - { - name: 'aten::empty', - calls: 318, - host_duration: 13992, - device_duration: 0, - self_host_duration: 13992, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_convolution', - calls: 53, - host_duration: 21952, - device_duration: 35233, - self_host_duration: 17460, - self_device_duration: 35233, - }, - { - name: 'aten::_convolution', - calls: 53, - host_duration: 25568, - device_duration: 35233, - self_host_duration: 3616, - self_device_duration: 0, - }, - { - name: 'aten::convolution', - calls: 53, - host_duration: 27534, - device_duration: 35233, - self_host_duration: 1966, - self_device_duration: 0, - }, - { - name: 'aten::conv2d', - calls: 53, - host_duration: 29546, - device_duration: 35233, - self_host_duration: 2012, - self_device_duration: 0, - }, - { - name: 'aten::add', - calls: 53, - host_duration: 6523, - device_duration: 53, - self_host_duration: 5669, - self_device_duration: 53, - }, - { - name: 'aten::empty_like', - calls: 53, - host_duration: 5605, - device_duration: 0, - self_host_duration: 2378, - self_device_duration: 0, - }, - { - name: 'aten::view', - calls: 53, - host_duration: 829, - device_duration: 0, - self_host_duration: 829, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_batch_norm', - calls: 53, - host_duration: 35510, - device_duration: 12828, - self_host_duration: 20387, - self_device_duration: 12828, - }, - { - name: 'aten::_batch_norm_impl_index', - calls: 53, - host_duration: 38030, - device_duration: 12828, - self_host_duration: 2520, - self_device_duration: 0, - }, - { - name: 'aten::batch_norm', - calls: 53, - host_duration: 39727, - device_duration: 12828, - self_host_duration: 1697, - self_device_duration: 0, - }, - { - name: 'aten::clamp_min', - calls: 49, - host_duration: 2715, - device_duration: 5998, - self_host_duration: 1950, - self_device_duration: 5998, - }, - { - name: 'aten::clamp_min_', - calls: 49, - host_duration: 4264, - device_duration: 5998, - self_host_duration: 1549, - self_device_duration: 0, - }, - { - name: 'aten::relu_', - calls: 49, - host_duration: 8337, - device_duration: 5998, - self_host_duration: 4073, - self_device_duration: 0, - }, - { - name: 'aten::max_pool2d_with_indices', - calls: 1, - host_duration: 212, - device_duration: 466, - self_host_duration: 193, - self_device_duration: 466, - }, - { - name: 'aten::max_pool2d', - calls: 1, - host_duration: 262, - device_duration: 466, - self_host_duration: 50, - self_device_duration: 0, - }, - { - name: 'aten::add_', - calls: 16, - host_duration: 1553, - device_duration: 5165, - self_host_duration: 1297, - self_device_duration: 5165, - }, - { - name: 'aten::mean', - calls: 1, - host_duration: 187, - device_duration: 64, - self_host_duration: 169, - self_device_duration: 64, - }, - { - name: 'aten::adaptive_avg_pool2d', - calls: 1, - host_duration: 231, - device_duration: 64, - self_host_duration: 44, - self_device_duration: 0, - }, - { - name: 'aten::_reshape_alias', - calls: 1, - host_duration: 52, - device_duration: 0, - self_host_duration: 52, - self_device_duration: 0, - }, - { - name: 'aten::flatten', - calls: 1, - host_duration: 101, - device_duration: 0, - self_host_duration: 49, - self_device_duration: 0, - }, - { - name: 'aten::as_strided', - calls: 2, - host_duration: 21, - device_duration: 0, - self_host_duration: 21, - self_device_duration: 0, - }, - { - name: 'aten::transpose', - calls: 1, - host_duration: 51, - device_duration: 0, - self_host_duration: 40, - self_device_duration: 0, - }, - { - name: 'aten::t', - calls: 1, - host_duration: 120, - device_duration: 0, - self_host_duration: 69, - self_device_duration: 0, - }, - { - name: 'aten::expand', - calls: 1, - host_duration: 49, - device_duration: 0, - self_host_duration: 39, - self_device_duration: 0, - }, - { - name: 'aten::addmm', - calls: 1, - host_duration: 405, - device_duration: 41, - self_host_duration: 302, - self_device_duration: 41, - }, - { - name: 'aten::linear', - calls: 1, - host_duration: 594, - device_duration: 41, - self_host_duration: 69, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'nn.Module: ResNet', - duration: 28459, - device_duration: 59832, - total_duration: 59832, - aggs: [ - { - name: 'aten::empty', - calls: 318, - host_duration: 2234, - device_duration: 0, - self_host_duration: 2234, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_convolution', - calls: 53, - host_duration: 8644, - device_duration: 35209, - self_host_duration: 6782, - self_device_duration: 35209, - }, - { - name: 'aten::_convolution', - calls: 53, - host_duration: 9216, - device_duration: 35209, - self_host_duration: 572, - self_device_duration: 0, - }, - { - name: 'aten::convolution', - calls: 53, - host_duration: 9532, - device_duration: 35209, - self_host_duration: 316, - self_device_duration: 0, - }, - { - name: 'aten::conv2d', - calls: 53, - host_duration: 9818, - device_duration: 35209, - self_host_duration: 286, - self_device_duration: 0, - }, - { - name: 'aten::add', - calls: 53, - host_duration: 1898, - device_duration: 55, - self_host_duration: 1202, - self_device_duration: 55, - }, - { - name: 'aten::empty_like', - calls: 53, - host_duration: 941, - device_duration: 0, - self_host_duration: 300, - self_device_duration: 0, - }, - { - name: 'aten::view', - calls: 53, - host_duration: 137, - device_duration: 0, - self_host_duration: 137, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_batch_norm', - calls: 53, - host_duration: 5543, - device_duration: 12824, - self_host_duration: 2527, - self_device_duration: 12824, - }, - { - name: 'aten::_batch_norm_impl_index', - calls: 53, - host_duration: 5914, - device_duration: 12824, - self_host_duration: 371, - self_device_duration: 0, - }, - { - name: 'aten::batch_norm', - calls: 53, - host_duration: 6167, - device_duration: 12824, - self_host_duration: 253, - self_device_duration: 0, - }, - { - name: 'aten::clamp_min', - calls: 49, - host_duration: 1081, - device_duration: 6004, - self_host_duration: 507, - self_device_duration: 6004, - }, - { - name: 'aten::clamp_min_', - calls: 49, - host_duration: 1299, - device_duration: 6004, - self_host_duration: 218, - self_device_duration: 0, - }, - { - name: 'aten::relu_', - calls: 49, - host_duration: 1941, - device_duration: 6004, - self_host_duration: 642, - self_device_duration: 0, - }, - { - name: 'aten::max_pool2d_with_indices', - calls: 1, - host_duration: 59, - device_duration: 466, - self_host_duration: 44, - self_device_duration: 466, - }, - { - name: 'aten::max_pool2d', - calls: 1, - host_duration: 66, - device_duration: 466, - self_host_duration: 7, - self_device_duration: 0, - }, - { - name: 'aten::add_', - calls: 16, - host_duration: 443, - device_duration: 5169, - self_host_duration: 267, - self_device_duration: 5169, - }, - { - name: 'aten::mean', - calls: 1, - host_duration: 51, - device_duration: 63, - self_host_duration: 37, - self_device_duration: 63, - }, - { - name: 'aten::adaptive_avg_pool2d', - calls: 1, - host_duration: 58, - device_duration: 63, - self_host_duration: 7, - self_device_duration: 0, - }, - { - name: 'aten::_reshape_alias', - calls: 1, - host_duration: 8, - device_duration: 0, - self_host_duration: 8, - self_device_duration: 0, - }, - { - name: 'aten::flatten', - calls: 1, - host_duration: 16, - device_duration: 0, - self_host_duration: 8, - self_device_duration: 0, - }, - { - name: 'aten::as_strided', - calls: 2, - host_duration: 3, - device_duration: 0, - self_host_duration: 3, - self_device_duration: 0, - }, - { - name: 'aten::transpose', - calls: 1, - host_duration: 10, - device_duration: 0, - self_host_duration: 8, - self_device_duration: 0, - }, - { - name: 'aten::t', - calls: 1, - host_duration: 18, - device_duration: 0, - self_host_duration: 8, - self_device_duration: 0, - }, - { - name: 'aten::expand', - calls: 1, - host_duration: 5, - device_duration: 0, - self_host_duration: 4, - self_device_duration: 0, - }, - { - name: 'aten::addmm', - calls: 1, - host_duration: 161, - device_duration: 42, - self_host_duration: 111, - self_device_duration: 42, - }, - { - name: 'aten::linear', - calls: 1, - host_duration: 188, - device_duration: 42, - self_host_duration: 9, - self_device_duration: 0, - }, - ], - }, - path: '0-15', - }, - { - left: { - name: 'nn.Module: CrossEntropyLoss', - duration: 712, - device_duration: 11, - total_duration: 11, - aggs: [ - { - name: 'aten::to', - calls: 1, - host_duration: 6, - device_duration: 0, - self_host_duration: 6, - self_device_duration: 0, - }, - { - name: 'aten::_log_softmax', - calls: 1, - host_duration: 150, - device_duration: 7, - self_host_duration: 132, - self_device_duration: 7, - }, - { - name: 'aten::log_softmax', - calls: 1, - host_duration: 231, - device_duration: 7, - self_host_duration: 75, - self_device_duration: 0, - }, - { - name: 'aten::resize_', - calls: 1, - host_duration: 5, - device_duration: 0, - self_host_duration: 5, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_forward', - calls: 1, - host_duration: 266, - device_duration: 4, - self_host_duration: 243, - self_device_duration: 4, - }, - { - name: 'aten::nll_loss', - calls: 1, - host_duration: 300, - device_duration: 4, - self_host_duration: 34, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_nd', - calls: 1, - host_duration: 328, - device_duration: 4, - self_host_duration: 28, - self_device_duration: 0, - }, - { - name: 'aten::cross_entropy_loss', - calls: 1, - host_duration: 620, - device_duration: 11, - self_host_duration: 61, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'nn.Module: CrossEntropyLoss', - duration: 156, - device_duration: 11, - total_duration: 11, - aggs: [ - { - name: 'aten::to', - calls: 1, - host_duration: 1, - device_duration: 0, - self_host_duration: 1, - self_device_duration: 0, - }, - { - name: 'aten::_log_softmax', - calls: 1, - host_duration: 41, - device_duration: 7, - self_host_duration: 27, - self_device_duration: 7, - }, - { - name: 'aten::log_softmax', - calls: 1, - host_duration: 52, - device_duration: 7, - self_host_duration: 10, - self_device_duration: 0, - }, - { - name: 'aten::resize_', - calls: 1, - host_duration: 1, - device_duration: 0, - self_host_duration: 1, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_forward', - calls: 1, - host_duration: 49, - device_duration: 4, - self_host_duration: 34, - self_device_duration: 4, - }, - { - name: 'aten::nll_loss', - calls: 1, - host_duration: 53, - device_duration: 4, - self_host_duration: 4, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_nd', - calls: 1, - host_duration: 57, - device_duration: 4, - self_host_duration: 4, - self_device_duration: 0, - }, - { - name: 'aten::cross_entropy_loss', - calls: 1, - host_duration: 124, - device_duration: 11, - self_host_duration: 15, - self_device_duration: 0, - }, - ], - }, - path: '0-16', - }, - { - left: { - name: 'aten::zeros', - duration: 109, - device_duration: 0, - total_duration: 109, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 39, - device_duration: 0, - self_host_duration: 39, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 5, - device_duration: 0, - self_host_duration: 5, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 1, - host_duration: 109, - device_duration: 0, - self_host_duration: 65, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'aten::zeros', - duration: 23, - device_duration: 0, - total_duration: 23, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 13, - device_duration: 0, - self_host_duration: 13, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 1, - device_duration: 0, - self_host_duration: 1, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 1, - host_duration: 23, - device_duration: 0, - self_host_duration: 9, - self_device_duration: 0, - }, - ], - }, - path: '0-17', - }, - { - left: { - name: 'Optimizer.zero_grad#SGD.zero_grad', - duration: 24374, - device_duration: 132, - total_duration: 132, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 44, - device_duration: 0, - self_host_duration: 44, - self_device_duration: 0, - }, - { - name: 'aten::fill_', - calls: 161, - host_duration: 7104, - device_duration: 132, - self_host_duration: 4941, - self_device_duration: 132, - }, - { - name: 'aten::zero_', - calls: 161, - host_duration: 14806, - device_duration: 132, - self_host_duration: 7702, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'Optimizer.zero_grad#SGD.zero_grad', - duration: 4461, - device_duration: 137, - total_duration: 137, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 6, - device_duration: 0, - self_host_duration: 6, - self_device_duration: 0, - }, - { - name: 'aten::fill_', - calls: 161, - host_duration: 1945, - device_duration: 137, - self_host_duration: 878, - self_device_duration: 137, - }, - { - name: 'aten::zero_', - calls: 161, - host_duration: 2805, - device_duration: 137, - self_host_duration: 860, - self_device_duration: 0, - }, - ], - }, - path: '0-18', - }, - { - left: { - name: 'aten::ones_like', - duration: 263, - device_duration: 1, - total_duration: 1, - aggs: [ - { - name: 'aten::empty_strided', - calls: 1, - host_duration: 99, - device_duration: 0, - self_host_duration: 99, - self_device_duration: 0, - }, - { - name: 'aten::empty_like', - calls: 1, - host_duration: 149, - device_duration: 0, - self_host_duration: 50, - self_device_duration: 0, - }, - { - name: 'aten::fill_', - calls: 1, - host_duration: 49, - device_duration: 1, - self_host_duration: 34, - self_device_duration: 1, - }, - { - name: 'aten::ones_like', - calls: 1, - host_duration: 263, - device_duration: 1, - self_host_duration: 65, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'aten::ones_like', - duration: 51, - device_duration: 1, - total_duration: 1, - aggs: [ - { - name: 'aten::empty_strided', - calls: 1, - host_duration: 18, - device_duration: 0, - self_host_duration: 18, - self_device_duration: 0, - }, - { - name: 'aten::empty_like', - calls: 1, - host_duration: 24, - device_duration: 0, - self_host_duration: 6, - self_device_duration: 0, - }, - { - name: 'aten::fill_', - calls: 1, - host_duration: 20, - device_duration: 1, - self_host_duration: 8, - self_device_duration: 1, - }, - { - name: 'aten::ones_like', - calls: 1, - host_duration: 51, - device_duration: 1, - self_host_duration: 7, - self_device_duration: 0, - }, - ], - }, - path: '0-19', - }, - { - left: { - name: 'nn.Module: CrossEntropyLoss.backward', - duration: 845, - device_duration: 13, - total_duration: 13, - aggs: [ - { - name: 'aten::fill_', - calls: 1, - host_duration: 58, - device_duration: 1, - self_host_duration: 36, - self_device_duration: 1, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 112, - device_duration: 1, - self_host_duration: 54, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_backward', - calls: 1, - host_duration: 269, - device_duration: 4, - self_host_duration: 142, - self_device_duration: 3, - }, - { - name: 'NllLossBackward0', - calls: 1, - host_duration: 406, - device_duration: 4, - self_host_duration: 137, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: NllLossBackward0', - calls: 1, - host_duration: 522, - device_duration: 4, - self_host_duration: 116, - self_device_duration: 0, - }, - { - name: 'aten::_log_softmax_backward_data', - calls: 1, - host_duration: 109, - device_duration: 9, - self_host_duration: 91, - self_device_duration: 9, - }, - { - name: 'LogSoftmaxBackward0', - calls: 1, - host_duration: 178, - device_duration: 9, - self_host_duration: 69, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: LogSoftmaxBackward0', - calls: 1, - host_duration: 283, - device_duration: 9, - self_host_duration: 105, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'nn.Module: CrossEntropyLoss.backward', - duration: 283, - device_duration: 13, - total_duration: 13, - aggs: [ - { - name: 'aten::fill_', - calls: 1, - host_duration: 33, - device_duration: 1, - self_host_duration: 12, - self_device_duration: 1, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 41, - device_duration: 1, - self_host_duration: 8, - self_device_duration: 0, - }, - { - name: 'aten::nll_loss_backward', - calls: 1, - host_duration: 93, - device_duration: 4, - self_host_duration: 41, - self_device_duration: 3, - }, - { - name: 'NllLossBackward0', - calls: 1, - host_duration: 185, - device_duration: 4, - self_host_duration: 92, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: NllLossBackward0', - calls: 1, - host_duration: 211, - device_duration: 4, - self_host_duration: 26, - self_device_duration: 0, - }, - { - name: 'aten::_log_softmax_backward_data', - calls: 1, - host_duration: 36, - device_duration: 9, - self_host_duration: 22, - self_device_duration: 9, - }, - { - name: 'LogSoftmaxBackward0', - calls: 1, - host_duration: 45, - device_duration: 9, - self_host_duration: 9, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: LogSoftmaxBackward0', - calls: 1, - host_duration: 62, - device_duration: 9, - self_host_duration: 17, - self_device_duration: 0, - }, - ], - }, - path: '0-20', - }, - { - left: { - name: 'nn.Module: ResNet.backward', - duration: 180218, - device_duration: 120676, - total_duration: 120676, - aggs: [ - { - name: 'aten::as_strided', - calls: 5, - host_duration: 67, - device_duration: 0, - self_host_duration: 67, - self_device_duration: 0, - }, - { - name: 'aten::transpose', - calls: 4, - host_duration: 255, - device_duration: 0, - self_host_duration: 204, - self_device_duration: 0, - }, - { - name: 'aten::t', - calls: 4, - host_duration: 430, - device_duration: 0, - self_host_duration: 175, - self_device_duration: 0, - }, - { - name: 'aten::mm', - calls: 2, - host_duration: 323, - device_duration: 68, - self_host_duration: 265, - self_device_duration: 68, - }, - { - name: 'AddmmBackward0', - calls: 1, - host_duration: 844, - device_duration: 68, - self_host_duration: 209, - self_device_duration: 0, - }, - { - name: 'aten::sum', - calls: 1, - host_duration: 197, - device_duration: 7, - self_host_duration: 175, - self_device_duration: 7, - }, - { - name: 'aten::view', - calls: 54, - host_duration: 963, - device_duration: 0, - self_host_duration: 963, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: AddmmBackward0', - calls: 1, - host_duration: 1377, - device_duration: 75, - self_host_duration: 296, - self_device_duration: 0, - }, - { - name: 'aten::add_', - calls: 161, - host_duration: 12404, - device_duration: 496, - self_host_duration: 9659, - self_device_duration: 496, - }, - { - name: 'torch::autograd::AccumulateGrad', - calls: 161, - host_duration: 20417, - device_duration: 496, - self_host_duration: 8013, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: torch::autograd::AccumulateGrad', - calls: 161, - host_duration: 35211, - device_duration: 496, - self_host_duration: 14794, - self_device_duration: 0, - }, - { - name: 'TBackward0', - calls: 1, - host_duration: 152, - device_duration: 0, - self_host_duration: 34, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: TBackward0', - calls: 1, - host_duration: 231, - device_duration: 0, - self_host_duration: 79, - self_device_duration: 0, - }, - { - name: 'aten::_reshape_alias', - calls: 1, - host_duration: 35, - device_duration: 0, - self_host_duration: 35, - self_device_duration: 0, - }, - { - name: 'aten::reshape', - calls: 1, - host_duration: 91, - device_duration: 0, - self_host_duration: 56, - self_device_duration: 0, - }, - { - name: 'ReshapeAliasBackward0', - calls: 1, - host_duration: 133, - device_duration: 0, - self_host_duration: 42, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: ReshapeAliasBackward0', - calls: 1, - host_duration: 205, - device_duration: 0, - self_host_duration: 72, - self_device_duration: 0, - }, - { - name: 'aten::expand', - calls: 1, - host_duration: 95, - device_duration: 0, - self_host_duration: 79, - self_device_duration: 0, - }, - { - name: 'aten::to', - calls: 1, - host_duration: 7, - device_duration: 0, - self_host_duration: 7, - self_device_duration: 0, - }, - { - name: 'aten::div', - calls: 1, - host_duration: 324, - device_duration: 37, - self_host_duration: 301, - self_device_duration: 37, - }, - { - name: 'MeanBackward1', - calls: 1, - host_duration: 547, - device_duration: 37, - self_host_duration: 121, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: MeanBackward1', - calls: 1, - host_duration: 662, - device_duration: 37, - self_host_duration: 115, - self_device_duration: 0, - }, - { - name: 'aten::threshold_backward', - calls: 49, - host_duration: 6880, - device_duration: 9012, - self_host_duration: 6037, - self_device_duration: 9012, - }, - { - name: 'ReluBackward0', - calls: 49, - host_duration: 10536, - device_duration: 9012, - self_host_duration: 3656, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: ReluBackward0', - calls: 49, - host_duration: 16666, - device_duration: 9012, - self_host_duration: 6130, - self_device_duration: 0, - }, - { - name: 'AddBackward0', - calls: 16, - host_duration: 122, - device_duration: 0, - self_host_duration: 122, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: AddBackward0', - calls: 16, - host_duration: 1278, - device_duration: 0, - self_host_duration: 1156, - self_device_duration: 0, - }, - { - name: 'aten::empty', - calls: 370, - host_duration: 21126, - device_duration: 0, - self_host_duration: 21126, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_batch_norm_backward', - calls: 53, - host_duration: 30875, - device_duration: 22166, - self_host_duration: 17909, - self_device_duration: 22166, - }, - { - name: 'CudnnBatchNormBackward0', - calls: 53, - host_duration: 34355, - device_duration: 22166, - self_host_duration: 3480, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: CudnnBatchNormBackward0', - calls: 53, - host_duration: 44006, - device_duration: 22166, - self_host_duration: 9651, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_convolution_backward_input', - calls: 52, - host_duration: 20496, - device_duration: 37887, - self_host_duration: 15516, - self_device_duration: 37887, - }, - { - name: 'aten::cudnn_convolution_backward_weight', - calls: 53, - host_duration: 22878, - device_duration: 44271, - self_host_duration: 13672, - self_device_duration: 44271, - }, - { - name: 'aten::cudnn_convolution_backward', - calls: 53, - host_duration: 50961, - device_duration: 82158, - self_host_duration: 7587, - self_device_duration: 0, - }, - { - name: 'CudnnConvolutionBackward0', - calls: 53, - host_duration: 54406, - device_duration: 82158, - self_host_duration: 3445, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: CudnnConvolutionBackward0', - calls: 53, - host_duration: 64877, - device_duration: 87386, - self_host_duration: 8284, - self_device_duration: 0, - }, - { - name: 'aten::add', - calls: 16, - host_duration: 2187, - device_duration: 5228, - self_host_duration: 1909, - self_device_duration: 5228, - }, - { - name: 'aten::fill_', - calls: 1, - host_duration: 53, - device_duration: 230, - self_host_duration: 36, - self_device_duration: 230, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 96, - device_duration: 230, - self_host_duration: 43, - self_device_duration: 0, - }, - { - name: 'aten::max_pool2d_with_indices_backward', - calls: 1, - host_duration: 237, - device_duration: 1504, - self_host_duration: 129, - self_device_duration: 1274, - }, - { - name: 'MaxPool2DWithIndicesBackward0', - calls: 1, - host_duration: 295, - device_duration: 1504, - self_host_duration: 58, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: MaxPool2DWithIndicesBackward0', - calls: 1, - host_duration: 411, - device_duration: 1504, - self_host_duration: 116, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'nn.Module: ResNet.backward', - duration: 45132, - device_duration: 121137, - total_duration: 121137, - aggs: [ - { - name: 'aten::as_strided', - calls: 5, - host_duration: 7, - device_duration: 0, - self_host_duration: 7, - self_device_duration: 0, - }, - { - name: 'aten::transpose', - calls: 4, - host_duration: 29, - device_duration: 0, - self_host_duration: 23, - self_device_duration: 0, - }, - { - name: 'aten::t', - calls: 4, - host_duration: 53, - device_duration: 0, - self_host_duration: 24, - self_device_duration: 0, - }, - { - name: 'aten::mm', - calls: 2, - host_duration: 144, - device_duration: 67, - self_host_duration: 96, - self_device_duration: 67, - }, - { - name: 'AddmmBackward0', - calls: 1, - host_duration: 208, - device_duration: 67, - self_host_duration: 24, - self_device_duration: 0, - }, - { - name: 'aten::sum', - calls: 1, - host_duration: 45, - device_duration: 7, - self_host_duration: 30, - self_device_duration: 7, - }, - { - name: 'aten::view', - calls: 54, - host_duration: 163, - device_duration: 0, - self_host_duration: 163, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: AddmmBackward0', - calls: 1, - host_duration: 295, - device_duration: 74, - self_host_duration: 38, - self_device_duration: 0, - }, - { - name: 'aten::add_', - calls: 161, - host_duration: 4103, - device_duration: 535, - self_host_duration: 2037, - self_device_duration: 535, - }, - { - name: 'torch::autograd::AccumulateGrad', - calls: 161, - host_duration: 5183, - device_duration: 535, - self_host_duration: 1080, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: torch::autograd::AccumulateGrad', - calls: 161, - host_duration: 7655, - device_duration: 535, - self_host_duration: 2472, - self_device_duration: 0, - }, - { - name: 'TBackward0', - calls: 1, - host_duration: 16, - device_duration: 0, - self_host_duration: 3, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: TBackward0', - calls: 1, - host_duration: 24, - device_duration: 0, - self_host_duration: 8, - self_device_duration: 0, - }, - { - name: 'aten::_reshape_alias', - calls: 1, - host_duration: 5, - device_duration: 0, - self_host_duration: 5, - self_device_duration: 0, - }, - { - name: 'aten::reshape', - calls: 1, - host_duration: 10, - device_duration: 0, - self_host_duration: 5, - self_device_duration: 0, - }, - { - name: 'ReshapeAliasBackward0', - calls: 1, - host_duration: 17, - device_duration: 0, - self_host_duration: 7, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: ReshapeAliasBackward0', - calls: 1, - host_duration: 27, - device_duration: 0, - self_host_duration: 10, - self_device_duration: 0, - }, - { - name: 'aten::expand', - calls: 1, - host_duration: 10, - device_duration: 0, - self_host_duration: 9, - self_device_duration: 0, - }, - { - name: 'aten::to', - calls: 1, - host_duration: 1, - device_duration: 0, - self_host_duration: 1, - self_device_duration: 0, - }, - { - name: 'aten::div', - calls: 1, - host_duration: 63, - device_duration: 37, - self_host_duration: 45, - self_device_duration: 37, - }, - { - name: 'MeanBackward1', - calls: 1, - host_duration: 83, - device_duration: 37, - self_host_duration: 9, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: MeanBackward1', - calls: 1, - host_duration: 99, - device_duration: 37, - self_host_duration: 16, - self_device_duration: 0, - }, - { - name: 'aten::threshold_backward', - calls: 49, - host_duration: 1863, - device_duration: 9003, - self_host_duration: 1203, - self_device_duration: 9003, - }, - { - name: 'ReluBackward0', - calls: 49, - host_duration: 2330, - device_duration: 9003, - self_host_duration: 467, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: ReluBackward0', - calls: 49, - host_duration: 3313, - device_duration: 9003, - self_host_duration: 983, - self_device_duration: 0, - }, - { - name: 'AddBackward0', - calls: 16, - host_duration: 14, - device_duration: 0, - self_host_duration: 14, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: AddBackward0', - calls: 16, - host_duration: 135, - device_duration: 0, - self_host_duration: 121, - self_device_duration: 0, - }, - { - name: 'aten::empty', - calls: 370, - host_duration: 4638, - device_duration: 0, - self_host_duration: 4638, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_batch_norm_backward', - calls: 53, - host_duration: 5047, - device_duration: 22244, - self_host_duration: 2219, - self_device_duration: 22244, - }, - { - name: 'CudnnBatchNormBackward0', - calls: 53, - host_duration: 5637, - device_duration: 22244, - self_host_duration: 590, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: CudnnBatchNormBackward0', - calls: 53, - host_duration: 7407, - device_duration: 22244, - self_host_duration: 1770, - self_device_duration: 0, - }, - { - name: 'aten::cudnn_convolution_backward_input', - calls: 52, - host_duration: 9345, - device_duration: 37854, - self_host_duration: 6945, - self_device_duration: 37854, - }, - { - name: 'aten::cudnn_convolution_backward_weight', - calls: 53, - host_duration: 9886, - device_duration: 44650, - self_host_duration: 5378, - self_device_duration: 44650, - }, - { - name: 'aten::cudnn_convolution_backward', - calls: 53, - host_duration: 20453, - device_duration: 82504, - self_host_duration: 1222, - self_device_duration: 0, - }, - { - name: 'CudnnConvolutionBackward0', - calls: 53, - host_duration: 21000, - device_duration: 82504, - self_host_duration: 547, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: CudnnConvolutionBackward0', - calls: 53, - host_duration: 23024, - device_duration: 87731, - self_host_duration: 1440, - self_device_duration: 0, - }, - { - name: 'aten::add', - calls: 16, - host_duration: 584, - device_duration: 5227, - self_host_duration: 374, - self_device_duration: 5227, - }, - { - name: 'aten::fill_', - calls: 1, - host_duration: 26, - device_duration: 230, - self_host_duration: 12, - self_device_duration: 230, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 33, - device_duration: 230, - self_host_duration: 7, - self_device_duration: 0, - }, - { - name: 'aten::max_pool2d_with_indices_backward', - calls: 1, - host_duration: 73, - device_duration: 1513, - self_host_duration: 30, - self_device_duration: 1283, - }, - { - name: 'MaxPool2DWithIndicesBackward0', - calls: 1, - host_duration: 83, - device_duration: 1513, - self_host_duration: 10, - self_device_duration: 0, - }, - { - name: 'autograd::engine::evaluate_function: MaxPool2DWithIndicesBackward0', - calls: 1, - host_duration: 106, - device_duration: 1513, - self_host_duration: 23, - self_device_duration: 0, - }, - ], - }, - path: '0-21', - }, - { - left: { - name: 'aten::zeros', - duration: 160, - device_duration: 0, - total_duration: 160, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 87, - device_duration: 0, - self_host_duration: 87, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 4, - device_duration: 0, - self_host_duration: 4, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 1, - host_duration: 160, - device_duration: 0, - self_host_duration: 69, - self_device_duration: 0, - }, - ], - }, - right: { - name: 'aten::zeros', - duration: 119, - device_duration: 0, - total_duration: 119, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 105, - device_duration: 0, - self_host_duration: 105, - self_device_duration: 0, - }, - { - name: 'aten::zero_', - calls: 1, - host_duration: 2, - device_duration: 0, - self_host_duration: 2, - self_device_duration: 0, - }, - { - name: 'aten::zeros', - calls: 1, - host_duration: 119, - device_duration: 0, - self_host_duration: 12, - self_device_duration: 0, - }, - ], - }, - path: '0-22', - }, - { - left: { - name: 'Optimizer.step#SGD.step', - duration: 75435, - device_duration: 1295, - total_duration: 1295, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 40, - device_duration: 0, - self_host_duration: 40, - self_device_duration: 0, - }, - { - name: 'aten::mul_', - calls: 161, - host_duration: 11945, - device_duration: 401, - self_host_duration: 9568, - self_device_duration: 401, - }, - { - name: 'aten::add_', - calls: 322, - host_duration: 22480, - device_duration: 894, - self_host_duration: 17805, - self_device_duration: 894, - }, - ], - }, - right: { - name: 'Optimizer.step#SGD.step', - duration: 16687, - device_duration: 1298, - total_duration: 1298, - aggs: [ - { - name: 'aten::empty', - calls: 1, - host_duration: 8, - device_duration: 0, - self_host_duration: 8, - self_device_duration: 0, - }, - { - name: 'aten::mul_', - calls: 161, - host_duration: 3440, - device_duration: 404, - self_host_duration: 1824, - self_device_duration: 404, - }, - { - name: 'aten::add_', - calls: 322, - host_duration: 6161, - device_duration: 894, - self_host_duration: 3186, - self_device_duration: 894, - }, - ], - }, - path: '0-23', - }, - ], - }); - } -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/openapi.yaml b/plugins/tensorboard-plugins/tb_plugin/fe/src/api/openapi.yaml deleted file mode 100644 index 0218adb9d..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/api/openapi.yaml +++ /dev/null @@ -1,1204 +0,0 @@ -openapi: 3.0.1 -info: - title: Pytorch profile API - version: 1.0.0 -servers: - - url: . -paths: - /runs: - get: - responses: - '200': - description: successful operation - content: - '*/*': - schema: - $ref: '#/components/schemas/Runs' - /views: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - responses: - '200': - description: successful views - content: - '*/*': - schema: - type: array - items: - type: string - enum: - - Overview - - Operator - - Kernel - - Trace - - Distributed - - Memory - /workers: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: view - required: true - schema: - type: string - responses: - '200': - description: successful workers - content: - '*/*': - schema: - type: array - items: - type: string - /spans: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - responses: - '200': - description: successful spans - content: - '*/*': - schema: - type: array - items: - type: string - /overview: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - responses: - '200': - description: successful operation - content: - '*/*': - schema: - $ref: '#/components/schemas/Overview' - /operation: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - - in: query - name: group_by - required: true - schema: - type: string - enum: - - Operation - - OperationAndInputShape - description: Group By - responses: - '200': - description: successful operation - content: - '*/*': - schema: - $ref: '#/components/schemas/OperatorGraph' - /operation/table: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - - in: query - name: group_by - required: true - schema: - type: string - enum: - - Operation - - OperationAndInputShape - description: Group By - responses: - '200': - description: successful operation - content: - '*/*': - schema: - type: object - required: - - metadata - - data - properties: - metadata: - $ref: '#/components/schemas/TableMetadata' - data: - $ref: '#/components/schemas/OperationTableData' - /operation/stack: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - - in: query - name: group_by - required: true - schema: - type: string - enum: - - Operation - - OperationAndInputShape - description: Group By - - in: query - name: op_name - required: true - schema: - type: string - - in: query - name: input_shape - schema: - type: string - responses: - '200': - description: successful operation - content: - '*/*': - schema: - type: object - required: - - metadata - - data - properties: - metadata: - $ref: '#/components/schemas/TableMetadata' - data: - $ref: '#/components/schemas/CallStackTableData' - /distributed/overlap: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - responses: - '200': - description: successful operation - content: - '*/*': - schema: - $ref: '#/components/schemas/DistributedGraph' - /distributed/waittime: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - responses: - '200': - description: successful operation - content: - '*/*': - schema: - $ref: '#/components/schemas/DistributedGraph' - /distributed/commops: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - responses: - '200': - description: successful operation - content: - '*/*': - schema: - type: object - required: - - metadata - - data - properties: - metadata: - type: object - required: - - title - properties: - title: - type: string - data: - type: object - /distributed/gpuinfo: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - responses: - '200': - description: successful operation - content: - '*/*': - schema: - $ref: '#/components/schemas/GpuInfo' - /memory: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - - in: query - name: start_ts - required: false - schema: - type: number - - in: query - name: end_ts - required: false - schema: - type: number - responses: - '200': - description: successful operation - content: - '*/*': - schema: - $ref: '#/components/schemas/MemoryStatsData' - /memory_curve: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - responses: - '200': - description: successful operation - content: - '*/*': - schema: - $ref: '#/components/schemas/MemoryCurveData' - /memory_events: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - - in: query - name: start_ts - required: false - schema: - type: number - - in: query - name: end_ts - required: false - schema: - type: number - responses: - '200': - description: successful operation - content: - '*/*': - schema: - $ref: '#/components/schemas/MemoryEventsData' - /kernel: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - - in: query - name: group_by - required: true - schema: - type: string - enum: - - Kernel - - KernelNameAndOpName - description: Group By - responses: - '200': - description: successful operation - content: - '*/*': - schema: - $ref: '#/components/schemas/KernelGraph' - /kernel/table: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - - in: query - name: group_by - required: false - schema: - type: string - enum: - - Kernel - - KernelNameAndOpName - description: Group By - responses: - '200': - description: successful kernel - content: - '*/*': - schema: - $ref: '#/components/schemas/TableData' - /kernel/tc_pie: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - responses: - '200': - description: successful operation - content: - '*/*': - schema: - $ref: '#/components/schemas/TensorCoresGraph' - /trace: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - responses: - '200': - description: successful trace data - content: - '*/*': - schema: - type: object - /module: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - responses: - '200': - description: successful operation - content: - '*/*': - schema: - $ref: '#/components/schemas/ModuleViewData' - /tree: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - responses: - '200': - description: successful operation - content: - '*/*': - schema: - $ref: '#/components/schemas/OperatorNode' - /diffnode: - get: - parameters: - - in: query - name: run - required: true - schema: - type: string - - in: query - name: worker - required: true - schema: - type: string - - in: query - name: span - required: true - schema: - type: string - - in: query - name: exp_run - required: true - schema: - type: string - - in: query - name: exp_worker - required: true - schema: - type: string - - in: query - name: exp_span - required: true - schema: - type: string - - in: query - name: path - required: false - schema: - type: string - responses: - '200': - description: successful operation - content: - '*/*': - schema: - $ref: '#/components/schemas/DiffNode' -components: - schemas: - Runs: - type: object - required: - - runs - - loading - properties: - runs: - type: array - items: - type: string - loading: - type: boolean - Performance: - type: object - required: - - name - properties: - name: - type: string - description: - type: string - value: - type: string - extra: - type: string - children: - type: array - items: - $ref: '#/components/schemas/Performance' - Environment: - type: object - required: - - title - - value - properties: - title: - type: string - value: - type: string - GraphColumn: - type: object - required: - - type - - name - properties: - type: - type: string - name: - type: string - role: - type: string - p: - type: object - properties: - html: - type: boolean - ValueAndFormat: - type: object - required: - - v - - f - properties: - v: - oneOf: - - type: string - - type: number - - type: boolean - f: - type: string - Graph: - type: object - required: - - columns - - rows - properties: - title: - type: string - columns: - type: array - items: - $ref: '#/components/schemas/GraphColumn' - rows: - type: array - items: - type: array - items: - oneOf: - - type: string - - type: number - - type: boolean - - $ref: '#/components/schemas/ValueAndFormat' - Overview: - type: object - required: - - performance - - environments - - steps - - recommendations - properties: - performance: - type: array - items: - $ref: '#/components/schemas/Performance' - environments: - type: array - items: - $ref: '#/components/schemas/Environment' - steps: - $ref: '#/components/schemas/Graph' - recommendations: - type: string - gpu_metrics: - $ref: '#/components/schemas/GpuMetrics' - OperatorGraph: - type: object - required: - - device_total_time - - device_self_time - - host_total_time - - host_self_time - properties: - device_total_time: - $ref: '#/components/schemas/Graph' - device_self_time: - $ref: '#/components/schemas/Graph' - host_total_time: - $ref: '#/components/schemas/Graph' - host_self_time: - $ref: '#/components/schemas/Graph' - TableMetadata: - type: object - required: - - sort - properties: - sort: - type: string - tooltips: - type: object - TableData: - type: object - required: - - metadata - - data - properties: - data: - $ref: '#/components/schemas/Graph' - metadata: - $ref: '#/components/schemas/TableMetadata' - KernelGraph: - type: object - required: - - total - properties: - total: - $ref: '#/components/schemas/Graph' - TensorCoresGraph: - type: object - required: - - total - properties: - total: - $ref: '#/components/schemas/Graph' - OperationTableData: - type: array - items: - type: object - required: - - name - - calls - - host_self_duration - - host_total_duration - - has_call_stack - properties: - name: - type: string - input_shape: - type: string - calls: - type: number - device_self_duration: - type: number - device_total_duration: - type: number - host_self_duration: - type: number - host_total_duration: - type: number - has_call_stack: - type: boolean - tc_eligible: - type: string - tc_self_ratio: - type: number - tc_total_ratio: - type: number - CallStackTableData: - type: array - items: - type: object - required: - - name - - calls - - host_self_duration - - host_total_duration - properties: - name: - type: string - input_shape: - type: string - calls: - type: number - device_self_duration: - type: number - device_total_duration: - type: number - host_self_duration: - type: number - host_total_duration: - type: number - call_stack: - type: string - tc_eligible: - type: string - tc_self_ratio: - type: number - tc_total_ratio: - type: number - DistributedGraph: - type: object - required: - - metadata - - data - properties: - metadata: - type: object - required: - - title - - legends - - units - properties: - title: - type: string - legends: - type: array - items: - type: string - units: - type: string - data: - type: object - GpuInfo: - type: object - required: - - metadata - - data - properties: - metadata: - type: object - required: - - title - properties: - title: - type: string - data: - type: object - GpuMetrics: - type: object - required: - - data - - tooltip - properties: - data: - type: array - items: - $ref: '#/components/schemas/GpuMetric' - tooltip: - type: string - GpuMetric: - type: object - required: - - title - - value - properties: - title: - type: string - value: - type: string - MemoryStatsData: - type: object - required: - - metadata - - columns - - rows - properties: - metadata: - $ref: '#/components/schemas/MemoryStatsTableMetadata' - columns: - type: array - items: - $ref: '#/components/schemas/GraphColumn' - rows: - type: object - MemoryEventsData: - type: object - required: - - metadata - - columns - - rows - properties: - metadata: - $ref: '#/components/schemas/MemoryEventsTableMetadata' - columns: - type: array - items: - $ref: '#/components/schemas/GraphColumn' - rows: - type: object - MemoryEventsTableMetadata: - type: object - required: - - title - - default_device - - value - properties: - title: - type: string - default_device: - type: string - search: - type: string - sort: - type: string - MemoryStatsTableMetadata: - type: object - required: - - title - - default_device - - search - - sort - - value - properties: - title: - type: string - default_device: - type: string - search: - type: string - sort: - type: string - MemoryCurveDataMetadata: - type: object - required: - - default_device - - devices - - peaks - - totals - - first_ts - - time_metric - - memory_metric - - time_factor - - memory_factor - properties: - default_device: - type: string - devices: - type: array - items: - type: string - peaks: - type: object - totals: - type: object - first_ts: - type: number - time_metric: - type: string - memory_metric: - type: string - time_factor: - type: number - memory_factor: - type: number - MemoryCurveData: - type: object - required: - - metadata - - columns - - rows - properties: - metadata: - $ref: '#/components/schemas/MemoryCurveDataMetadata' - columns: - type: array - items: - $ref: '#/components/schemas/GraphColumn' - rows: - type: object - KeyedColumn: - type: object - required: - - type - - name - - key - properties: - type: - type: string - name: - type: string - key: - type: string - ModuleViewData: - type: object - required: - - columns - - data - properties: - columns: - type: array - items: - $ref: '#/components/schemas/KeyedColumn' - data: - type: array - items: - $ref: '#/components/schemas/ModuleStats' - ModuleStats: - type: object - required: - - name - - id - - occurences - - operators - - host_duration - - self_host_duration - - device_duration - - self_device_duration - - avg_duration - - children - properties: - name: - type: string - id: - type: string - occurences: - type: number - operators: - type: number - host_duration: - type: number - self_host_duration: - type: number - device_duration: - type: number - self_device_duration: - type: number - avg_duration: - type: number - children: - type: array - items: - $ref: '#/components/schemas/ModuleStats' - OperatorNode: - type: object - required: - - name - - start_time - - end_time - - type - - tid - - children - properties: - name: - type: string - start_time: - type: number - end_time: - type: number - type: - type: string - tid: - type: number - children: - type: array - items: - $ref: '#/components/schemas/OperatorNode' - OpAgg: - type: object - required: - - name - - calls - - host_duration - - device_duration - - self_host_duration - - self_device_duration - properties: - name: - type: string - calls: - type: number - host_duration: - type: number - device_duration: - type: number - self_host_duration: - type: number - self_device_duration: - type: number - OpStats: - type: object - required: - - name - - duration - - device_duration - - total_duration - - aggs - properties: - name: - type: string - duration: - type: number - device_duration: - type: number - total_duration: - type: number - aggs: - type: array - items: - $ref: '#/components/schemas/OpAgg' - DiffNode: - type: object - required: - - left - - right - - children - - path - properties: - left: - $ref: '#/components/schemas/OpStats' - right: - $ref: '#/components/schemas/OpStats' - path: - type: string - children: - type: array - items: - $ref: '#/components/schemas/DiffNode' diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/app.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/app.tsx deleted file mode 100644 index 19eb4b112..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/app.tsx +++ /dev/null @@ -1,625 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Modifications: Add visualization of PyTorch Ascend profiling. - *--------------------------------------------------------------------------------------------*/ - -import Box from '@material-ui/core/Box'; -import Card from '@material-ui/core/Card'; -import CardContent from '@material-ui/core/CardContent'; -import CardHeader from '@material-ui/core/CardHeader'; -import ClickAwayListener from '@material-ui/core/ClickAwayListener'; -import CssBaseline from '@material-ui/core/CssBaseline'; -import Divider from '@material-ui/core/Divider'; -import Drawer from '@material-ui/core/Drawer'; -import Fab from '@material-ui/core/Fab'; -import FormControl from '@material-ui/core/FormControl'; -import IconButton from '@material-ui/core/IconButton'; -import ListSubheader from '@material-ui/core/ListSubheader'; -import MenuItem from '@material-ui/core/MenuItem'; -import Select, { SelectProps } from '@material-ui/core/Select'; -import { makeStyles } from '@material-ui/core/styles'; -import Tab from '@material-ui/core/Tab'; -import Tabs from '@material-ui/core/Tabs'; -import Typography from '@material-ui/core/Typography'; -import ChevronLeftIcon from '@material-ui/icons/ChevronLeft'; -import ChevronRightIcon from '@material-ui/icons/ChevronRight'; -import { message } from 'antd'; -import 'antd/es/button/style/css'; -import 'antd/es/list/style/css'; -import 'antd/es/table/style/css'; -import clsx from 'clsx'; -import * as React from 'react'; -import * as api from './api'; -import { AccuracyLeftPanel } from './components/Accuracy/AccuracyLeftPanel'; -import { FileInfo } from './components/Accuracy/entity'; -import { LossComparison } from './components/Accuracy/LossComparison'; -import { DiffOverview } from './components/DiffOverview'; -import { DistributedView } from './components/DistributedView'; -import { FullCircularProgress } from './components/FullCircularProgress'; -import { Kernel as KernelView } from './components/Kernel'; -import { MemoryView } from './components/MemoryView'; -import { ModuleView } from './components/ModuleView'; -import { Operator as OperatorView } from './components/Operator'; -import { Overview as OverviewPage } from './components/Overview'; -import { TraceView } from './components/TraceView'; -import { setup } from './setup'; -import './styles.css'; -import { firstOrUndefined, sleep } from './utils'; - -export enum Views { - Overview = 'Overview', - Operator = 'Operator', - Kernel = 'Kernel', - Trace = 'Trace', - Distributed = 'Distributed', - Memory = 'Memory', - Module = 'Module', - Lightning = 'Lightning', -} - -const viewNames = { - [Views.Overview]: Views.Overview, - [Views.Operator]: Views.Operator, - [Views.Kernel]: 'Kernel', - [Views.Trace]: Views.Trace, - [Views.Distributed]: Views.Distributed, - [Views.Memory]: Views.Memory, - [Views.Module]: Views.Module, - [Views.Lightning]: Views.Lightning, -}; - -const drawerWidth = 340; -const useStyles = makeStyles((theme) => ({ - root: { - display: 'flex', - height: '100%', - }, - appBar: { - zIndex: theme.zIndex.drawer + 1, - transition: theme.transitions.create(['width', 'margin'], { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.leavingScreen, - }), - }, - appBarShift: { - marginLeft: drawerWidth, - width: `calc(100% - ${drawerWidth}px)`, - transition: theme.transitions.create(['width', 'margin'], { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.enteringScreen, - }), - }, - menuButton: { - marginRight: 36, - }, - hide: { - display: 'none', - }, - drawer: { - width: drawerWidth, - flexShrink: 0, - whiteSpace: 'nowrap', - }, - drawerOpen: { - width: drawerWidth, - zIndex: 999, - transition: theme.transitions.create('width', { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.enteringScreen, - }), - }, - drawerClose: { - transition: theme.transitions.create('width', { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.leavingScreen, - }), - overflowX: 'hidden', - width: 0, - [theme.breakpoints.up('sm')]: { - width: 0, - }, - }, - toolbar: { - display: 'flex', - alignItems: 'center', - justifyContent: 'flex-end', - padding: theme.spacing(0, 1), - // necessary for content to be below app bar - ...theme.mixins.toolbar, - }, - content: { - flexGrow: 1, - padding: theme.spacing(3), - overflowX: 'hidden', - }, - formControl: { - margin: theme.spacing(1), - minWidth: 120, - }, - fab: { - marginLeft: theme.spacing(1), - marginTop: theme.spacing(1), - position: 'absolute', - }, - iconButton: { - padding: '8px', - }, -})); - -export const App = (): JSX.Element => { - const classes = useStyles(); - - // #region - State - const [selectedTab, setSelectedTab] = React.useState(0); - - const [run, setRun] = React.useState(''); - const [runs, setRuns] = React.useState([]); - const [runsLoading, setRunsLoading] = React.useState(true); - - const [workers, setWorkers] = React.useState([]); - const [worker, setWorker] = React.useState(''); - - const [spans, setSpans] = React.useState([]); - const [span, setSpan] = React.useState(''); - - const [views, setViews] = React.useState([]); - const [view, setView] = React.useState(''); - const [loaded, setLoaded] = React.useState(false); - const iframeRef = React.useRef(null); - const [deviceTarget, setDeviceTarget] = React.useState('GPU'); - - const [diffLeftWorkerOptions, setDiffLeftWorkerOptions] = React.useState([]); - const [diffLeftSpansOptions, setDiffLeftSpansOptions] = React.useState([]); - const [diffLeftRun, setDiffLeftRun] = React.useState(''); - const [diffLeftWorker, setDiffLeftWorker] = React.useState(''); - const [diffLeftSpan, setDiffLeftSpan] = React.useState(''); - - const [diffRightWorkerOptions, setDiffRightWorkerOptions] = React.useState([]); - const [diffRightSpansOptions, setDiffRightSpansOptions] = React.useState([]); - const [diffRightRun, setDiffRightRun] = React.useState(''); - const [diffRightWorker, setDiffRightWorker] = React.useState(''); - const [diffRightSpan, setDiffRightSpan] = React.useState(''); - - const [open, setOpen] = React.useState(true); - - const [topTab, setTopTab] = React.useState(0); - const [fileList, setFileList] = React.useState([]); - const [uploadedCount, setUploadedCount] = React.useState(0); // #endregion - - React.useEffect(() => { - setup() - .catch(() => { - message.warning('google chart is not supported offline'); - }) - .finally(() => { - setLoaded(true); - }); - }, []); - - const continuouslyFetchRuns = async (): Promise => { - while (true) { - try { - const result = await api.defaultApi.runsGet(); - setRuns(result.runs); - setRunsLoading(result.loading); - } catch (e) { - message.warning(`Cannot fetch runs: ${e}`); - } - await sleep(5000); - } - }; - - React.useEffect(() => { - continuouslyFetchRuns(); - }, []); - - React.useEffect(() => { - if (!run || !runs.includes(run)) { - setRun(firstOrUndefined(runs) ?? ''); - } - }, [runs]); // #region - Diff Left - - React.useEffect(() => { - if (diffLeftRun) { - api.defaultApi.workersGet(diffLeftRun, Views.Overview).then((data) => { - setDiffLeftWorkerOptions(data); - }); - } - }, [diffLeftRun]); - - React.useEffect(() => { - if (diffLeftRun && diffLeftWorker) { - api.defaultApi.spansGet(diffLeftRun, diffLeftWorker).then((data) => { - setDiffLeftSpansOptions(data); - }); - } - }, [diffLeftRun, diffLeftWorker]); - - // #endregion - // #region - Diff Right - React.useEffect(() => { - if (diffRightRun) { - api.defaultApi.workersGet(diffRightRun, Views.Overview).then((data) => { - setDiffRightWorkerOptions(data); - }); - } - }, [diffRightRun]); - - React.useEffect(() => { - if (diffRightRun && diffRightWorker) { - api.defaultApi.spansGet(diffRightRun, diffRightWorker).then((data) => { - setDiffRightSpansOptions(data); - }); - } - }, [diffRightRun, diffRightWorker]); - - // #endregion - // #region - normal - React.useEffect(() => { - if (run) { - api.defaultApi.viewsGet(run).then((rawViews) => { - const result = rawViews.views.map((v) => Views[Views[v as Views]]).filter(Boolean); - setDeviceTarget(rawViews.device_target); - setViews(result); - }); - } - }, [run]); - - React.useEffect(() => { - setView(firstOrUndefined(views) ?? ''); - }, [views]); - - React.useEffect(() => { - if (run && view) { - api.defaultApi.workersGet(run, view).then((data) => { - setWorkers(data); - }); - } - }, [run, view]); - - React.useEffect(() => { - setWorker(firstOrUndefined(workers) ?? ''); - }, [workers]); - - React.useEffect(() => { - if (run && worker) { - api.defaultApi.spansGet(run, worker).then((data) => { - setSpans(data); - }); - } - }, [run, worker]); - - React.useEffect(() => { - setSpan(firstOrUndefined(spans) ?? ''); - }, [spans]); - - // #endregion - - // #region - Event Handler - const handleTabChange = (event: React.ChangeEvent>, value: any): void => { - setSelectedTab(value as number); - }; - - const handleTopTabChange = (event: React.ChangeEvent>, value: any): void => { - setTopTab(value as number); - }; - - const handleRunChange: SelectProps['onChange'] = (event) => { - setRun(event.target.value as string); - setView(''); - setWorker(''); - setSpan(''); - }; - - const handleViewChange: SelectProps['onChange'] = (event) => { - setView(event.target.value as Views); - setWorker(''); - setSpan(''); - }; - - const handleWorkerChange: SelectProps['onChange'] = (event) => { - setWorker(event.target.value as string); - setSpan(''); - }; - - const handleSpanChange: SelectProps['onChange'] = (event) => { - setSpan(event.target.value as string); - }; - - const handleDiffLeftRunChange: SelectProps['onChange'] = (event) => { - setDiffLeftRun(event.target.value as string); - setDiffLeftWorker(''); - setDiffLeftSpan(''); - }; - - const handleDiffLeftWorkerChange: SelectProps['onChange'] = (event) => { - setDiffLeftWorker(event.target.value as string); - setDiffLeftSpan(''); - }; - - const handleDiffLeftSpanChange: SelectProps['onChange'] = (event) => { - setDiffLeftSpan(event.target.value as string); - }; - - const handleDiffRightRunChange: SelectProps['onChange'] = (event) => { - setDiffRightRun(event.target.value as string); - setDiffRightWorker(''); - setDiffRightSpan(''); - }; - - const handleDiffRightWorkerChange: SelectProps['onChange'] = (event) => { - setDiffRightWorker(event.target.value as string); - setDiffRightSpan(''); - }; - - const handleDiffRightSpanChange: SelectProps['onChange'] = (event) => { - setDiffRightSpan(event.target.value as string); - }; - - const handleDrawerOpen = (): void => { - setOpen(true); - setIframeActive(); - }; - - const handleDrawerClose = (): void => { - setOpen(false); - setIframeActive(); - }; - - const setIframeActive = (): void => { - iframeRef.current?.focus(); - }; - - const _changeFileList = (files: FileInfo[]): void => { - if (JSON.stringify(files) !== JSON.stringify(fileList)) { - setFileList(files); - } - }; - - const _getViews = (viewName: Views): string => { - if (viewName === Views.Kernel) { - return deviceTarget === 'Ascend' ? `NPU ${viewNames[viewName]}` : `GPU ${viewNames[viewName]}`; - } else { - return viewNames[viewName]; - } - }; - - const _changeUploadCount = (count: number): void => { - setUploadedCount(count); - }; // #endregion - - const renderContent = (): JSX.Element => { - if (!runsLoading && runs.length === 0) { - return ( - - - - There are not any runs in the log folder. - - - ); - } - const notReady = !loaded || !run || !worker || !view || !span; - if (notReady) { - return ; - } - - if (selectedTab === 0) { - switch (view) { - case Views.Overview: - return ; - case Views.Operator: - return ; - case Views.Kernel: - return ; - case Views.Trace: - return ; - case Views.Distributed: - return ; - case Views.Memory: - return ; - case Views.Module: - case Views.Lightning: - return ; - default: - return <>; - } - } else { - return ( - - ); - } - }; - - const spanComponent = (): JSX.Element => { - const spanFragment = ( - - Spans - - - - - - - ); - - if (!spans || spans.length <= 1) { - return
{spanFragment}
; - } else { - return spanFragment; - } - }; - - return ( -
- - -
- - - -
- - - - - - - - {topTab === 0 ? ( - <> - - - - - - - {selectedTab === 0 ? ( - <> - Runs - - - - - - Views - - - - - - Workers - - - - - - {spanComponent()} - - ) : ( - <> -   Baseline - Runs - - - - Workers - - - - - Spans - - - - - - -   Experimental - Runs - - - - Workers - - - - Spans - - - - - )} - - ) : ( - - )} -
- {!open && ( - - - - )} -
- {topTab === 0 ? renderContent() : } -
-
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/AccuracyLeftPanel.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/AccuracyLeftPanel.tsx deleted file mode 100644 index c7b7d7cf0..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/AccuracyLeftPanel.tsx +++ /dev/null @@ -1,334 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the 'License') - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an 'AS IS' BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import { useState, useEffect, useCallback, useRef } from 'react'; -import { makeStyles } from '@material-ui/core/styles'; -import { Button, Checkbox, Spin, Modal, message } from 'antd'; -import { CheckboxChangeEvent } from 'antd/es/checkbox'; -import { DeleteOutlined, DownloadOutlined, ImportOutlined, SettingOutlined, WarningTwoTone } from '@ant-design/icons'; -import { RegexConfigModal } from './RegexConfigModal'; -import { FileInfo } from './entity'; - -interface IProps { - onChangeCheckedFileList: (files: FileInfo[]) => void; - onChangeUploadedCount: (count: number) => void; -} - -// 匹配数字包括科学计数法 -const LOSS_REG_EXP = /[+-]?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/; -// 匹配自然数 -const ITER_REG_EXP = /\d+/; -// 单个文件最大大小 -const FILE_MAX_SIZE = 50 * 1024 * 1024; -// 最大文件上传数量 -export const MAX_FILE_COUNT = 6; - -const useStyles = makeStyles(() => ({ - root: { - height: '100%', - }, - btnPanel: { - height: 50, - lineHeight: '50px', - borderBottom: '1px solid #DFE5EF', - display: 'flex', - '& .ant-btn': { - margin: 'auto', - }, - }, - fileContainer: { - height: 54, - padding: '0 24px', - display: 'flex', - alignItems: 'center', - '& .fileNameLabel': { - display: 'inline-block', - marginLeft: 12, - width: 200, - fontSize: 14, - overflow: 'hidden', - textOverflow: 'ellipsis', - whiteSpace: 'nowrap', - }, - '& .btns': { - display: 'inline-block', - marginLeft: 'auto', - '& .icon': { - cursor: 'pointer', - '&:hover': { - color: '#1890ff', - }, - }, - '& .iconLeft': { - marginRight: 8, - }, - }, - }, - deleteModal: { - '& .ant-modal-title': { - fontWeight: 'bold', - }, - '& .deleteModalBody': { - display: 'flex', - alignItems: 'center', - height: 80, - '& .warningIcon': { - display: 'inline-block', - fontSize: 50, - }, - '& .warningText': { - display: 'inline-block', - marginLeft: 16, - overflow: 'hidden', - wordBreak: 'break-all', - flex: 1, - }, - }, - }, -})); - -export const AccuracyLeftPanel: React.FC = (props) => { - const { onChangeCheckedFileList, onChangeUploadedCount } = props; - const classes = useStyles(); - const [configModalVis, setConfigModalVis] = useState(false); - const [deleteModalVis, setDeleteModalVis] = useState(false); - const [fileList, setFileList] = useState([]); - const [importSpin, setImportSpin] = useState(false); - const [selectedFile, setSelectedFile] = useState(undefined); - const downLoadRef = useRef(null); - - const parseFile = (file: FileInfo): FileInfo => { - file.losses = []; - file.iterLosses = {}; - file.iters = []; - const lines = file.fileContent.split(/\r\n|\n|\r/); - for (let i = 0; i < lines.length; i++) { - const iter = parseByTag(lines[i], file.iterTag, false); - const loss = parseByTag(lines[i], file.lossTag, true); - if (iter !== null && loss !== null) { - file.iters.push(iter); - file.losses.push([iter, loss]); - file.iterLosses[iter] = loss; - } - } - return file; - }; - - const parseByTag = (line: string, tag: string, isLoss: boolean): number | null => { - let pos = line.indexOf(tag); - let result: number | null = null; - if (pos !== -1) { - const res = (isLoss ? LOSS_REG_EXP : ITER_REG_EXP).exec( - line - .substring(pos + tag.length) - .trim() - .split(/\s+/)[0] - ); - if (res !== null) { - if (isLoss) { - result = parseFloat(res[0]); - } else { - result = parseInt(res[0]); - } - } else { - console.warn(`Found ${isLoss ? 'loss' : 'iteration'} text, but parse value with error: [${line}]`); - } - } - return result; - }; - - const importFile = (): void => { - document.getElementById('accComparisonSelectFile')?.click(); - }; - - const uploadFile = (e: React.ChangeEvent): void => { - setImportSpin(true); - const file = e.target.files?.[0]; - if (file) { - if (file.size > FILE_MAX_SIZE) { - message.warn('Sorry, the file size cannot be greater than 50MB.'); - setImportSpin(false); - // 防止同名文件不触发事件 - e.target.value = ''; - return; - } - const reader = new FileReader(); - reader.onload = ((loadedFile) => { - return (event) => { - addFile(loadedFile.name.trim(), event.target?.result as string); - setImportSpin(false); - }; - })(file); - reader.readAsText(file); - } - // 防止同名文件不触发事件 - e.target.value = ''; - }; - - const addFile = (fileName: string, fileContent: string): void => { - const fileLength = fileName.length; - const tempList: FileInfo[] = JSON.parse(JSON.stringify(fileList)); - let updatedFileName = fileName; // 新变量用于存储更新后的文件名 - // 上传同名文件加上(1~最大文件数减1)标识 - if (!!tempList.find((item) => item.fileName === fileName)) { - for (let i = 1; i < MAX_FILE_COUNT; i++) { - let temp = `${fileName.slice(0, fileLength - 4)}(${i})${fileName.slice(fileLength - 4)}`; - if (tempList.find((item) => item.fileName === temp) === undefined) { - updatedFileName = temp; - break; - } - } - } - const file: FileInfo = { - id: fileList.length, - fileName: updatedFileName, - fileContent, - checked: true, - lossTag: 'loss:', - iterTag: 'iteration', - iters: [], - losses: [], - iterLosses: {}, - }; - tempList.push(parseFile(file)); - setFileList(tempList); - }; - - const exportCsv = (data: FileInfo): void => { - let csvContent = `data:text/csv;charset=utf-8,${data.iterTag},${data.lossTag}\n`; - data.losses.forEach((item) => { - csvContent += `${item[0]},${item[1]}\n`; - }); - downLoadRef.current?.setAttribute('href', encodeURI(csvContent)); - downLoadRef.current?.setAttribute('download', `${data.fileName}.csv`); - downLoadRef.current?.click(); - }; - - const onCheckChange = (e: CheckboxChangeEvent, index: number): void => { - const tempList: FileInfo[] = JSON.parse(JSON.stringify(fileList)); - tempList[index].checked = e.target.checked; - setFileList(tempList); - }; - - const onConfigIconClick = (data: FileInfo): void => { - setSelectedFile(data); - setConfigModalVis(true); - }; - - const onDeleteIconClick = (data: FileInfo): void => { - setSelectedFile(data); - setDeleteModalVis(true); - }; - - const configModalOk = (data: FileInfo): void => { - const tempList = fileList.map((item) => { - return item.id === data.id ? parseFile(data) : item; - }); - setFileList(tempList); - setConfigModalVis(false); - }; - - const configModalCancel = (): void => { - setConfigModalVis(false); - }; - - const deleteModalOk = (): void => { - const tempList = JSON.parse(JSON.stringify(fileList)); - let founded = false; - let index = 0; - for (let i = 0; i < tempList.length; i++) { - if (founded) { - tempList[i].id -= 1; - continue; - } - if (tempList[i].id === selectedFile?.id) { - founded = true; - index = i; - } - } - tempList.splice(index, 1); - setFileList(tempList); - setSelectedFile(undefined); - setDeleteModalVis(false); - }; - - const renderFileItems = useCallback(() => { - return fileList.map((item) => { - return ( -
- onCheckChange(e, item.id)} /> - - {item.fileName} - -
- onConfigIconClick(item)} /> - exportCsv(item)} /> - onDeleteIconClick(item)} /> -
-
- ); - }); - }, [JSON.stringify(fileList)]); - - useEffect(() => { - onChangeCheckedFileList(fileList.filter((item) => item.checked)); - onChangeUploadedCount(fileList.length); - }, [JSON.stringify(fileList)]); - - return ( -
- -
- - -
- {renderFileItems()} -
- {configModalVis && ( - - )} - setDeleteModalVis(false)} - onOk={deleteModalOk} - width={500} - className={classes.deleteModal} - > -
- - - Are you sure to delete "{selectedFile?.fileName}"? - -
-
- -
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/ComparisonPanel.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/ComparisonPanel.tsx deleted file mode 100644 index 500d29764..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/ComparisonPanel.tsx +++ /dev/null @@ -1,322 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the 'License') - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an 'AS IS' BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import { useState, useLayoutEffect, useRef, useEffect } from 'react'; -import { makeStyles } from '@material-ui/core/styles'; -import { FileInfo } from './entity'; -import { Empty, Popover, Radio, RadioChangeEvent, Select, Table } from 'antd'; -import { ColumnsType } from 'antd/es/table'; -import * as echarts from 'echarts'; -import { InfoCircleOutlined } from '@ant-design/icons'; - -interface IProps { - fileList: FileInfo[]; -} - -interface ILineDataList { - normal: number[][]; - absolute: number[][]; - relative: number[][]; -} - -const useStyles = makeStyles(() => ({ - root: { - height: '50%', - width: '100%', - padding: '0 24px 24px', - display: 'flex', - flexDirection: 'column', - }, - title: { - height: 24, - lineHeight: '24px', - fontFamily: 'sans-serif', - fontSize: 16, - fontWeight: 700, - }, - filter: { - height: 40, - lineHeight: '40px', - '& .comparisonSelect': { - margin: '0 8px', - }, - '& .comparisonLabel': { - marginRight: 8, - }, - '& .comparisonBtn': { - marginLeft: 20, - }, - '& .infoLabel': { - fontSize: 20, - }, - }, - empty: { - marginTop: 60, - }, - content: { - flex: 1, - display: 'flex', - }, - lossChart: { - height: '100%', - flex: 1, - }, - lossTable: { - height: '100%', - width: '32%', - }, - tableHeader: { - display: 'inline-block', - width: 134, - position: 'absolute', - top: '50%', - transform: 'translateY(-50%)', - overflow: 'hidden', - textOverflow: 'ellipsis', - whiteSpace: 'nowrap', - }, -})); - -export const ComparisonPanel: React.FC = (props) => { - const { fileList } = props; - const classes = useStyles(); - const [selectedFiles, setSelectedFiles] = useState([]); - const [compareWay, setCompareWay] = useState(0); - const [pageSize, setPageSize] = useState(20); - const [lineData, setLineData] = useState(undefined); - const [tableData, setTableData] = useState([]); - const chartRef = useRef(null); - - const getColumns = (): ColumnsType => { - const columns: ColumnsType = [ - { - title: 'Iteration', - key: 'iter', - dataIndex: 'iter', - }, - ]; - selectedFiles.forEach((item, index) => { - columns.push({ - title: () => ( -
- {item} -
- ), - key: index, - dataIndex: item, - width: '40%', - }); - }); - return columns; - }; - - const compareFile = (fileNames: string[]): void => { - if (fileNames.length < 2) { - return; - } - const baseFile = fileList.find((item) => item.fileName === fileNames[0]); - const expFile = fileList.find((item) => item.fileName === fileNames[1]); - if (!!baseFile && !!expFile) { - const commonIters: number[] = []; - const lessIters = baseFile.iters.length <= expFile.iters.length ? baseFile.iters : expFile.iters; - const moreIters = baseFile.iters.length > expFile.iters.length ? baseFile.iters : expFile.iters; - lessIters.forEach((iter) => { - if (moreIters.includes(iter)) { - commonIters.push(iter); - } - }); - commonIters.sort((a, b) => a - b); - const tempTableData: any[] = []; - const tempChartData: ILineDataList = { - normal: [], - absolute: [], - relative: [], - }; - commonIters.forEach((iter, index) => { - const baseLoss = baseFile.iterLosses[iter]; - const expLoss = expFile.iterLosses[iter]; - tempTableData.push({ - key: `${iter}_${index}`, - iter, - [baseFile.fileName]: baseLoss, - [expFile.fileName]: expLoss, - }); - tempChartData.normal.push([iter, expLoss - baseLoss]); - tempChartData.absolute.push([iter, Math.abs(expLoss - baseLoss)]); - tempChartData.relative.push([iter, baseLoss === 0 ? 0 : Math.abs(expLoss - baseLoss) / baseLoss]); - }); - setTableData(tempTableData); - setLineData(tempChartData); - } - }; - - const onSelectChange = (value: string[]): void => { - setSelectedFiles(value); - compareFile(value); - }; - - const onRadioChange = (e: RadioChangeEvent): void => { - setCompareWay(e.target.value); - }; - - const onShowSizeChange = (current: number, size: number): void => { - setPageSize(size); - }; - - useLayoutEffect(() => { - const element = chartRef.current; - if (!element || !lineData) { - return undefined; - } - const echart = echarts.init(element); - let dataSource: number[][] = []; - if (compareWay === 0) { - dataSource = lineData.normal; - } else if (compareWay === 1) { - dataSource = lineData.absolute; - } else { - dataSource = lineData.relative; - } - const option: echarts.EChartsOption = { - title: { - text: 'Comparison Chart', - textStyle: { - fontSize: 12, - color: '#000', - }, - }, - legend: { bottom: 0 }, - xAxis: { - type: 'category', - boundaryGap: false, - name: 'Iteration', - }, - yAxis: { - type: 'value', - name: 'Difference', - scale: true, - }, - tooltip: { - trigger: 'axis', - valueFormatter: (value) => (value as number).toFixed(6), - }, - dataZoom: { - type: 'inside', - }, - dataset: { - source: dataSource, - }, - series: { - type: 'line', - name: 'Difference', - symbol: 'none', - }, - }; - - if (option) { - echart.setOption(option, true); - } - return () => { - echart.dispose(); - }; - }, [compareWay, lineData]); - - useEffect(() => { - const tempValue = selectedFiles.filter((item) => { - return !!fileList.find((file) => file.fileName === item); - }); - if (JSON.stringify(tempValue) === JSON.stringify(selectedFiles)) { - compareFile(tempValue); - } - setSelectedFiles(tempValue); - }, [fileList]); - - return ( -
-
Comparison Data
-
- Comparison objects: - -
-
- Iteration Tag - -
- - ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/entity.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/entity.ts deleted file mode 100644 index 270c4cb65..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Accuracy/entity.ts +++ /dev/null @@ -1,30 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the 'License') - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an 'AS IS' BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *--------------------------------------------------------------------------------------------*/ - -export interface FileInfo { - id: number; - fileName: string; - fileContent: string; - checked: boolean; - lossTag: string; - iterTag: string; - iters: number[]; - losses: number[][]; - iterLosses: { [iter: number]: number }; -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/DataLoading.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/DataLoading.tsx deleted file mode 100644 index 3c5d353ce..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/DataLoading.tsx +++ /dev/null @@ -1,19 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import { FullCircularProgress } from './FullCircularProgress'; - -interface IProps { - value?: T | null; - children: (t: T) => JSX.Element; -} - -export function DataLoading(props: IProps): JSX.Element { - if (props.value === undefined || props.value === null) { - return ; - } - - return props.children(props.value); -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/DiffOverview.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/DiffOverview.tsx deleted file mode 100644 index ed029d502..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/DiffOverview.tsx +++ /dev/null @@ -1,942 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import Button from '@material-ui/core/Button'; -import Card from '@material-ui/core/Card'; -import CardContent from '@material-ui/core/CardContent'; -import CardHeader from '@material-ui/core/CardHeader'; -import Grid from '@material-ui/core/Grid'; -import { makeStyles } from '@material-ui/core/styles'; -import Typography from '@material-ui/core/Typography'; -import ChevronLeftIcon from '@material-ui/icons/ChevronLeft'; -import { Select, Table } from 'antd'; -import * as React from 'react'; -import * as api from '../api'; -import { useResizeEventDependency } from '../utils/resize'; -import { FullCircularProgress } from './FullCircularProgress'; -import * as echarts from 'echarts'; - -const { Option } = Select; - -const topGraphHeight = 230; - -const useStyles = makeStyles((theme) => ({ - root: { - flexGrow: 1, - }, - pre: { - '& ul': { - margin: 0, - paddingLeft: theme.spacing(3), - ...theme.typography.body1, - }, - '& li': {}, - '& a': { - color: '#ffa726', - }, - '& a:active': { - color: '#ffa726', - }, - '& p': { - margin: 0, - ...theme.typography.subtitle1, - fontWeight: theme.typography.fontWeightBold, - }, - }, - topGraph: { - height: topGraphHeight + 40, - }, - iconButton: { - padding: '8px', - }, -})); - -const getAngleByDataLength = (data: number): number => { - if (data < 10) { - return 0; - } else { - // 数量越大越趋近于旋转90度 - return 90 * (1 - (10 / data)); - } -}; - -export interface DiffColumnChartIProps { - rawData: any[]; - selectCallback: (row: number, column: number) => void; -} - -export interface DiffStepChartIProps { - rawData: any[]; -} - -const DiffColumnChart: React.FC = (props: DiffColumnChartIProps) => { - const { rawData, selectCallback } = props; - const graphRef = React.useRef(null); - const [resizeEventDependency] = useResizeEventDependency(); - - React.useLayoutEffect(() => { - const element = graphRef.current; - if (!element) { - return undefined; - } - - const chart = echarts.init(element); - - const options: echarts.EChartsOption = { - title: { - text: 'Execution Comparsion', - }, - legend: { - top: 10, - right: 10, - }, - tooltip: { - trigger: 'axis', - formatter: function (params: any) { - const index = params[0].name.indexOf('@'); - const safeName = params[0].name.replace(//g, '>'); - let res = `${index > -1 ? safeName.slice(index + 1) : safeName}
`; - for (const item of params) { - if (typeof item.value[item.encode.y[0]] === 'number') { - res += ` - - ${item.seriesName}: ${item.value[item.encode.y[0]]}
`; - } - } - return res; - }, - }, - series: [ - { - type: 'bar', - itemStyle: { - color: '#3366cc', - }, - yAxisIndex: 0, - }, - { - type: 'bar', - itemStyle: { - color: '#dc3912', - }, - yAxisIndex: 0, - }, - { - type: 'line', - itemStyle: { - color: '#ff9900', - }, - yAxisIndex: 1, - }, - { - type: 'line', - itemStyle: { - color: '#109618', - }, - yAxisIndex: 1, - }, - ], - xAxis: { - type: 'category', - axisLabel: { - interval: 0, - rotate: getAngleByDataLength(rawData.length), - formatter: (name: string) => { - const index = name.indexOf('@'); - const displayName = index > -1 ? name.slice(index + 1) : name; // 创建新变量 - return displayName.length > 16 ? `${displayName.slice(0, 14)}...` : displayName; - }, - }, - }, - yAxis: [ - { - type: 'value', - name: 'Time Difference(us)', - scale: true, - }, - { - type: 'value', - name: 'Accumulated Difference(us)', - scale: true, - }, - ], - dataset: { - source: rawData.map((item, idx) => { - // 添加索引保证x轴刻度不重复 - let param: any[] = [...item]; - param[0] = `${idx}@${param[0]}`; - return param; - }), - }, - }; - - if (options) { - chart.setOption(options, true); - } - chart.on('click', (param) => { - if (param.seriesIndex !== undefined) { - selectCallback(param.dataIndex, param.seriesIndex + 1); - } - }); - - return () => { - chart.dispose(); - }; - }, [rawData, resizeEventDependency]); - - return ( -
-
-
- ); -}; - -const DiffStepChart: React.FC = (props: DiffStepChartIProps) => { - const { rawData } = props; - const graphRef = React.useRef(null); - const [resizeEventDependency] = useResizeEventDependency(); - - React.useLayoutEffect(() => { - const element = graphRef.current; - if (!element) { - return undefined; - } - const chart = echarts.init(element); - const options: echarts.EChartsOption = { - title: { - text: 'Execution Diff', - }, - legend: { - top: 10, - right: 10, - }, - dataset: { - source: rawData.map((item, idx) => { - // 添加索引保证x轴刻度不重复 - let param: any[] = [...item]; - param[0] = `${idx}@${param[0]}`; - return param; - }), - }, - xAxis: { - type: 'category', - axisLabel: { - interval: 0, - rotate: getAngleByDataLength(rawData.length), - formatter: (name: string) => { - const index = name.indexOf('@'); - const displayName = index > -1 ? name.slice(index + 1) : name; // 创建新变量 - return displayName.length > 16 ? `${displayName.slice(0, 14)}...` : displayName; - }, - }, - }, - yAxis: { - type: 'value', - scale: true, - }, - tooltip: { - trigger: 'axis', - formatter: function (params: any) { - const index = params[0].name.indexOf('@'); - const safeName = params[0].name.replace(//g, '>'); - let res = `${index > -1 ? safeName.slice(index + 1) : safeName}
`; - for (const item of params) { - if (typeof item.value[item.encode.y[0]] === 'number') { - res += ` - - ${item.seriesName}: ${item.value[item.encode.y[0]]}
`; - } - } - return res; - }, - }, - series: [ - { - type: 'line', - color: '#3366cc', - symbolSize: 0, - step: 'middle', - areaStyle: { - color: '#c1d1ef', - opacity: 1, - }, - }, - { - type: 'line', - color: '#dc3912', - symbolSize: 0, - step: 'middle', - areaStyle: { - color: '#f4c3b7', - opacity: 1, - }, - }, - ], - }; - - if (options) { - chart.setOption(options, true); - } - return () => { - chart.dispose(); - }; - }, [rawData, resizeEventDependency]); - - return ( -
-
-
- ); -}; - -export interface IProps { - run: string; - worker: string; - span: string; - expRun: string; - expWorker: string; - expSpan: string; -} - -export interface ColumnUnderlyingData { - name: string; - path: string; - leftAggs: any[]; - rightAggs: any[]; -} - -export interface TableRow { - key: number; - - operator: string; - baselineCalls?: number; - expCalls?: number; - deltaCalls?: number; - deltaCallsPercentNumber?: number; - deltaCallsPercent?: string; - - baselineHostDuration: number; - expHostDuration: number; - deltaHostDuration: number; - deltaHostDurationPercentNumber: number; - deltaHostDurationPercent: string; - - baselineSelfHostDuration: number; - expSelfHostDuration: number; - deltaSelfHostDuration: number; - deltaSelfHostDurationPercentNumber: number; - deltaSelfHostDurationPercent: string; - - baselineDeviceDuration: number; - expDeviceDuration: number; - deltaDeviceDuration: number; - deltaDeviceDurationPercentNumber: number; - deltaDeviceDurationPercent: string; - - baselineSelfDeviceDuration: number; - expSelfDeviceDuration: number; - deltaSelfDeviceDuration: number; - deltaSelfDeviceDurationPercentNumber: number; - deltaSelfDeviceDurationPercent: string; -} - -let columnChartDataStack: any[][] = []; -let stepChartDataStack: any[][] = []; -let columnUnderlyingDataStack: ColumnUnderlyingData[][] = []; -let columnTableDataSourceStack: TableRow[][] = []; - -export const DiffOverview: React.FC = (props: IProps) => { - // #region - Constant - const COMPOSITE_NODES_NAME = 'CompositeNodes'; - - const hostDurationColumns = [ - { - title: 'Baseline Host Duration (us)', - dataIndex: 'baselineHostDuration', - key: 'baselineHostDuration', - sorter: (a: TableRow, b: TableRow): number => { - const aBaselineHost = a.baselineHostDuration ?? 0; - const bBaselineHost = b.baselineHostDuration ?? 0; - return aBaselineHost - bBaselineHost; - }, - }, - { - title: 'Exp Host Duration (us)', - dataIndex: 'expHostDuration', - key: 'expHostDuration', - sorter: (a: TableRow, b: TableRow): number => { - const aExpHost = a.expHostDuration ?? 0; - const bExpHost = b.expHostDuration ?? 0; - return aExpHost - bExpHost; - }, - }, - { - title: 'Delta Host Duration (us)', - dataIndex: 'deltaHostDuration', - key: 'deltaHostDuration', - sorter: (a: TableRow, b: TableRow): number => { - const aDeltaHost = a.deltaHostDuration ?? 0; - const bDeltaHost = b.deltaHostDuration ?? 0; - return aDeltaHost - bDeltaHost; - }, - }, - { - title: 'Delta Host Duration%', - dataIndex: 'deltaHostDurationPercent', - key: 'deltaHostDurationPercent', - sorter: (a: TableRow, b: TableRow): number => { - const aPercent = a.deltaHostDurationPercentNumber ?? 0; - const bPercent = b.deltaHostDurationPercentNumber ?? 0; - return aPercent - bPercent; - }, - }, - ]; - - const selfHostDurationColumns = [ - { - title: 'Baseline Self Host Duration (us)', - dataIndex: 'baselineSelfHostDuration', - key: 'baselineSelfHostDuration', - sorter: (a: TableRow, b: TableRow): number => a.baselineSelfHostDuration - b.baselineSelfHostDuration, - }, - { - title: 'Exp Self Host Duration (us)', - dataIndex: 'expSelfHostDuration', - key: 'expSelfHostDuration', - sorter: (a: TableRow, b: TableRow): number => a.expSelfHostDuration - b.expSelfHostDuration, - }, - { - title: 'Delta Self Host Duration (us)', - dataIndex: 'deltaSelfHostDuration', - key: 'deltaSelfHostDuration', - sorter: (a: TableRow, b: TableRow): number => { - const aDeltaSelfHost = a.deltaSelfHostDuration ?? 0; - const bDeltaSelfHost = b.deltaSelfHostDuration ?? 0; - return aDeltaSelfHost - bDeltaSelfHost; - }, - }, - { - title: 'Delta Self Host Duration%', - dataIndex: 'deltaSelfHostDurationPercent', - key: 'deltaSelfHostDurationPercent', - sorter: (a: TableRow, b: TableRow): number => { - const aSelfPercent = a.deltaSelfHostDurationPercentNumber ?? 0; - const bSelfPercent = b.deltaSelfHostDurationPercentNumber ?? 0; - return aSelfPercent - bSelfPercent; - }, - }, - ]; - - const deviceDurationColumns = [ - { - title: 'Baseline Device Duration (us)', - dataIndex: 'baselineDeviceDuration', - key: 'baselineDeviceDuration', - sorter: (a: TableRow, b: TableRow): number => a.baselineDeviceDuration - b.baselineDeviceDuration, - }, - { - title: 'Exp Device Duration (us)', - dataIndex: 'expDeviceDuration', - key: 'expDeviceDuration', - sorter: (a: TableRow, b: TableRow): number => a.expDeviceDuration - b.expDeviceDuration, - }, - { - title: 'Delta Device Duration (us)', - dataIndex: 'deltaDeviceDuration', - key: 'deltaDeviceDuration', - sorter: (a: TableRow, b: TableRow): number => { - const aDeltaDeviceDuration = a.deltaDeviceDuration ?? 0; - const bdeltaDeviceDuration = b.deltaDeviceDuration ?? 0; - return aDeltaDeviceDuration - bdeltaDeviceDuration; - }, - }, - { - title: 'Delta Device Duration%', - dataIndex: 'deltaDeviceDurationPercent', - key: 'deltaDeviceDurationPercent', - sorter: (a: TableRow, b: TableRow): number => { - const aDeltaDeviceDurationPercentNumber = a.deltaDeviceDurationPercentNumber ?? 0; - const bDeltaDeviceDurationPercentNumber = b.deltaDeviceDurationPercentNumber ?? 0; - return aDeltaDeviceDurationPercentNumber - bDeltaDeviceDurationPercentNumber; - }, - }, - ]; - - const selfDeviceDurationColumns = [ - { - title: 'Baseline Self Device Duration (us)', - dataIndex: 'baselineSelfDeviceDuration', - key: 'baselineSelfDeviceDuration', - sorter: (a: TableRow, b: TableRow): number => a.baselineSelfDeviceDuration - b.baselineSelfDeviceDuration, - }, - { - title: 'Exp Self Device Duration (us)', - dataIndex: 'expSelfDeviceDuration', - key: 'expSelfDeviceDuration', - sorter: (a: TableRow, b: TableRow): number => a.expSelfDeviceDuration - b.expSelfDeviceDuration, - }, - { - title: 'Delta Self Device Duration (us)', - dataIndex: 'deltaSelfDeviceDuration', - key: 'deltaSelfDeviceDuration', - sorter: (a: TableRow, b: TableRow): number => { - const aDeltaSelfDeviceDuration = a.deltaSelfDeviceDuration ?? 0; - const bDeltaSelfDeviceDuration = b.deltaSelfDeviceDuration ?? 0; - return aDeltaSelfDeviceDuration - bDeltaSelfDeviceDuration; - }, - }, - { - title: 'Delta Self Device Duration%', - dataIndex: 'deltaSelfDeviceDurationPercent', - key: 'deltaSelfDeviceDurationPercent', - sorter: (a: TableRow, b: TableRow): number => { - const aDeltaSelfDeviceDurationPercentNumber = a.deltaSelfDeviceDurationPercentNumber ?? 0; - const bDeltaSelfDeviceDurationPercentNumber = b.deltaSelfDeviceDurationPercentNumber ?? 0; - return aDeltaSelfDeviceDurationPercentNumber - bDeltaSelfDeviceDurationPercentNumber; - }, - }, - ]; - - interface IColumnMap { - [key: string]: any; - } - type IColumnMapType = IColumnMap; - - const tableSourceColumnMap: IColumnMapType = { - selfHostDuration: selfHostDurationColumns, - hostDuration: hostDurationColumns, - deviceDuration: deviceDurationColumns, - selfDeviceDuration: selfDeviceDurationColumns, - }; - - const baseTableColumns = [ - { - title: 'Operator', - dataIndex: 'operator', - key: 'operator', - sorter: (a: TableRow, b: TableRow) => a.operator.localeCompare(b.operator), - }, - { - title: 'Baseline Calls', - dataIndex: 'baselineCalls', - key: 'baselineCalls', - sorter: (a: TableRow, b: TableRow) => a.baselineCalls ?? 0 - (b.baselineCalls ?? 0), - }, - { - title: 'Exp Calls', - dataIndex: 'expCalls', - key: 'expCalls', - sorter: (a: TableRow, b: TableRow) => a.expCalls ?? 0 - (b.expCalls ?? 0), - }, - { - title: 'Delta Calls', - dataIndex: 'deltaCalls', - key: 'deltaCalls', - sorter: (a: TableRow, b: TableRow) => a.deltaCalls ?? 0 - (b.deltaCalls ?? 0), - }, - { - title: 'Delta Calls%', - dataIndex: 'deltaCallsPercent', - key: 'deltaCallsPercent', - sorter: (a: TableRow, b: TableRow) => a.deltaCallsPercentNumber ?? 0 - (b.deltaCallsPercentNumber ?? 0), - }, - ]; - - // #endregion - - // #region - State - const [tableDataSource, setTableDataSource] = React.useState([]); - const { run, worker, span, expRun, expWorker, expSpan } = props; - - const [columnUnderlyingData, setColumnUnderlyingData] = React.useState([]); - - const [rootUnderlyingData, setRootUnderlyingData] = React.useState(); - - const [columnChartData, setColumnChartData] = React.useState([]); - const [stepChartData, setStepChartData] = React.useState([]); - - const [selectedTableColumnsOptions, setSelectedTableColumnsOptions] = React.useState<[key: string]>(['hostDuration']); - const [selectedTableColumns, setSelectedTableColumns] = React.useState([ - ...baseTableColumns, - ...hostDurationColumns, - ]); - - const [dataStackLevel, setDataStackLevel] = React.useState(0); - const [loading, setLoading] = React.useState(false); - - // #endregion - const classes = useStyles(); - - // #region - Event Handler - const handleChartColumnSelect = (row: number, column: number): void => { - if (columnUnderlyingData.length === 0) { - return; - } - - let selectedUnderlyingData = columnUnderlyingData[row]; - if (!selectedUnderlyingData) { - return; - } - - let tableDataSource1 = generateDataSourceFromUnderlyingData(selectedUnderlyingData); - setTableDataSource(tableDataSource1); - columnTableDataSourceStack.push(tableDataSource1); - - setLoading(true); - - api.defaultApi - .diffnodeGet(run, worker, span, expRun, expWorker, expSpan, selectedUnderlyingData.path) - .then((resp) => handleDiffNodeResp(resp)) - .finally(() => setLoading(false)); - }; - - const handleGoBack = (): void => { - if (columnChartDataStack.length > 1) { - columnChartDataStack.pop(); - let top = columnChartDataStack[columnChartDataStack.length - 1]; - setColumnChartData(top); - } - - if (stepChartDataStack.length > 1) { - stepChartDataStack.pop(); - let top = stepChartDataStack[stepChartDataStack.length - 1]; - setStepChartData(top); - } - - if (columnUnderlyingDataStack.length > 0) { - columnUnderlyingDataStack.pop(); - let top = columnUnderlyingDataStack[columnUnderlyingDataStack.length - 1]; - setColumnUnderlyingData(top); - } - - if (columnTableDataSourceStack.length > 0) { - columnTableDataSourceStack.pop(); - let top = columnTableDataSourceStack[columnTableDataSourceStack.length - 1]; - - if (top) { - setTableDataSource(top); - } else { - let tableDataSource2 = generateDataSourceFromUnderlyingData(rootUnderlyingData); - setTableDataSource(tableDataSource2); - } - } - - setDataStackLevel(dataStackLevel - 1); - }; - - const toPercentString = (percentNumber: number): string => { - if (isNaN(percentNumber)) { - return 'N/A'; - } - - return `${percentNumber.toFixed(2)}%`; - }; - - const handleColumnSelectionChange = (value: [key: string]): void => { - let columns = value.map((x) => tableSourceColumnMap[x]).flat(); - let r = [...baseTableColumns, ...columns]; - setSelectedTableColumnsOptions(value); - setSelectedTableColumns(r); - }; - - const generateDataSourceFromUnderlyingData = (selectedUnderlyingData?: ColumnUnderlyingData): TableRow[] => { - if (!selectedUnderlyingData) { - return []; - } - let newTableDataSource: TableRow[] = []; - - for (let i = 0; i < selectedUnderlyingData.leftAggs.length; i++) { - let left = selectedUnderlyingData.leftAggs[i]; - let right = selectedUnderlyingData.rightAggs[i]; - - let deltaCallsPercentNumber = ((right.calls - left.calls) / left.calls) * 100; - - let deltaHostDurationPercentNumber = ((right.host_duration - left.host_duration) / left.host_duration) * 100; - - let deltaSelfHostDurationPercentNumber = - ((right.self_host_duration - left.self_host_duration) / left.self_host_duration) * 100; - - let deltaDeviceDurationPercentNumber = - ((right.device_duration - left.device_duration) / left.device_duration) * 100; - - let deltaSelfDeviceDurationPercentNumber = - ((right.self_device_duration - left.self_device_duration) / left.self_device_duration) * 100; - - newTableDataSource.push({ - key: i, - operator: left.name, - baselineCalls: left.calls, - expCalls: right.calls, - deltaCalls: right.calls - left.calls, - deltaCallsPercentNumber: deltaCallsPercentNumber, - deltaCallsPercent: toPercentString(deltaCallsPercentNumber), - - baselineHostDuration: left.host_duration, - expHostDuration: right.host_duration, - deltaHostDuration: parseFloat((right.host_duration - left.host_duration).toFixed(3)), - deltaHostDurationPercentNumber: deltaHostDurationPercentNumber, - deltaHostDurationPercent: toPercentString(deltaHostDurationPercentNumber), - - baselineSelfHostDuration: left.self_host_duration, - expSelfHostDuration: right.self_host_duration, - deltaSelfHostDuration: parseFloat((right.self_host_duration - left.self_host_duration).toFixed(3)), - deltaSelfHostDurationPercentNumber: deltaSelfHostDurationPercentNumber, - deltaSelfHostDurationPercent: toPercentString(deltaSelfHostDurationPercentNumber), - - baselineDeviceDuration: left.device_duration, - expDeviceDuration: right.device_duration, - deltaDeviceDuration: parseFloat((right.device_duration - left.device_duration).toFixed(3)), - deltaDeviceDurationPercentNumber: deltaDeviceDurationPercentNumber, - deltaDeviceDurationPercent: toPercentString(deltaDeviceDurationPercentNumber), - - baselineSelfDeviceDuration: left.self_device_duration, - expSelfDeviceDuration: right.self_device_duration, - deltaSelfDeviceDuration: parseFloat((right.self_device_duration - left.self_device_duration).toFixed(3)), - deltaSelfDeviceDurationPercentNumber: deltaSelfDeviceDurationPercentNumber, - deltaSelfDeviceDurationPercent: toPercentString(deltaSelfDeviceDurationPercentNumber), - }); - } - - return newTableDataSource; - }; - - React.useEffect(() => { - const hasData = - run.length > 0 && - worker.length > 0 && - span.length > 0 && - expRun.length > 0 && - expWorker.length > 0 && - expSpan.length > 0; - if (hasData) { - setLoading(true); - - columnChartDataStack = []; - stepChartDataStack = []; - columnUnderlyingDataStack = []; - columnTableDataSourceStack = []; - - api.defaultApi - .diffnodeGet(run, worker, span, expRun, expWorker, expSpan) - .then((resp) => { - handleDiffNodeResp(resp); - let newRootUnderlyingData = { - name: 'rootNode', - path: resp.path, - leftAggs: resp.left.aggs, - rightAggs: resp.right.aggs, - }; - - setRootUnderlyingData(newRootUnderlyingData); - let tableDataSource3 = generateDataSourceFromUnderlyingData(newRootUnderlyingData); - setTableDataSource(tableDataSource3); - }) - .finally(() => setLoading(false)); - - setSelectedTableColumns([...baseTableColumns, ...hostDurationColumns]); - } - }, [run, worker, span, expRun, expWorker, expSpan]); - - const handleDiffNodeResp = (resp: any): void => { - let newColumnChartData: any[] = []; - let newStepChartData: any[] = []; - let underlyingData: ColumnUnderlyingData[] = []; - - newColumnChartData.push(['Call', 'Baseline', 'Experiment', 'Baseline Trend', 'Exp Trend']); - newStepChartData.push(['Call', 'Diff', 'Accumulated Diff']); - - if (resp.children.length > 0) { - let accumulatedLeftDuration = 0; - let accumulatedRightDuration = 0; - let accumulatedStepDiff = 0; - for (let i = 0; i < resp.children.length; i++) { - let left = resp.children[i].left; - let right = resp.children[i].right; - let currColumn: any[] = []; - let currStep: any[] = []; - - let name = left.name; - if (name === COMPOSITE_NODES_NAME) { - continue; - } - - if (name.startsWith('aten::')) { - // Ignore aten operators - continue; - } - - if (name.startsWith('enumerate(DataLoader)')) { - name = name.substring(21); - } - - if (name.startsWith('enumerate(DataPipe)')) { - name = name.substring(19); - } - - if (name.startsWith('nn.Module: ')) { - name = name.substring(11); - } - - if (name.startsWith('Optimizer.zero_grad')) { - name = 'Optimizer.zero_grad'; - } - - if (name.startsWith('Optimizer.step')) { - name = 'Optimizer.step'; - } - - currColumn.push(name); - currColumn.push(left.total_duration); - currColumn.push(right.total_duration); - - accumulatedLeftDuration += left.total_duration; - currColumn.push(accumulatedLeftDuration); - - accumulatedRightDuration += right.total_duration; - currColumn.push(accumulatedRightDuration); - newColumnChartData.push(currColumn); - - underlyingData.push({ - name: name, - path: resp.children[i].path, - leftAggs: left.aggs, - rightAggs: right.aggs, - }); - - currStep.push(name); - let stepDiff = right.total_duration - left.total_duration; - currStep.push(stepDiff); - - accumulatedStepDiff += stepDiff; - currStep.push(accumulatedStepDiff); - - newStepChartData.push(currStep); - } - } else { - let left = resp.left; - let right = resp.right; - let currColumn: any[] = []; - let currStep: any[] = []; - let name = left.name; - - if (name.startsWith('nn.Module: ')) { - name = name.substring(11); - } - - currColumn.push(name); - currColumn.push(left.total_duration); - currColumn.push(right.total_duration); - currColumn.push(left.total_duration); - currColumn.push(right.total_duration); - - newColumnChartData.push(currColumn); - - currStep.push(name); - let stepDiff = right.total_duration - left.total_duration; - currStep.push(stepDiff); - currStep.push(stepDiff); - newStepChartData.push(currStep); - } - - setColumnChartData(newColumnChartData); - columnChartDataStack.push(newColumnChartData); - - setStepChartData(newStepChartData); - stepChartDataStack.push(newStepChartData); - - setColumnUnderlyingData(underlyingData); - columnUnderlyingDataStack.push(underlyingData); - - setDataStackLevel(columnChartDataStack.length); - }; // #endregion - - if (!loading && columnUnderlyingDataStack.length === 0) { - return ( - - - - There is no run selected for diff. - - - ); - } - - if (loading) { - return ; - } - - return ( -
- - - - - - - - {columnChartData.length > 1 && ( - <> - - - - )} - {columnChartData.length === 1 && No more level to show.} - - - - - - - - - - -   - - - - - - - - ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/DistributedView.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/DistributedView.tsx deleted file mode 100644 index 096501b61..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/DistributedView.tsx +++ /dev/null @@ -1,313 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import Card from '@material-ui/core/Card'; -import CardContent from '@material-ui/core/CardContent'; -import CardHeader from '@material-ui/core/CardHeader'; -import Grid from '@material-ui/core/Grid'; -import InputLabel from '@material-ui/core/InputLabel'; -import MenuItem from '@material-ui/core/MenuItem'; -import Select, { SelectProps } from '@material-ui/core/Select'; -import { makeStyles } from '@material-ui/core/styles'; -import { Table } from 'antd'; -import { ColumnsType } from 'antd/es/table'; -import * as React from 'react'; -import * as api from '../api'; -import { DistributedGraph, GpuInfo, Graph } from '../api'; -import { firstOrUndefined } from '../utils'; -import { ColumnChart } from './charts/ColumnChart'; -import { DataLoading } from './DataLoading'; -import { GpuInfoTable } from './GpuInfoTable'; -import { makeChartHeaderRenderer, useTooltipCommonStyles } from './helpers'; -import { - distributedCommopsTableTooltip, - distributedGpuInfoTableTooltip, - distributedOverlapGraphTooltip, - distributedWaittimeGraphTooltip, -} from './TooltipDescriptions'; - -export interface IProps { - run: string; - worker: string; - span: string; -} - -const useStyles = makeStyles((theme) => ({ - root: { - flexGrow: 1, - }, - verticalInput: { - display: 'flex', - alignItems: 'center', - }, - inputWidth: { - width: '4em', - }, - inputWidthOverflow: { - minWidth: '15em', - whiteSpace: 'nowrap', - }, - description: { - marginLeft: theme.spacing(1), - }, - table: { - height: '100%', - border: '1px solid #efefef', - '& .ant-table-tbody > tr': { - height: 20, - fontSize: '10pt', - '& > td': { - padding: '0 8px!important', - }, - }, - }, -})); - -export const DistributedView: React.FC = (props) => { - const tooltipCommonClasses = useTooltipCommonStyles(); - const chartHeaderRenderer = React.useMemo( - () => makeChartHeaderRenderer(tooltipCommonClasses), - [tooltipCommonClasses] - ); - - let { run, worker, span } = props; - const classes = useStyles(); - - const [overlapGraph, setOverlapGraph] = React.useState(undefined); - const [waittimeGraph, setWaittimeGraph] = React.useState(undefined); - const [commopsTableData, setCommopsTableData] = React.useState(undefined); - const [gpuInfo, setGpuInfo] = React.useState(undefined); - const [commopsTableTitle, setCommopsTableTitle] = React.useState(''); - const [commopsWorkers, setCommopsWorkers] = React.useState([]); - const [overlapSteps, setOverlapSteps] = React.useState([]); - const [waittimeSteps, setWaittimeSteps] = React.useState([]); - const [overlapStep, setOverlapStep] = React.useState(''); - const [waittimeStep, setWaittimeStep] = React.useState(''); - const [commopsWorker, setCommopsWorker] = React.useState(''); - const [columns, setColumns] = React.useState>([]); - const [pageSize, setPageSize] = React.useState(30); - - React.useEffect(() => { - if (waittimeSteps.includes('all')) { - setWaittimeStep('all'); - } else { - setWaittimeStep(firstOrUndefined(waittimeSteps) ?? ''); - } - }, [waittimeSteps]); - - React.useEffect(() => { - if (overlapSteps.includes('all')) { - setOverlapStep('all'); - } else { - setOverlapStep(firstOrUndefined(overlapSteps) ?? ''); - } - }, [overlapSteps]); - - React.useEffect(() => { - setCommopsWorker(firstOrUndefined(commopsWorkers) ?? ''); - }, [commopsWorkers]); - - React.useEffect(() => { - api.defaultApi.distributedOverlapGet(run, 'All', span).then((resp) => { - setOverlapGraph(resp); - setOverlapSteps(Object.keys(resp.data)); - }); - api.defaultApi.distributedWaittimeGet(run, 'All', span).then((resp) => { - setWaittimeGraph(resp); - setWaittimeSteps(Object.keys(resp.data)); - }); - api.defaultApi.distributedCommopsGet(run, 'All', span).then((resp) => { - setCommopsTableData(resp.data); - setCommopsWorkers(Object.keys(resp.data)); - setCommopsTableTitle(resp.metadata.title); - }); - api.defaultApi.distributedGpuinfoGet(run, 'All', span).then((resp) => { - setGpuInfo(resp); - }); - }, [run, worker, span]); - - const onCommopsWorkerChanged: SelectProps['onChange'] = (event) => { - setCommopsWorker(event.target.value as string); - }; - - const onOverlapStepChanged: SelectProps['onChange'] = (event) => { - setOverlapStep(event.target.value as string); - }; - - const onWaittimeStepChanged: SelectProps['onChange'] = (event) => { - setWaittimeStep(event.target.value as string); - }; - - const getColumnChartData = (distributedGraph?: DistributedGraph, step?: string): any => { - if (!distributedGraph || !step) { - return undefined; - } - const barLabels = Object.keys(distributedGraph.data[step]); - return { - legends: distributedGraph.metadata.legends, - barLabels, - barHeights: barLabels.map((label) => distributedGraph.data[step][label]), - }; - }; - const overlapData = React.useMemo(() => getColumnChartData(overlapGraph, overlapStep), [overlapGraph, overlapStep]); - const waittimeData = React.useMemo( - () => getColumnChartData(waittimeGraph, waittimeStep), - [waittimeGraph, waittimeStep] - ); - - const getTableData = (tableData?: any, opsWorker?: string): any[] => { - if (!tableData || !opsWorker) { - return []; - } - let dataInfo: api.Graph = tableData[opsWorker]; - const stringCompare = (a: string, b: string): number => a.localeCompare(b); - const numberCompare = (a: number, b: number): number => a - b; - let column: any[] = dataInfo.columns.map((item) => { - return { - title: item.name, - key: item.name, - dataIndex: item.name, - sorter: - item.type === 'string' - ? (a: any, b: any): number => stringCompare(a[item.name], b[item.name]) - : (a: any, b: any): number => numberCompare(a[item.name], b[item.name]), - }; - }); - setColumns(column); - return dataInfo.rows.map((row, index) => { - if (row.length !== dataInfo.columns.length) { - return null; - } - const dataRow: { [column: string]: number | string } = { key: index }; - dataInfo.columns.forEach((item, idx) => { - dataRow[item.name] = row[idx] as string | number; - }); - return dataRow; - }); - }; - const commopsTable: any[] = React.useMemo(() => { - return getTableData(commopsTableData, commopsWorker); - }, [commopsTableData, commopsWorker]); - - const onShowSizeChange = (current: number, size: number): void => { - setPageSize(size); - }; - - return ( -
- - - - - {gpuInfo && ( - - - - - - - - - )} - - - {(chartData): JSX.Element => ( - - - - - Step - - - - - - - {overlapGraph?.metadata?.title && ( - - )} - - - )} - - - - - {(chartData): JSX.Element => ( - - - - - Step - - - - - - - {waittimeGraph?.metadata?.title && ( - - )} - - - )} - - - - - - - - - - Worker - - - - - - - - -
- - - - - - - - ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/FullCircularProgress.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/FullCircularProgress.tsx deleted file mode 100644 index 3f4c0fbaf..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/FullCircularProgress.tsx +++ /dev/null @@ -1,23 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ -import CircularProgress from '@material-ui/core/CircularProgress'; -import { makeStyles } from '@material-ui/core/styles'; -import * as React from 'react'; - -const useStyles = makeStyles(() => ({ - root: { - width: '100%', - display: 'flex', - justifyContent: 'center', - }, -})); - -export const FullCircularProgress: React.FC = () => { - const classes = useStyles(); - return ( -
- -
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/GpuInfoTable.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/GpuInfoTable.tsx deleted file mode 100644 index 07f6f1d78..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/GpuInfoTable.tsx +++ /dev/null @@ -1,130 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import { makeStyles } from '@material-ui/core/styles'; -import * as React from 'react'; - -export interface IProps { - gpuInfo: any; -} - -const useStyles = makeStyles((theme) => ({ - root: { - border: '1px solid #E0E0E0', - borderCollapse: 'collapse', - width: '100%', - }, - td: { - borderTop: '1px solid #E0E0E0', - borderBottom: '1px solid #E0E0E0', - borderCollapse: 'collapse', - paddingLeft: 10, - paddingRight: 10, - }, - nodeTd: { - fontWeight: 'bold', - }, - pidTd: { - fontWeight: 'normal', - }, - gpuTd: { - fontWeight: 'normal', - }, - keyTd: { - fontWeight: 'normal', - textAlign: 'right', - }, - valueTd: { - fontWeight: 'bold', - }, -})); - -interface TableCellInfo { - content: string; - rowspan: number; - cellType: 'node' | 'pid' | 'gpu' | 'key' | 'value'; - last?: boolean; -} - -function makeTableCellInfo(gpuInfo: any): TableCellInfo[][] { - const rows: TableCellInfo[][] = []; - let currRow: TableCellInfo[] = []; - rows.push(currRow); - Object.keys(gpuInfo.data).forEach((nodeName) => { - const nodeCell = { - content: nodeName, - rowspan: 0, - cellType: 'node' as const, - }; - const i = rows.length; - currRow.push(nodeCell); - Object.keys(gpuInfo.data[nodeName]).forEach((pid) => { - const pidCell = { content: pid, rowspan: 0, cellType: 'pid' as const }; - const j = rows.length; - currRow.push(pidCell); - Object.keys(gpuInfo.data[nodeName][pid]).forEach((gpu) => { - const gpuCell = { content: gpu, rowspan: 0, cellType: 'gpu' as const }; - const k = rows.length; - currRow.push(gpuCell); - Object.keys(gpuInfo.data[nodeName][pid][gpu]).forEach((keyName) => { - currRow.push({ - content: keyName, - rowspan: 1, - cellType: 'key' as const, - }); - const value: string = gpuInfo.data[nodeName][pid][gpu][keyName]; - currRow.push({ - content: value, - rowspan: 1, - cellType: 'value' as const, - }); - currRow = []; - rows.push(currRow); - }); - gpuCell.rowspan = rows.length - k; - }); - pidCell.rowspan = rows.length - j; - }); - nodeCell.rowspan = rows.length - i; - }); - rows.pop(); - return rows; -} - -export const GpuInfoTable: React.FC = (props) => { - const classes = useStyles(); - interface TableCellInfoNoLast { - content: string; - rowspan: number; - cellType: 'node' | 'pid' | 'gpu' | 'key' | 'value'; - } - - const rows = React.useMemo(() => makeTableCellInfo(props.gpuInfo), [props.gpuInfo]); - - const cellToClass = { - node: classes.nodeTd, - pid: classes.pidTd, - gpu: classes.gpuTd, - key: classes.keyTd, - value: classes.valueTd, - }; - - const renderCell = function (info: TableCellInfoNoLast): JSX.Element { - let cellClass = cellToClass[info.cellType]; - let content = info.cellType === 'key' ? `${info.content}:` : info.content; - return ( - - ); - }; - - return ( -
- {content} -
- {rows.map((row) => ( - {row.map(renderCell)} - ))} -
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Kernel.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Kernel.tsx deleted file mode 100644 index 66e056951..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Kernel.tsx +++ /dev/null @@ -1,301 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Modifications: Add visualization of PyTorch Ascend profiling. - *--------------------------------------------------------------------------------------------*/ - -import Card from '@material-ui/core/Card'; -import CardContent from '@material-ui/core/CardContent'; -import CardHeader from '@material-ui/core/CardHeader'; -import FormControlLabel from '@material-ui/core/FormControlLabel'; -import Grid from '@material-ui/core/Grid'; -import InputLabel from '@material-ui/core/InputLabel'; -import MenuItem from '@material-ui/core/MenuItem'; -import Radio from '@material-ui/core/Radio'; -import RadioGroup, { RadioGroupProps } from '@material-ui/core/RadioGroup'; -import Select, { SelectProps } from '@material-ui/core/Select'; -import { makeStyles } from '@material-ui/core/styles'; -import TextField, { StandardTextFieldProps, TextFieldProps } from '@material-ui/core/TextField'; -import * as React from 'react'; -import * as api from '../api'; -import { Graph } from '../api'; -import { KernelGroupBy } from '../constants/groupBy'; -import { useSearch } from '../utils/search'; -import { topIsValid, UseTop, useTopN } from '../utils/top'; -import { AntTableChart } from './charts/AntTableChart'; -import { PieChart } from './charts/PieChart'; -import { DataLoading } from './DataLoading'; -import { makeChartHeaderRenderer, useTooltipCommonStyles } from './helpers'; -import { - gpuKernelTotalTimeTooltip, - tensorCoresPieChartTooltip, - tensorCoresPieChartTooltipAscend, -} from './TooltipDescriptions'; - -export interface IProps { - run: string; - worker: string; - span: string; - deviceTarget: string; -} - -const useStyles = makeStyles((theme) => ({ - root: { - flexGrow: 1, - }, - verticalInput: { - display: 'flex', - alignItems: 'center', - }, - inputWidth: { - width: '4em', - }, - inputWidthOverflow: { - minWidth: '15em', - whiteSpace: 'nowrap', - }, - description: { - marginLeft: theme.spacing(1), - }, -})); - -export const Kernel: React.FC = (props) => { - const { run, worker, span, deviceTarget } = props; - const classes = useStyles(); - const tooltipCommonClasses = useTooltipCommonStyles(); - const chartHeaderRenderer = React.useMemo( - () => makeChartHeaderRenderer(tooltipCommonClasses), - [tooltipCommonClasses] - ); - - const [kernelGraph, setKernelGraph] = React.useState(undefined); - const [tcGraph, setTcGraph] = React.useState(undefined); - const [kernelTable, setKernelTable] = React.useState(undefined); - const [groupBy, setGroupBy] = React.useState(KernelGroupBy.KERNEL); - const [searchKernelName, setSearchKernelName] = React.useState(''); - const [searchOpName, setSearchOpName] = React.useState(''); - const [sortColumn, setSortColumn] = React.useState(''); - const [hasStep, setHasStep] = React.useState(false); - - const [topText, actualTop, useTop, setTopText, setUseTop] = useTopN({ - defaultUseTop: UseTop.USE, - defaultTop: 10, - }); - - React.useEffect(() => { - setSearchOpName(''); - }, [groupBy]); - - React.useEffect(() => { - if (kernelGraph) { - setTopText(String(Math.min(kernelGraph.rows?.length, 10))); - } - }, [kernelGraph]); - - React.useEffect(() => { - api.defaultApi.kernelTableGet(run, worker, span, groupBy).then((resp) => { - setSortColumn(resp.metadata.sort); - setKernelTable(resp.data); - const nameColumnIdx = resp.data.columns.findIndex((c) => c.name.toLowerCase() === 'step id'); - setHasStep(nameColumnIdx > -1); - }); - }, [run, worker, span, groupBy]); - - React.useEffect(() => { - api.defaultApi.kernelGet(run, worker, span, KernelGroupBy.KERNEL).then((resp) => { - setKernelGraph(resp.total); - setGroupBy(resp.device_target === 'Ascend' ? KernelGroupBy.KERNEL_NAME_AND_OP_NAME : KernelGroupBy.KERNEL); - }); - }, [run, worker, span]); - - React.useEffect(() => { - api.defaultApi.kernelTcPieGet(run, worker, span).then((resp) => { - setTcGraph(resp.total); - }); - }, [run, worker, span]); - - const [searchedKernelTable] = useSearch(searchKernelName, 'name', kernelTable); - const [searchedOpTable] = useSearch( - searchOpName, - deviceTarget === 'Ascend' ? 'step id' : 'operator', - searchedKernelTable - ); - - const onGroupByChanged: SelectProps['onChange'] = (event) => { - setGroupBy(event.target.value as KernelGroupBy); - }; - - const onSearchKernelChanged: TextFieldProps['onChange'] = (event) => { - setSearchKernelName(event.target.value as string); - }; - - const onSearchOpChanged: TextFieldProps['onChange'] = (event) => { - setSearchOpName(event.target.value as string); - }; - - const onUseTopChanged: RadioGroupProps['onChange'] = (event) => { - setUseTop(event.target.value as UseTop); - }; - - const onTopChanged = (event: React.ChangeEvent): void => { - setTopText(event.target.value); - }; - - const inputProps: StandardTextFieldProps['inputProps'] = { - min: 1, - }; - - const GPUKernelTotalTimeTitle = React.useMemo( - () => chartHeaderRenderer('Total Time (us)', gpuKernelTotalTimeTooltip), - [chartHeaderRenderer] - ); - - const TensorCoresTitle = React.useMemo( - () => - deviceTarget === 'Ascend' - ? chartHeaderRenderer('Accelerator Core Utilization', tensorCoresPieChartTooltipAscend) - : chartHeaderRenderer('Tensor Cores Utilization', tensorCoresPieChartTooltip), - [chartHeaderRenderer, deviceTarget] - ); - - return ( -
- - - - - - - - } label='All kernels' /> - } label='Top kernels to show' /> - - - {useTop === UseTop.USE && ( - - - - )} - - - - {(graph): JSX.Element => ( - - - - - )} - - - - - {(graph): JSX.Element => ( - - - - - )} - - - - - - - Group By - - - - - - - - {deviceTarget === 'Ascend' - ? groupBy === KernelGroupBy.KERNEL && - hasStep && ( - - - - ) - : groupBy === KernelGroupBy.KERNEL_NAME_AND_OP_NAME && ( - - - - )} - - - - - - {(graph): JSX.Element => } - - - - - - - -
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/MemoryView.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/MemoryView.tsx deleted file mode 100644 index 225f28a93..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/MemoryView.tsx +++ /dev/null @@ -1,531 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Modifications: Add visualization of PyTorch Ascend profiling. - *--------------------------------------------------------------------------------------------*/ - -import Card from '@material-ui/core/Card'; -import CardContent from '@material-ui/core/CardContent'; -import CardHeader from '@material-ui/core/CardHeader'; -import Grid from '@material-ui/core/Grid'; -import InputLabel from '@material-ui/core/InputLabel'; -import MenuItem from '@material-ui/core/MenuItem'; -import Select, { SelectProps } from '@material-ui/core/Select'; -import Slider from '@material-ui/core/Slider'; -import { makeStyles } from '@material-ui/core/styles'; -import TextField, { TextFieldProps } from '@material-ui/core/TextField'; -import * as React from 'react'; -import * as api from '../api'; -import { - Graph, - GraphAscend, - MemoryCurveDataAll, - MemoryCurveData, - MemoryCurveDataAscend, - MemoryEventsData, - MemoryEventsDataAll, - MemoryStatsData, -} from '../api'; -import { useSearchDirectly } from '../utils/search'; -import { AntTableChart } from './charts/AntTableChart'; -import { LineChart } from './charts/NewLineChart'; -import { DataLoading } from './DataLoading'; -import { MemoryStatsTable } from './tables/MemoryStatsTable'; - -const useStyles = makeStyles((theme) => ({ - root: { - flexGrow: 1, - }, - curve: { - marginBottom: 20, - }, - verticalInput: { - display: 'flex', - alignItems: 'center', - }, - inputWidth: { - width: '4em', - }, - inputWidthOverflow: { - minWidth: '15em', - whiteSpace: 'nowrap', - }, - full: { - width: '100%', - }, - description: { - marginLeft: theme.spacing(1), - }, - filterSlider: { - marginTop: 15, - marginRight: 6, - width: 250, - }, - filterInput: { - width: 100, - }, -})); - -export interface IProps { - run: string; - worker: string; - span: string; - deviceTarget: string; -} - -const tags = ['Operator', 'Component']; - -export const MemoryView: React.FC = React.memo((props) => { - interface EventSizeFilter { - [deviceName: string]: Array; - } - - interface MaxEventSize { - [deviceName: string]: number; - } - - const { run, worker, span, deviceTarget } = props; - const classes = useStyles(); - - const [memoryStatsData, setMemoryStatsData] = React.useState(undefined); - - // for backward compatability, old profile do not have events to show - const showEvents = (): boolean | undefined => { - return memoryEventsData && Object.keys(memoryEventsData.rows).length !== 0; - }; - const [memoryEventsData, setMemoryEventsData] = React.useState(undefined); - - // for backward compatability, old profile do not have curve to show - const showCurve = (): boolean | undefined => { - return memoryCurveData && Object.keys(memoryCurveData.rows).length !== 0; - }; - const [memoryCurveData, setMemoryCurveData] = React.useState( - undefined - ); - - const [lineChartData, setLineChartData] = React.useState(undefined); - - const [devices, setDevices] = React.useState([]); - const [device, setDevice] = React.useState(''); - const [tag, setTag] = React.useState('Operator'); - const memoryCurveDataAllRef = React.useRef(undefined); - const memoryEventDataAllRef = React.useRef(undefined); - - interface SelectedRange { - start: number; - end: number; - startTs: number; - endTs: number; - } - const [selectedRange, setSelectedRange] = React.useState(); - const [searchOperatorName, setSearchOperatorName] = React.useState(''); - const [searchEventOperatorName, setSearchEventOperatorName] = React.useState(''); - const [filterEventSize, setFilterEventSize] = React.useState({}); - const [maxSize, setMaxSize] = React.useState({}); - - const getSearchIndex = function (): number { - if (!memoryStatsData) { - return -1; - } - for (let i = 0; i < memoryStatsData.columns.length; i++) { - if (memoryStatsData.columns[i].name === memoryStatsData.metadata.search) { - return i; - } - } - return -1; - }; - - const getStep = (size: number, indexBias: number): number => { - return 10 ** (Math.floor(Math.log10(size !== 0 ? size : 1)) - indexBias); - }; - - const filterByEventSize = (rows: T[] | undefined, size: Array): T[] | undefined => { - const result = React.useMemo(() => { - if (!rows) { - return undefined; - } - - // workaround type system - const field = (row: any): number => { - const sizeColIndex = 1; - return row[sizeColIndex]; - }; - - return rows.filter((row) => { - return field(row) >= size[0] && field(row) <= size[1]; - }); - }, [rows, size]); - - return result; - }; - - const searchIndex = getSearchIndex(); - const getName = React.useCallback((row: any) => row[searchIndex], [searchIndex]); - const getNameAscend = (row: any): any => row[0]; - const [searchedTableDataRows] = useSearchDirectly(searchOperatorName, getName, memoryStatsData?.rows[device] ?? []); - const [searchedEventsTableDataRows] = useSearchDirectly( - searchEventOperatorName, - deviceTarget === 'Ascend' ? getNameAscend : getName, - filterByEventSize(memoryEventsData?.rows[device], filterEventSize[device] ?? [0, Infinity]) ?? [] - ); - - const onSearchOperatorChanged: TextFieldProps['onChange'] = (event) => { - setSearchOperatorName(event.target.value as string); - }; - - const onSearchEventOperatorChanged: TextFieldProps['onChange'] = (event) => { - setSearchEventOperatorName(event.target.value as string); - }; - - const [selectedRecord, setSelectedRecord] = React.useState(); - const onRowSelected = (record?: object, rowIndex?: number): void => { - setSelectedRecord(record); - }; - - const onFilterEventSizeChanged = (event: any, newValue: number | number[]): void => { - setFilterEventSize({ - ...filterEventSize, - [device]: newValue as number[], - }); - }; - - const onFilterEventMinSizeInputChanged = (event: React.ChangeEvent): void => { - setFilterEventSize({ - ...filterEventSize, - [device]: [Number(event.target.value), filterEventSize[device][1]], - }); - }; - - const onFilterEventMaxSizeInputChanged = (event: React.ChangeEvent): void => { - setFilterEventSize({ - ...filterEventSize, - [device]: [filterEventSize[device][0], Number(event.target.value)], - }); - }; - - React.useEffect(() => { - if (deviceTarget !== 'Ascend') { - api.defaultApi.memoryGet(run, worker, span, selectedRange?.startTs, selectedRange?.endTs).then((resp) => { - setMemoryStatsData(resp); - if (!devices || devices.length === 0) { - // setDevices only execute on view load. Since selection on curve - // might filter all events later, some devices might is missing. - setDevices(Object.keys(resp.rows)); - setDevice(resp.metadata.default_device); - } - }); - } - }, [run, worker, span, selectedRange]); - - React.useEffect(() => { - api.defaultApi.memoryEventsGet(run, worker, span, selectedRange?.startTs, selectedRange?.endTs).then((resp) => { - const tempRes = deviceTarget === 'Ascend' ? (resp as MemoryEventsDataAll).operator : (resp as MemoryEventsData); - if (deviceTarget === 'Ascend') { - memoryEventDataAllRef.current = resp as MemoryEventsDataAll; - } - let curMaxSize: MaxEventSize = {}; - let curFilterEventSize: EventSizeFilter = {}; - Object.keys(tempRes.rows).forEach((deviceName) => { - curMaxSize[deviceName] = 0; - for (let i = 0; i < tempRes.rows[deviceName].length; i++) { - curMaxSize[deviceName] = Math.max(curMaxSize[deviceName], tempRes.rows[deviceName][i][1]); - } - curFilterEventSize[deviceName] = [curMaxSize[deviceName] / 4, curMaxSize[deviceName]]; - curMaxSize[deviceName] = curMaxSize[deviceName]; - }); - setMaxSize(curMaxSize); - setFilterEventSize(curFilterEventSize); - setMemoryEventsData(tempRes); - }); - }, [run, worker, span, selectedRange]); - - React.useEffect(() => { - api.defaultApi.memoryCurveGet(run, worker, span).then((resp) => { - // Reset the select range to null whenever run/worker/span changes - setSelectedRange(undefined); - if (deviceTarget === 'Ascend') { - const allCurveData = resp as MemoryCurveDataAll; - memoryCurveDataAllRef.current = allCurveData; - setDevice(allCurveData.default_device); - setDevices(allCurveData.devices); - setMemoryCurveData(allCurveData.total); - setTag('Operator'); - } else { - setMemoryCurveData(resp as MemoryCurveData); - } - }); - }, [run, worker, span]); - - React.useEffect(() => { - if (memoryCurveData !== undefined) { - if (deviceTarget === 'Ascend') { - setLineChartData({ - title: memoryCurveData.metadata.peaks[device] ?? '', - columns: memoryCurveData.columns[device] ?? [], - rows: memoryCurveData.rows[device] ?? {}, - }); - } else { - setLineChartData({ - title: memoryCurveData.metadata.peaks[device], - columns: memoryCurveData.columns, - rows: memoryCurveData.rows[device] ?? [], - }); - } - } - }, [memoryCurveData, device]); - - const onDeviceChanged: SelectProps['onChange'] = (event) => { - setDevice(event.target.value as string); - setSelectedRange(undefined); - }; - - const onTagChanged: SelectProps['onChange'] = (event) => { - setTag(event.target.value as string); - if (event.target.value === 'Operator') { - setMemoryCurveData(memoryCurveDataAllRef.current?.total); - setMemoryEventsData(memoryEventDataAllRef.current?.operator); - setSelectedRange(undefined); - } else { - setMemoryCurveData(memoryCurveDataAllRef.current?.ptaGe); - setMemoryEventsData(memoryEventDataAllRef.current?.component); - } - }; - - const onSelectedRangeChanged = (start: number, end: number): void => { - if (start > end) { - setSelectedRange(undefined); - return; - } - - let allDatas = deviceTarget === 'Ascend' ? memoryCurveData?.rows[device]?.Allocated : memoryCurveData?.rows[device]; - if (allDatas.length <= 1) { - setSelectedRange(undefined); - return; - } - - let startTs = 0; - let endTs = 0; - let realStart = 0; - let realEnd = 0; - let startId = 1; - let endId = 0; - let needLoopStart = true; - for (let i = 1; i < allDatas.length; i++) { - if (startId > start && needLoopStart) { - needLoopStart = false; - realStart = i - 1; - } - if (allDatas[i][0] !== allDatas[i - 1][0]) { - if (startId <= start) { - startId += 1; - } - endId += 1; - } - if (endId > end) { - realEnd = i - 1; - break; - } else { - realEnd = i; - if (needLoopStart) { - realStart = i; - } - } - } - - if (deviceTarget === 'Ascend') { - startTs = allDatas[realStart][0]; - endTs = allDatas[realEnd][0]; - } else { - let bias = memoryCurveData?.metadata.first_ts ?? 0; - let scale = 1 / (memoryCurveData?.metadata.time_factor ?? 1); - startTs = Math.round((allDatas[realStart][0] * scale) + bias); - endTs = Math.round((allDatas[realEnd][0] * scale) + bias); - } - - setSelectedRange({ start, end, startTs, endTs }); - }; - - return ( -
- - - - - - - {(graph): JSX.Element => ( - - - - Device - - - {deviceTarget === 'Ascend' && ( - - Group By - - - )} - - {showCurve() && lineChartData && lineChartData.columns.length > 0 && ( - -
- -
-
- )} -
- )} -
-
- {showEvents() && ( - <> - {(deviceTarget !== 'Ascend' || tag === 'Operator') && ( - - - - - - - - - - - - - - - - - - - - - )} - - - {(data): JSX.Element => { - return ( - - ); - }} - - - - )} - {deviceTarget !== 'Ascend' && ( - <> - - - - - - - - {(data): JSX.Element => ( - - )} - - - - )} -
-
-
-
- ); -}); diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/ModuleView.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/ModuleView.tsx deleted file mode 100644 index a66a82536..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/ModuleView.tsx +++ /dev/null @@ -1,244 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ -import Card from '@material-ui/core/Card'; -import CardHeader from '@material-ui/core/CardHeader'; -import InputLabel from '@material-ui/core/InputLabel'; -import MenuItem from '@material-ui/core/MenuItem'; -import Select, { SelectProps } from '@material-ui/core/Select'; -import { makeStyles } from '@material-ui/core/styles'; -import { message, Table } from 'antd'; -import * as React from 'react'; -import { FlameGraph } from 'react-flame-graph'; -import { defaultApi, KeyedColumn, ModuleStats, ModuleViewData, OperatorNode } from '../api'; - -const useStyles = makeStyles((theme) => ({ - root: { - flexGrow: 1, - }, - hide: { - display: 'none', - }, -})); - -export interface IProps { - run: string; - worker: string; - span: string; -} - -const getKeyedTableColumns = (columns: KeyedColumn[]): any[] => { - return columns.map((col) => { - return { - dataIndex: col.key, - key: col.key, - title: col.name, - }; - }); -}; - -const getTableRows = (key: number, rows: ModuleStats[]): any[] => { - let initialKey = key; - return rows.map((row) => { - const currentKey = initialKey++; - const data: any = { - key: currentKey, - name: row.name, - occurences: row.occurences, - operators: row.operators, - host_duration: row.host_duration, - self_host_duration: row.self_host_duration, - device_duration: row.device_duration, - self_device_duration: row.self_device_duration, - }; - - if (row.children.length) { - data.children = getTableRows(key, row.children); - } - - return data; - }); -}; - -const getFlameGraphData = (rows: ModuleStats[]): any[] => { - return rows.map((row) => { - const data: any = { - name: row.name, - value: row.avg_duration, - tooltip: `${row.name} (module id: ${row.id}): ${row.avg_duration} us`, - }; - - if (row.children.length) { - data.children = getFlameGraphData(row.children); - } - - return data; - }); -}; - -const getTreeHeight = (row: ModuleStats): number => { - if (row.children?.length) { - return 1 + Math.max(...row.children.map((child) => getTreeHeight(child))); - } else { - return 1; - } -}; - -const getOperatorTree = (level: number, row: OperatorNode, result: object[]): void => { - result.push({ - level: level, - name: row.name, - start: row.start_time, - end: row.end_time, - }); - if (row.children.length) { - row.children.forEach((child) => getOperatorTree(level + 1, child, result)); - } -}; - -export const ModuleView: React.FC = (props) => { - const { run, worker, span } = props; - const classes = useStyles(); - - const [moduleView, setModuleView] = React.useState(undefined); - const [flameData, setFlameData] = React.useState([]); - const [flameHeight, setFlameHeight] = React.useState(0); - const [modules, setModules] = React.useState([]); - const [module, setModule] = React.useState(0); - - const [columns, setColumns] = React.useState([]); - const [rows, setRows] = React.useState([]); - - const cardRef = React.useRef(null); - const [cardWidth, setCardWidth] = React.useState(undefined); - const timelineRef = React.useRef(null); - - React.useEffect(() => { - defaultApi - .moduleGet(run, worker, span) - .then((resp) => { - setModuleView(resp); - if (resp) { - // set the flamegraph data - const flameGraphData: any[] = getFlameGraphData(resp.data); - setFlameData(flameGraphData); - const flameGraphHeight = Math.max(...flameGraphData.map((x) => getTreeHeight(x))); - setFlameHeight(flameGraphHeight * 25); - setModules(Array.from(Array(flameGraphData.length).keys())); - setModule(0); - - // set the tree table data - setColumns(getKeyedTableColumns(resp.columns)); - setRows(getTableRows(1, resp.data)); - } - }) - .catch((e) => { - if (e.status === 404) { - setModules([]); - setFlameData([]); - setRows([]); - } - }); - - if (cardRef.current) { - setCardWidth(cardRef.current.offsetWidth - 10); - } - try { - if (timelineRef.current) { - defaultApi.treeGet(run, worker, span).then((resp) => { - if (resp) { - const data = new google.visualization.DataTable(); - data.addColumn({ type: 'string', id: 'Layer' }); - data.addColumn({ type: 'string', id: 'Name' }); - data.addColumn({ type: 'string', role: 'tooltip' }); - data.addColumn({ type: 'number', id: 'Start' }); - data.addColumn({ type: 'number', id: 'End' }); - - let timelineData: any[] = []; - getOperatorTree(0, resp, timelineData); - timelineData.sort((a, b) => a.level - b.level); - const maxLevel = timelineData[timelineData.length - 1].level; - timelineData.forEach((d) => { - data.addRow([ - d.level.toString(), - d.name, - `${d.name} Duration: ${d.end - d.start} us`, - d.start / 1000.0, // the time unit is us returned from server, but the google charts only accept milliseconds here - d.end / 1000.0, - ]); - }); - - const chart = new google.visualization.Timeline(timelineRef.current); - const options = { - height: (maxLevel + 1) * 50, - tooltip: { - isHtml: true, - }, - timeline: { - showRowLabels: false, - }, - }; - chart.draw(data, options); - } - }); - } - } catch (e) { - message.warning('Timeline in module view is not supported offline.'); - } - }, [run, worker, span]); - - const handleModuleChange: SelectProps['onChange'] = (event) => { - setModule(event.target.value as number); - }; - - const moduleComponent = (): JSX.Element => { - const moduleFragment = ( - - Module - - - ); - - if (!modules || modules.length <= 1) { - return
{moduleFragment}
; - } else { - return moduleFragment; - } - }; - - return ( -
- - - {rows && rows.length > 0 && ( - - )} - - {moduleComponent()} - - {flameData && flameData.length > 0 && ( - {}} - /> - )} - -
- -
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Operator.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Operator.tsx deleted file mode 100644 index b19bef196..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Operator.tsx +++ /dev/null @@ -1,282 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Modifications: Add visualization of PyTorch Ascend profiling. - *--------------------------------------------------------------------------------------------*/ - -import Card from '@material-ui/core/Card'; -import CardContent from '@material-ui/core/CardContent'; -import CardHeader from '@material-ui/core/CardHeader'; -import FormControlLabel from '@material-ui/core/FormControlLabel'; -import Grid from '@material-ui/core/Grid'; -import GridList from '@material-ui/core/GridList'; -import GridListTile from '@material-ui/core/GridListTile'; -import InputLabel from '@material-ui/core/InputLabel'; -import MenuItem from '@material-ui/core/MenuItem'; -import Radio from '@material-ui/core/Radio'; -import RadioGroup, { RadioGroupProps } from '@material-ui/core/RadioGroup'; -import Select, { SelectProps } from '@material-ui/core/Select'; -import { makeStyles } from '@material-ui/core/styles'; -import TextField, { StandardTextFieldProps, TextFieldProps } from '@material-ui/core/TextField'; -import * as React from 'react'; -import * as api from '../api'; -import { OperationTableData, OperationTableDataInner, OperatorGraph } from '../api'; -import { OperationGroupBy } from '../constants/groupBy'; -import { useSearchDirectly } from '../utils/search'; -import { topIsValid, UseTop, useTopN } from '../utils/top'; -import { PieChart } from './charts/PieChart'; -import { DataLoading } from './DataLoading'; -import { makeChartHeaderRenderer, useTooltipCommonStyles } from './helpers'; -import { OperationTable } from './tables/OperationTable'; -import { - deviceSelfTimeTooltip, - deviceSelfTimeTooltipAscend, - deviceTotalTimeTooltip, - deviceTotalTimeTooltipAscend, - hostSelfTimeTooltip, - hostTotalTimeTooltip, -} from './TooltipDescriptions'; - -const useStyles = makeStyles((theme) => ({ - root: { - flexGrow: 1, - }, - verticalInput: { - display: 'flex', - alignItems: 'center', - }, - inputWidth: { - width: '4em', - }, - inputWidthOverflow: { - minWidth: '15em', - whiteSpace: 'nowrap', - }, - full: { - width: '100%', - }, - description: { - marginLeft: theme.spacing(1), - }, -})); - -export interface IProps { - run: string; - worker: string; - span: string; - deviceTarget: string; -} - -export const Operator: React.FC = (props) => { - const { run, worker, span, deviceTarget } = props; - const classes = useStyles(); - const tooltipCommonClasses = useTooltipCommonStyles(); - const chartHeaderRenderer = React.useMemo( - () => makeChartHeaderRenderer(tooltipCommonClasses), - [tooltipCommonClasses] - ); - - const [operatorGraph, setOperatorGraph] = React.useState(undefined); - const [operatorTable, setOperatorTable] = React.useState(undefined); - const [sortColumn, setSortColumn] = React.useState(''); - const [tableTooltips, setTableTooltips] = React.useState(undefined); - const [groupBy, setGroupBy] = React.useState(OperationGroupBy.OPERATION); - const [searchOperatorName, setSearchOperatorName] = React.useState(''); - const [topText, actualTop, useTop, setTopText, setUseTop] = useTopN({ - defaultUseTop: UseTop.USE, - defaultTop: 10, - }); - - const getName = React.useCallback((row: OperationTableDataInner) => row.name, []); - const [searchedOperatorTable] = useSearchDirectly(searchOperatorName, getName, operatorTable); - - const onSearchOperatorChanged: TextFieldProps['onChange'] = (event) => { - setSearchOperatorName(event.target.value as string); - }; - - React.useEffect(() => { - if (operatorGraph) { - const counts = [ - operatorGraph.device_self_time?.rows.length ?? 0, - operatorGraph.device_total_time?.rows.length ?? 0, - operatorGraph.host_self_time.rows?.length ?? 0, - operatorGraph.host_total_time.rows?.length ?? 0, - ]; - setTopText(String(Math.min(Math.max(...counts), 10))); - } - }, [operatorGraph]); - - React.useEffect(() => { - api.defaultApi.operationTableGet(run, worker, span, groupBy).then((resp) => { - setSortColumn(resp.metadata.sort); - setTableTooltips(resp.metadata.tooltips); - setOperatorTable(resp.data); - }); - }, [run, worker, span, groupBy]); - - React.useEffect(() => { - api.defaultApi.operationGet(run, worker, span, groupBy).then((resp) => { - setOperatorGraph(resp); - }); - }, [run, worker, span, groupBy]); - - const onGroupByChanged: SelectProps['onChange'] = (event) => { - setGroupBy(event.target.value as OperationGroupBy); - }; - - const onUseTopChanged: RadioGroupProps['onChange'] = (event) => { - setUseTop(event.target.value as UseTop); - }; - - const onTopChanged = (event: React.ChangeEvent): void => { - setTopText(event.target.value); - }; - - const inputProps: StandardTextFieldProps['inputProps'] = { - min: 1, - }; - - const renderCharts = (graph: api.OperatorGraph): JSX.Element => { - return ( - - {graph.device_self_time && ( - - - {graph.device_self_time.title && ( - - )} - - - - )} - {graph.device_total_time && ( - - - {graph.device_total_time.title && ( - - )} - - - - )} - - - {graph.host_self_time.title && ( - - )} - - - - - - {graph.host_total_time.title && ( - - )} - - - - - ); - }; - - return ( -
- - - - - - - - } label='All operators' /> - } label='Top operators to show' /> - - - {useTop === UseTop.USE && ( - - - - )} - - - {renderCharts} - - - - - - Group By - - - - - - - - - - {(table): JSX.Element => ( - - )} - - - - - - -
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Overview.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Overview.tsx deleted file mode 100644 index 6a81c567b..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/Overview.tsx +++ /dev/null @@ -1,225 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import Card from '@material-ui/core/Card'; -import CardContent from '@material-ui/core/CardContent'; -import CardHeader from '@material-ui/core/CardHeader'; -import Grid from '@material-ui/core/Grid'; -import { makeStyles } from '@material-ui/core/styles'; -import { Table } from 'antd'; -import { ColumnsType } from 'antd/es/table'; -import * as React from 'react'; -import * as api from '../api'; -import { PieChart } from './charts/PieChart'; -import { SteppedAreaChart } from './charts/SteppedAreaChart'; -import { DataLoading } from './DataLoading'; -import { makeChartHeaderRenderer, useTooltipCommonStyles } from './helpers'; -import { TextListItem } from './TextListItem'; -import { stepTimeBreakDownTooltip } from './TooltipDescriptions'; -import { transformPerformanceIntoPie, transformPerformanceIntoTable } from './transform'; - -const topGraphHeight = 230; - -const useStyles = makeStyles((theme) => ({ - root: { - flexGrow: 1, - }, - pre: { - '& ul': { - margin: 0, - paddingLeft: theme.spacing(3), - ...theme.typography.body1, - }, - '& li': {}, - '& a': { - color: '#ffa726', - }, - '& a:active': { - color: '#ffa726', - }, - '& p': { - margin: 0, - ...theme.typography.subtitle1, - fontWeight: theme.typography.fontWeightBold, - }, - }, - topGraph: { - height: topGraphHeight + 40, - }, - table: { - height: '100%', - border: '1px solid #efefef', - '& .ant-table-tbody > tr': { - height: 20, - fontSize: '10pt', - '& > td': { - padding: '0 8px!important', - }, - }, - }, -})); - -export interface IProps { - run: string; - worker: string; - span: string; -} - -export const Overview: React.FC = (props) => { - const { run, worker, span } = props; - - const [steps, setSteps] = React.useState(undefined); - const [performances, setPerformances] = React.useState([]); - const [environments, setEnvironments] = React.useState([]); - const [gpuMetrics, setGpuMetrics] = React.useState(undefined); - const [recommendations, setRecommendations] = React.useState(''); - const [columns, setColumns] = React.useState>([]); - - const tableRows = React.useMemo(() => { - let dataInfo: api.Graph = transformPerformanceIntoTable(performances); - if (dataInfo.columns.length < 3) { - return []; - } - const stringCompare = (a: string, b: string): number => a.localeCompare(b); - const numberCompare = (a: number, b: number): number => a - b; - let column: any[] = dataInfo.columns.map((item) => { - return { - title: item.name, - key: item.name, - dataIndex: item.name, - sorter: - item.type === 'string' - ? (a: any, b: any): number => stringCompare(a[item.name], b[item.name]) - : (a: any, b: any): number => numberCompare(a[item.name], b[item.name]), - }; - }); - setColumns(column); - return dataInfo.rows.map((row, index) => { - if (row.length < 3) { - return null; - } - return { - key: index, - [dataInfo.columns[0].name]: row[0], - [dataInfo.columns[1].name]: row[1], - [dataInfo.columns[2].name]: row[2], - }; - }); - }, [performances]); - - const synthesizedPieGraph = React.useMemo(() => { - return transformPerformanceIntoPie(performances); - }, [performances]); - - React.useEffect(() => { - api.defaultApi.overviewGet(run, worker, span).then((resp) => { - setPerformances(resp.performance); - setEnvironments(resp.environments); - setSteps(resp.steps); - setRecommendations(resp.recommendations); - setGpuMetrics(resp.gpu_metrics); - }); - }, [run, worker, span]); - - const classes = useStyles(); - const tooltipCommonClasses = useTooltipCommonStyles(); - const chartHeaderRenderer = React.useMemo( - () => makeChartHeaderRenderer(tooltipCommonClasses, false), - [tooltipCommonClasses] - ); - - const stepTimeBreakDownTitle = React.useMemo( - () => chartHeaderRenderer('Step Time Breakdown', stepTimeBreakDownTooltip), - [tooltipCommonClasses, chartHeaderRenderer] - ); - - const cardSizes = gpuMetrics ? ([2, 3, 7] as const) : ([4, undefined, 8] as const); - - return ( -
- - - - {React.useMemo( - () => ( - - - - {environments.map((environment) => ( - - ))} - - - ), - [environments] - )} - - {gpuMetrics && ( - - - - - {gpuMetrics.data.map((metric) => ( - - ))} - - - - )} - - - - - - -
- - - - - - - - - - - - - - - - {(graph): JSX.Element => ( - - )} - - - - - - - - - - -
-
-
- - - - - -
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/TextListItem.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/TextListItem.tsx deleted file mode 100644 index 59eb79c2a..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/TextListItem.tsx +++ /dev/null @@ -1,82 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import Grid from '@material-ui/core/Grid'; -import { makeStyles } from '@material-ui/core/styles'; -import * as React from 'react'; - -export interface IStylesProps { - root?: string; - name?: string; -} - -export interface IProps { - name: string; - value?: string; - description?: string; - extra?: string; - classes?: IStylesProps; - dangerouslyAllowHtml?: boolean; -} - -const useStyles = makeStyles((theme) => ({ - label: { - ...theme.typography.subtitle2, - fontWeight: 'bolder', - }, - value: { - textAlign: 'right', - ...theme.typography.subtitle2, - fontWeight: 'bolder', - }, -})); - -export const TextListItem: React.FC = (props) => { - const classes = useStyles(); - - const getSizes = function (): readonly any[] { - if (props.value && props.extra) { - return [4, 4, 4] as const; - } - if (props.value) { - if (props.value.length > props.name.length) { - return [4, 8, undefined] as const; - } - return [8, 4, undefined] as const; - } - return [12, undefined, undefined] as const; - }; - - const sizes = getSizes(); - - const renderSpan = function (content: string, className?: string): React.JSX.Element { - if (props.dangerouslyAllowHtml) { - return ; - } - return {content}; - }; - - return ( - - - - - {renderSpan(props.name, props.classes?.name)} - - {props.description && {renderSpan(props.description)}} - - - {props.value && ( - - {renderSpan(props.value)} - - )} - {props.extra && ( - - {renderSpan(props.extra)} - - )} - - ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/TooltipDescriptions.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/TooltipDescriptions.ts deleted file mode 100644 index 6d3631fee..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/TooltipDescriptions.ts +++ /dev/null @@ -1,38 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -export const stepTimeBreakDownTooltip = `The time spent on each step is broken down into multiple categories as follows: -Kernel: Kernels execution time on GPU device; -Memcpy: GPU involved memory copy time (either D2D, D2H or H2D); -Memset: GPU involved memory set time; -Runtime: CUDA runtime execution time on host side; Such as cudaLaunchKernel, cudaMemcpyAsync, cudaStreamSynchronize, ... -DataLoader: The data loading time spent in PyTorch DataLoader object; -CPU Exec: Host compute time, including every PyTorch operator running time; -Other: The time not included in any of the above.`; - -export const deviceSelfTimeTooltip = `The accumulated time spent on GPU, not including this operator’s child operators.`; - -export const deviceSelfTimeTooltipAscend = `The accumulated time spent on NPU, not including this operator’s child operators.`; - -export const deviceTotalTimeTooltip = `The accumulated time spent on GPU, including this operator’s child operators.`; - -export const deviceTotalTimeTooltipAscend = `The accumulated time spent on NPU, including this operator’s child operators.`; - -export const hostSelfTimeTooltip = `The accumulated time spent on Host, not including this operator’s child operators.`; - -export const hostTotalTimeTooltip = `The accumulated time spent on Host, including this operator’s child operators.`; - -export const gpuKernelTotalTimeTooltip = `The accumulated time of all calls of this kernel.`; - -export const tensorCoresPieChartTooltip = `The accumulated time of all kernels using or not using Tensor Cores.`; - -export const tensorCoresPieChartTooltipAscend = `The accumulated time of all kernels group by Accelerator Core.`; - -export const distributedGpuInfoTableTooltip = `Information about GPU hardware used during the run.`; - -export const distributedOverlapGraphTooltip = `The time spent on computation vs communication.`; - -export const distributedWaittimeGraphTooltip = `The time spent waiting vs communicating between devices.`; - -export const distributedCommopsTableTooltip = `Statistics for operations managing communications between nodes.`; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/TraceView.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/TraceView.tsx deleted file mode 100644 index be4997949..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/TraceView.tsx +++ /dev/null @@ -1,79 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import ClickAwayListener from '@material-ui/core/ClickAwayListener'; -import { makeStyles } from '@material-ui/core/styles'; -import * as React from 'react'; -import * as api from '../api'; - -export interface IProps { - run: string; - worker: string; - span: string; - iframeRef: React.RefObject; -} - -const useStyles = makeStyles(() => ({ - root: { - flexGrow: 1, - }, - frame: { - width: '100%', - height: 'calc(100vh - 48px)', - border: 'none', - }, -})); - -export const TraceView: React.FC = (props) => { - const { run, worker, span, iframeRef } = props; - const classes = useStyles(); - - const [traceData, setTraceData] = React.useState | null>(null); - const [traceViewReady, setTraceViewReady] = React.useState(false); - - React.useEffect(() => { - setTraceData( - api.defaultApi.traceGet(run, worker, span).then((resp) => { - return JSON.stringify(resp); - }) - ); - }, [run, worker, span]); - - React.useEffect(() => { - function callback(event: MessageEvent): void { - const data = event.data || {}; - if (data.msg === 'ready') { - setTraceViewReady(true); - } - } - - window.addEventListener('message', callback); - return () => { - window.removeEventListener('message', callback); - }; - }, []); - - React.useEffect(() => { - if (traceData && traceViewReady) { - traceData.then((data) => { - iframeRef.current?.contentWindow?.postMessage({ msg: 'data', data }, window.origin); - }); - } - }, [traceData, traceViewReady]); - const setIframeActive = (): void => { - iframeRef.current?.focus(); - }; - return ( -
- {React.useMemo( - () => ( - - - - ), - [] - )} -
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/AntTableChart.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/AntTableChart.tsx deleted file mode 100644 index 83618064b..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/AntTableChart.tsx +++ /dev/null @@ -1,111 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import { makeStyles } from '@material-ui/core/styles'; -import { Table } from 'antd'; -import * as React from 'react'; -import { Graph } from '../../api'; - -interface IProps { - graph: Graph; - sortColumn?: string; - initialPageSize?: number; - onRowSelected?: (record?: object, rowIndex?: number) => void; -} - -const useStyles = makeStyles((theme) => ({ - tooltip: { - whiteSpace: 'pre-wrap', - }, - row: { - wordBreak: 'break-word', - }, -})); - -const getTableColumns = function (columns: any, sort: string | undefined, tooltipClass: string): any { - let i = 0; - return columns.map((col: any) => { - const key = `col${i++}`; - const stringCompare = (a: any, b: any): number => a[key].localeCompare(b[key]); - const numberCompare = (a: any, b: any): number => (a[key] || 0) - (b[key] || 0); - return { - dataIndex: key, - key: key, - title: col.name, - sorter: col.type === 'string' ? stringCompare : numberCompare, - defaultSortOrder: sort === col.name ? ('descend' as const) : undefined, - showSorterTooltip: col.tooltip ? { title: col.tooltip, overlayClassName: tooltipClass } : true, - }; - }); -}; - -const getTableRows = function (rows: any): any { - return rows.map((row: any) => { - let i = 0; - const res: any = {}; - row.forEach((entry: any) => { - res[`col${i++}`] = entry; - }); - return res; - }); -}; - -export const AntTableChart: React.FC = (props) => { - const { graph, sortColumn, initialPageSize, onRowSelected } = props; - const classes = useStyles(props); - - const rows = React.useMemo(() => getTableRows(graph.rows), [graph.rows]); - - const columns = React.useMemo( - () => getTableColumns(graph.columns, sortColumn, classes.tooltip), - [graph.columns, sortColumn, classes.tooltip] - ); - - // key is used to reset the Table state (page and sort) if the columns change - const key: string = React.useMemo(() => `${Math.random()}`, [graph.columns]); - - const [pageSize, setPageSize] = React.useState(initialPageSize ?? 30); - const onShowSizeChange = (current: number, size: number): void => { - setPageSize(size); - }; - - const onRow = ( - record: object, - rowIndex?: number - ): { - onMouseEnter: (event: any) => void; - onMouseLeave: (event: any) => void; - } => { - return { - onMouseEnter: (event: any): void => { - if (onRowSelected) { - onRowSelected(record, rowIndex); - } - }, - onMouseLeave: (event: any): void => { - if (onRowSelected) { - onRowSelected(undefined, undefined); - } - }, - }; - }; - - return ( -
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/AreaChart.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/AreaChart.tsx deleted file mode 100644 index cda12860c..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/AreaChart.tsx +++ /dev/null @@ -1,72 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import { makeStyles } from '@material-ui/core/styles'; -import * as React from 'react'; -import { Graph } from '../../api'; -import { useResizeEventDependency } from '../../utils/resize'; - -interface IProps { - graph: Graph; - height?: number; - hAxisTitle?: string; -} - -const useStyles = makeStyles(() => ({ - root: { - height: (props: Pick): number | undefined => props.height, - }, -})); - -export const AreaChart: React.FC = (props) => { - const { graph, height = 400, hAxisTitle } = props; - const classes = useStyles({ height }); - const graphRef = React.useRef(null); - const [resizeEventDependency] = useResizeEventDependency(); - - React.useLayoutEffect(() => { - const element = graphRef.current; - if (!element) { - return undefined; - } - - const data = new google.visualization.DataTable(); - data.addColumn('string', 'step'); - graph.columns.forEach((column) => { - data.addColumn({ - type: column.type, - label: column.name, - role: column.role, - p: column.p, - }); - }); - data.addRows(graph.rows.map((x, i) => [(i + 1).toString(), ...x])); - - const options = { - title: graph.title, - isStacked: true, - height, - legend: { position: 'bottom' }, - tooltip: { isHtml: true }, - chartArea: { left: '15%', width: '80%', top: '10%' }, - hAxis: { - title: hAxisTitle, - }, - }; - - const chart = new google.visualization.AreaChart(element); - - chart.draw(data, options); - - return () => { - chart.clearChart(); - }; - }, [graph, height, resizeEventDependency]); - - return ( -
-
-
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/ColumnChart.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/ColumnChart.tsx deleted file mode 100644 index ae51dc1a3..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/ColumnChart.tsx +++ /dev/null @@ -1,118 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Modifications: Offer offline supporting. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import { useResizeEventDependency } from '../../utils/resize'; -import * as echarts from 'echarts'; - -interface IProps { - title?: string; - units?: string; - colors?: Array; - chartData: ColumnChartData; -} - -export interface ColumnChartData { - legends: Array; - barLabels: Array; - barHeights: Array>; -} - -export const ColumnChart: React.FC = (props) => { - const { title, units, colors, chartData } = props; - const { legends, barLabels, barHeights } = chartData; - const graphRef = React.useRef(null); - const [resizeEventDependency] = useResizeEventDependency(); - - const getAngleByDataLength = (data: number): number => { - if (data < 10) { - return 0; - } else { - // 数量越大越趋近于旋转90度 - return 90 * (1 - (10 / data)); - } - }; - - React.useLayoutEffect(() => { - const element = graphRef.current; - if (!element) { - return undefined; - } - - const chart = echarts.init(element); - const dataSource: Array> = []; - dataSource.push(['worker', ...legends]); - barHeights.forEach((item, index) => { - if (barLabels[index] !== undefined) { - dataSource.push([barLabels[index], ...item]); - } - }); - const options: echarts.EChartsOption = { - title: { - text: title, - }, - legend: { - bottom: 0, - }, - xAxis: { - type: 'category', - axisLabel: { - interval: 0, - rotate: getAngleByDataLength(barLabels.length), - formatter: (name: string) => { - const index = name.indexOf('@'); - const processedName = index > -1 ? name.slice(index + 1) : name; // 使用新变量处理 - return processedName.length > 16 ? `${processedName.slice(0, 14)}...` : processedName; - }, - }, - }, - yAxis: { - type: 'value', - name: units, - nameTextStyle: { - fontSize: 16, - }, - }, - tooltip: { - trigger: 'item', - }, - dataset: { - source: dataSource, - }, - series: Array(legends.length).fill({ - type: 'bar', - stack: 'samesign', - }), - }; - if (colors) { - options.color = colors.slice(0, barLabels.length); - } - - if (options) { - chart.setOption(options, true); - } - return () => { - chart.dispose(); - }; - }, [title, chartData, resizeEventDependency]); - - return
; -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/NewLineChart.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/NewLineChart.tsx deleted file mode 100644 index a6e222a6c..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/NewLineChart.tsx +++ /dev/null @@ -1,386 +0,0 @@ -/*-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import { Graph, GraphAscend } from '../../api'; -import { useResizeEventDependency } from '../../utils/resize'; -import { binarySearch } from '../../utils/binarysearch'; -import * as echarts from 'echarts'; - -interface IProps { - graph: Graph | GraphAscend; - height?: number; - deviceTarget: string; - tag: string; - hAxisTitle?: string; - vAxisTitle?: string; - onSelectionChanged?: (start: number, end: number) => void; - record?: any; -} - -export const LineChart: React.FC = (props) => { - const { graph, height = 400, deviceTarget, tag, hAxisTitle, vAxisTitle, onSelectionChanged, record } = props; - const graphRef = React.useRef(null); - const [resizeEventDependency] = useResizeEventDependency(); - const [chartObj, setChartObj] = React.useState(); - const selectedPoints = React.useRef>([]); - - React.useLayoutEffect(() => { - const element = graphRef.current; - if (!element) { - return undefined; - } - element.oncontextmenu = (): boolean => { - return false; - }; - - let myChart = echarts.init(element); - - let option: echarts.EChartsOption = { - title: { - text: graph.title, - textStyle: { - fontSize: 16, - }, - }, - tooltip: { trigger: 'axis' }, - legend: { - type: 'scroll', - bottom: 0, - }, - xAxis: { - type: 'category', - boundaryGap: false, - name: hAxisTitle, - }, - yAxis: { - type: 'value', - name: vAxisTitle, - scale: true, - }, - toolbox: { - feature: { - dataZoom: { - yAxisIndex: 'none', - }, - restore: {}, - }, - }, - }; - - if (deviceTarget === 'Ascend') { - if (tag === 'Component') { - const mixedTooltip: echarts.TooltipComponentOption = { - trigger: 'axis', - formatter: function (params: any) { - let res = `${params[0].name}
`; - for (const item of params) { - if (typeof item.value[item.encode.y[0]] === 'number') { - res += ` - - ${item.seriesName}: ${item.value[item.encode.y[0]]}
`; - } - } - return res; - }, - }; - if (graph.columns.length <= 4) { - let finalRows = graph.rows.PTA ?? graph.rows.GE; - if (graph.columns.length === 4) { - const mergedAPPRows = graph.rows.APP.map((item: Array) => { - return [item[0], null, null, item[1]]; - }); - finalRows = finalRows.concat(mergedAPPRows).sort((a: any, b: any) => { - return a[0] - b[0]; - }); - } - option = { - ...option, - tooltip: mixedTooltip, - dataset: { - source: [graph.columns.map((column) => column.name), ...finalRows], - }, - series: Array(graph.columns.length - 1).fill({ - type: 'line', - select: { - itemStyle: { - borderWidth: 5, - shadowBlur: 5, - }, - }, - emphasis: { - itemStyle: { - borderWidth: 5, - shadowBlur: 5, - }, - }, - selectedMode: 'single', - }), - }; - } else if (graph.columns.length <= 6) { - const datasetTitle = graph.columns.map((item) => item.name); - let mergedGERows = graph.rows.GE.map((item: Array) => { - return [item[0], null, null, item[1], item[2]]; - }); - if (graph.columns.length === 6) { - const mergedAPPRows = graph.rows.APP.map((item: Array) => { - return [item[0], null, null, null, null, item[2]]; - }); - mergedGERows = mergedGERows.concat(mergedAPPRows); - } - const finalRows = graph.rows.PTA.concat(mergedGERows).sort((a: any, b: any) => { - return a[0] - b[0]; - }); - option = { - ...option, - tooltip: mixedTooltip, - dataset: { - source: [datasetTitle, ...finalRows], - }, - series: Array(graph.columns.length - 1).fill({ - type: 'line', - connectNulls: true, - select: { - itemStyle: { - borderWidth: 5, - shadowBlur: 5, - }, - }, - emphasis: { - itemStyle: { - borderWidth: 5, - shadowBlur: 5, - }, - }, - selectedMode: 'single', - datasetIndex: 0, - }), - }; - } - } else { - if (graph.columns.length === 3) { - const datasetTitle1: Array = []; - const datasetTitle2: Array = []; - graph.columns.forEach((column, index) => { - if (index === 0 || index < 2) { - datasetTitle1.push(column.name); - } - if (index === 0 || index >= 2) { - datasetTitle2.push(column.name); - } - }); - option = { - ...option, - dataset: [ - { - source: [datasetTitle1, ...graph.rows.Allocated], - }, - { - source: [datasetTitle2, ...graph.rows.Reserved], - }, - ], - series: [ - { - type: 'line', - name: 'Allocated', - emphasis: { - label: { - show: true, - }, - itemStyle: { - borderWidth: 5, - shadowBlur: 5, - }, - }, - select: { - itemStyle: { - borderWidth: 5, - shadowBlur: 5, - }, - }, - datasetIndex: 0, - }, - { - type: 'line', - name: 'Reserved', - select: { - itemStyle: { - borderWidth: 5, - shadowBlur: 5, - }, - }, - emphasis: { - itemStyle: { - borderWidth: 5, - shadowBlur: 5, - }, - }, - selectedMode: 'single', - datasetIndex: 1, - }, - ], - }; - } - } - } else { - option = { - ...option, - dataset: { - source: [graph.columns.map((column) => column.name), ...graph.rows], - }, - series: [ - { - type: 'line', - name: 'Allocated', - select: { - itemStyle: { - borderWidth: 5, - shadowBlur: 5, - }, - }, - emphasis: { - itemStyle: { - borderWidth: 5, - shadowBlur: 5, - }, - }, - selectedMode: 'single', - }, - { - type: 'line', - name: 'Reserved', - select: { - itemStyle: { - borderWidth: 5, - shadowBlur: 5, - }, - }, - emphasis: { - itemStyle: { - borderWidth: 5, - shadowBlur: 5, - }, - }, - selectedMode: 'single', - }, - ], - }; - } - - if (option) { - myChart.setOption(option, true); - } - myChart.dispatchAction({ - type: 'takeGlobalCursor', - key: 'dataZoomSelect', - dataZoomSelectActive: true, - }); - - myChart.on('dataZoom', (param: any) => { - if (onSelectionChanged) { - onSelectionChanged(param.batch[0].startValue, param.batch[0].endValue); - } - }); - - myChart.on('restore', () => { - if (onSelectionChanged) { - // Set startId greater than endId to query all memory events. - onSelectionChanged(0, -1); - } - }); - - myChart.on('click', (param) => { - myChart.dispatchAction({ - type: 'unselect', - seriesId: param.seriesId, - dataIndex: selectedPoints.current, - }); - myChart.dispatchAction({ - type: 'select', - seriesId: param.seriesId, - dataIndex: param.dataIndex, - }); - - selectedPoints.current = [param.dataIndex]; - }); - - myChart.getZr().on('contextmenu', () => { - myChart.dispatchAction({ - type: 'restore', - }); - myChart.dispatchAction({ - type: 'takeGlobalCursor', - key: 'dataZoomSelect', - dataZoomSelectActive: true, - }); - }); - - setChartObj(myChart); - return () => { - myChart.dispose(); - }; - }, [graph, height, resizeEventDependency]); - - React.useEffect(() => { - const compareFn = (key: number, mid: Array): number => key - mid[0]; - if (chartObj && tag === 'Operator') { - if (record) { - let startId = -1; - let endId = -1; - if (deviceTarget === 'Ascend') { - startId = binarySearch(graph.rows.Allocated, record.col2, compareFn); - endId = binarySearch(graph.rows.Allocated, record.col3, compareFn); - } else { - startId = binarySearch(graph.rows, record.col2, compareFn); - endId = binarySearch(graph.rows, record.col3, compareFn); - } - let selection = []; - if (startId >= 0) { - selection.push(startId); - } - if (endId >= 0) { - selection.push(endId); - } - chartObj.dispatchAction({ - type: 'downplay', - seriesName: 'Allocated', - dataIndex: selectedPoints.current, - }); - chartObj.dispatchAction({ - type: 'highlight', - seriesName: 'Allocated', - dataIndex: selection, - }); - selectedPoints.current = selection; - } else { - chartObj.dispatchAction({ - type: 'downplay', - seriesName: 'Allocated', - dataIndex: selectedPoints.current, - }); - selectedPoints.current = []; - } - } - }, [graph, record, chartObj]); - - return
; -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/PieChart.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/PieChart.tsx deleted file mode 100644 index 49c59ff02..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/PieChart.tsx +++ /dev/null @@ -1,173 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Modifications: Offer offline supporting. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import { Graph } from '../../api'; -import { value } from '../../utils'; -import { useResizeEventDependency } from '../../utils/resize'; -import * as echarts from 'echarts'; - -interface IProps { - graph: Graph; - height?: number; - top?: number; - noLegend?: boolean; - title?: string; - colors?: Array; - tooltipMode?: string; -} - -interface IAreaPosition { - left: string; - width: string; - top?: string; - height?: string; -} - -const noLegendArea: IAreaPosition = { - left: '5%', - width: '90%', - top: '5%', - height: '90%', -}; -const normalArea: IAreaPosition = { left: '5%', width: '95%' }; -const noTitleArea: IAreaPosition = { - left: '5%', - width: '95%', - top: '10%', - height: '80%', -}; - -export const PieChart: React.FC = (props) => { - const { graph, height = 300, top, noLegend, title, colors, tooltipMode = 'both' } = props; - const graphRef = React.useRef(null); - - const [resizeEventDependency] = useResizeEventDependency(); - - React.useLayoutEffect(() => { - const element = graphRef.current; - if (!element) { - return undefined; - } - - const chart = echarts.init(element); - - let totalValue = 0; - const rowsWithUniqueName: Array<{ name: string; value: number }> = - top === undefined - ? graph.rows.map((item, index) => { - totalValue += item[1] as number; - return { name: `${index}_${item[0]}`, value: item[1] as number }; - }) - : graph.rows - .sort((a, b) => (value(b[1]) as number) - (value(a[1]) as number)) - .slice(0, top) - .map((item, index) => { - totalValue += item[1] as number; - return { name: `${index}_${item[0]}`, value: item[1] as number }; - }); - - const option: echarts.EChartsOption = { - height, - width: '100%', - title: { - text: title, - }, - tooltip: { - trigger: 'item', - formatter: (data) => { - const typedData = data as echarts.DefaultLabelFormatterCallbackParams; - const index = typedData.name.indexOf('_'); - const safeName = typedData.name.replace(//g, '>'); - return `${index > -1 ? safeName.slice(index + 1) : safeName}
${ - tooltipMode === 'both' ? typedData.value : '' - }(${typedData.percent}%)`; - }, - confine: true, - extraCssText: `max-width: 300px; - word-wrap:break-word; - white-space:pre-wrap; - padding-right: 10px`, - }, - chartArea: ((): IAreaPosition => { - if (noLegend) { - return noLegendArea; - } - if (!title) { - return noTitleArea; - } else { - return normalArea; - } - })(), - legend: { - type: noLegend ? 'plain' : 'scroll', - orient: 'vertical', - left: 'right', - z: 10, - // Display at most 36 characters. - formatter: (name) => { - // Show legends for datas with the same name. - const index = name.indexOf('_'); - const processedName = index > -1 ? name.slice(index + 1) : name; // 使用新变量处理 - return processedName.length > 36 ? `${processedName.slice(0, 34)}...` : processedName; - }, - tooltip: { - show: true, - triggerOn: 'mousemove', - formatter: (data) => { - const currentItem = rowsWithUniqueName.find((item) => item.name === data.name); - const index = data.name.indexOf('_'); - const percent = (((currentItem?.value || 0) * 100) / totalValue).toFixed(2); - const safeName = data.name.replace(//g, '>'); - return `${index > -1 ? safeName.slice(index + 1) : safeName}
${ - tooltipMode === 'both' ? currentItem?.value || 0 : '' - }(${percent}%)`; - }, - }, - }, - sliceVisibilityThreshold: 0, - colors, - series: [ - { - type: 'pie', - radius: ['32%', '80%'], - center: ['32%', '50%'], - label: { - position: 'inside', - formatter: `{d}%`, - color: '#ffffff', - }, - data: rowsWithUniqueName, - }, - ], - }; - - if (option) { - chart.setOption(option, true); - } - - return () => { - chart.dispose(); - }; - }, [graph, height, top, resizeEventDependency]); - - return
; -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/SteppedAreaChart.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/SteppedAreaChart.tsx deleted file mode 100644 index 3e3b01ccb..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/SteppedAreaChart.tsx +++ /dev/null @@ -1,106 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Modifications: Offer offline supporting. - *--------------------------------------------------------------------------------------------*/ - -import { makeStyles } from '@material-ui/core/styles'; -import * as React from 'react'; -import { StepedGraph } from '../../api'; -import { useResizeEventDependency } from '../../utils/resize'; -import * as echarts from 'echarts'; - -interface IProps { - graph: StepedGraph; - height?: number; - hAxisTitle?: string; - vAxisTitle?: string; -} - -const useStyles = makeStyles(() => ({ - root: { - height: (props: Pick): number | undefined => props.height, - }, -})); - -export const SteppedAreaChart: React.FC = (props) => { - const { graph, height = 400, hAxisTitle, vAxisTitle } = props; - const classes = useStyles({ height }); - const graphRef = React.useRef(null); - const [resizeEventDependency] = useResizeEventDependency(); - - React.useLayoutEffect(() => { - const element = graphRef.current; - if (!element) { - return undefined; - } - - const chart = echarts.init(element); - const dataSource: Array> = []; - dataSource.push(graph.columns); - graph.rows.forEach((row) => { - dataSource.push(row.map((item) => item.value)); - }); - const options: echarts.EChartsOption = { - title: { - text: graph.title, - }, - legend: { - bottom: 0, - }, - xAxis: { - type: 'category', - name: hAxisTitle, - axisLabel: { - interval: 0, - }, - }, - yAxis: { - type: 'value', - name: vAxisTitle, - }, - tooltip: { - trigger: 'item', - formatter: (params: any) => { - return graph.rows[params.dataIndex][params.seriesIndex + 1]?.tooltip || ''; - }, - }, - dataset: { - source: dataSource, - }, - series: Array(graph.columns.length - 1).fill({ - type: 'bar', - stack: 'samesign', - }), - }; - - if (options) { - chart.setOption(options, true); - } - - return () => { - chart.dispose(); - }; - }, [graph, height, resizeEventDependency]); - - return ( -
-
-
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/TableChart.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/TableChart.tsx deleted file mode 100644 index 444b41b19..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/charts/TableChart.tsx +++ /dev/null @@ -1,85 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import { makeStyles } from '@material-ui/core/styles'; -import * as React from 'react'; -import { Graph } from '../../api'; -import { useResizeEventDependency } from '../../utils/resize'; - -interface IProps { - graph: Graph; - sortColumn?: number; - height?: number; - allowHtml?: boolean; - setCellProperty?: (row: number, column: number, cb: (key: string, value: any) => void) => void; -} - -const useStyles = makeStyles(() => ({ - root: { - height: (props: IProps): number | undefined => props.height, - }, -})); - -export const TableChart: React.FC = (props) => { - const { graph, sortColumn, setCellProperty, allowHtml } = props; - const classes = useStyles(props); - const graphRef = React.useRef(null); - const [resizeEventDependency] = useResizeEventDependency(); - - React.useLayoutEffect(() => { - const element = graphRef.current; - if (!element || !element.parentElement) { - return; - } - - const data = new google.visualization.DataTable(); - graph.columns.forEach((column) => { - data.addColumn({ - type: column.type, - label: column.name, - role: column.role, - p: column.p, - }); - }); - data.addRows(graph.rows); - - if (setCellProperty) { - for (let row = 0; row < graph.rows.length; ++row) { - for (let column = 0; column < graph.columns.length; ++column) { - setCellProperty(row, column, (key: string, value: any) => { - data.setProperty(row, column, key, value); - }); - } - } - } - - const options = { - width: '100%', - height: '100%', - page: 'enable', - allowHtml, - pageSize: 30, - tooltip: { isHtml: true }, - sortColumn: sortColumn, - sortAscending: false, - }; - - const chart = new google.visualization.Table(element); - - /* `chart.draw()` removes the contents of `element` and rebuilds it. This can cause a jump in the scroll position - * if the height/width change to 0. Since we can't change the code of Google Charts, we temporarily lock the dims - * of the parent container. */ - if (element.offsetHeight > 0) { - element.parentElement.style.height = `${element.offsetHeight}px`; - } - chart.draw(data, options); - element.parentElement.style.height = ''; - }, [graph, resizeEventDependency]); - - return ( -
-
-
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/helpers.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/helpers.tsx deleted file mode 100644 index bfbb346e4..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/helpers.tsx +++ /dev/null @@ -1,41 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import { makeStyles } from '@material-ui/core/styles'; -import Tooltip from '@material-ui/core/Tooltip'; -import HelpOutline from '@material-ui/icons/HelpOutline'; -import clsx from 'clsx'; -import * as React from 'react'; - -export const useTooltipCommonStyles = makeStyles((theme) => ({ - tooltip: { - maxWidth: '600px', - whiteSpace: 'pre-wrap', - fontSize: '14px', - }, - cardTitle: { - display: 'flex', - alignItems: 'center', - }, - titleText: { - marginRight: theme.spacing(0.5), - }, - smallTitleText: { - fontSize: '.8rem', - fontWeight: 'bold', - }, -})); - -export const makeChartHeaderRenderer = - (classes: ReturnType, smallTitleText = true) => - (title: string, tooltip: string): JSX.Element => { - return ( - - {title} - - - - - ); - }; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/CallFrameList.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/CallFrameList.tsx deleted file mode 100644 index 0334d29e5..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/CallFrameList.tsx +++ /dev/null @@ -1,35 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import { CallStackFrame } from './transform'; -import { List } from 'antd'; -import { NavToCodeButton } from './NavToCodeButton'; -import { makeStyles } from '@material-ui/core/styles'; - -interface IProps { - callFrames: CallStackFrame[]; -} - -const useStyles = makeStyles(() => ({ - item: { - paddingTop: '1px !important', - paddingBottom: '1px !important', - }, -})); - -export const CallFrameList = (props: IProps): React.JSX.Element => { - const classes = useStyles(); - - const renderItem = React.useCallback( - (item: CallStackFrame) => ( - - - - ), - [classes.item] - ); - - return ; -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/CallStackTable.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/CallStackTable.tsx deleted file mode 100644 index c3176428d..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/CallStackTable.tsx +++ /dev/null @@ -1,103 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Modifications: Add visualization of PyTorch Ascend profiling. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import { makeStyles } from '@material-ui/core/styles'; -import { CallStackTableData, OperationTableDataInner } from '../../api'; -import { Table, TableProps } from 'antd'; - -import * as api from '../../api'; -import { transformTableData, TransformedCallStackDataInner } from './transform'; -import { attachId, getCommonOperationColumns } from './common'; -import { OperationGroupBy } from '../../constants/groupBy'; -import { makeExpandIcon } from './ExpandIcon'; -import { CallFrameList } from './CallFrameList'; - -export interface IProps { - data: OperationTableDataInner; - run: string; - worker: string; - span: string; - groupBy: OperationGroupBy; - deviceTarget: string; -} - -const useStyles = makeStyles((theme) => ({ - tooltip: { - whiteSpace: 'pre-wrap', - }, -})); - -const expandIcon = makeExpandIcon( - 'View call frames', - (record) => !record.callStackFrames.length -); - -const rowExpandable = (record: TransformedCallStackDataInner): boolean => !!record.callStackFrames.length; -const expandedRowRender = (record: TransformedCallStackDataInner): React.JSX.Element => ( - -); - -export const CallStackTable = (props: IProps): React.JSX.Element => { - const { data, run, worker, span, groupBy, deviceTarget } = props; - const { name, input_shape } = data; - const classes = useStyles(props); - - const [stackData, setStackData] = React.useState(undefined); - const [tooltips, setTooltips] = React.useState(); - - React.useEffect(() => { - api.defaultApi.operationStackGet(run, worker, span, groupBy, name, input_shape).then((resp) => { - setTooltips(resp.metadata.tooltips); - setStackData(resp.data); - }); - }, [name, input_shape, run, worker, span, groupBy]); - - const transformedData = React.useMemo(() => stackData && transformTableData(attachId(stackData)), [stackData]); - - const columns = React.useMemo( - () => transformedData && getCommonOperationColumns(transformedData, deviceTarget, undefined, tooltips, classes), - [transformedData] - ); - - const expandIconColumnIndex = columns?.length; - - const expandable: TableProps['expandable'] = React.useMemo( - () => ({ - expandIconColumnIndex, - expandIcon, - expandedRowRender, - rowExpandable, - }), - [expandIconColumnIndex] - ); - - return ( -
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/ExpandIcon.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/ExpandIcon.tsx deleted file mode 100644 index 422bb7816..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/ExpandIcon.tsx +++ /dev/null @@ -1,35 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import { Button, TableProps } from 'antd'; -import { OperationTableDataInner, CallStackTableDataInner } from '../../api'; -import { Arguments } from '../../utils/type'; - -type Types = NonNullable['expandable']>['expandIcon']; -type BasePropType = Arguments>>[0]; -type PropType = BasePropType & { text: string; disabled?: boolean }; - -export function ExpandIcon( - props: PropType -): React.JSX.Element { - const onClick = (e: React.MouseEvent): void => { - props.onExpand(props.record, e); - }; - - return ( - - ); -} - -export function makeExpandIcon( - text: string, - disabled?: (v: T) => boolean -) { - return (props: BasePropType): React.JSX.Element => ( - - ); -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/MemoryStatsTable.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/MemoryStatsTable.tsx deleted file mode 100644 index c7e1809a3..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/MemoryStatsTable.tsx +++ /dev/null @@ -1,77 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import { Table } from 'antd'; -import { makeStyles } from '@material-ui/core'; - -export interface IProps { - data: any; - sort: string; -} - -const useStyles = makeStyles((theme) => ({ - tooltip: { - whiteSpace: 'pre-wrap', - }, -})); - -const getMemoryStatsTableColumns = function (columns: any, sort: string, tooltipClass: string): any { - let i = 0; - return columns.map((col: any) => { - const key = `col${i++}`; - const stringCompare = (a: any, b: any): number => a[key].localeCompare(b[key]); - const numberCompare = (a: any, b: any): number => (a[key] || 0) - (b[key] || 0); - return { - dataIndex: key, - key: key, - title: col.name, - sorter: col.type === 'string' ? stringCompare : numberCompare, - defaultSortOrder: sort === col.name ? ('descend' as const) : undefined, - showSorterTooltip: col.tooltip ? { title: col.tooltip, overlayClassName: tooltipClass } : true, - }; - }); -}; - -const getMemoryStatsTableRows = function (rows: any): any { - return rows.map((row: any) => { - let i = 0; - const res: any = {}; - row.forEach((entry: any) => { - res[`col${i++}`] = entry; - }); - return res; - }); -}; - -export const MemoryStatsTable = (props: IProps): React.JSX.Element => { - const { data, sort } = props; - const classes = useStyles(); - - const rows = React.useMemo(() => getMemoryStatsTableRows(data.rows), [data.rows]); - - const columns = React.useMemo( - () => getMemoryStatsTableColumns(data.columns, sort, classes.tooltip), - [data.columns, sort, classes.tooltip] - ); - - const [pageSize, setPageSize] = React.useState(30); - const onShowSizeChange = (current: number, size: number): void => { - setPageSize(size); - }; - - return ( -
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/NavToCodeButton.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/NavToCodeButton.tsx deleted file mode 100644 index 2c999aa12..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/NavToCodeButton.tsx +++ /dev/null @@ -1,29 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import { CallStackFrame } from './transform'; -import { Button } from 'antd'; -import { navToCode } from '../../utils/vscode'; - -interface IProps { - frame: CallStackFrame; -} - -export const NavToCodeButton = (props: IProps): React.JSX.Element => { - const { raw, line, file } = props.frame; - const couldNavToFile = line && file; - - const onClick = (): void => { - if (line && file) { - navToCode(file, line - 1); - } - }; - - return ( - - ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/OperationTable.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/OperationTable.tsx deleted file mode 100644 index 1ce77ee81..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/OperationTable.tsx +++ /dev/null @@ -1,105 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Modifications: Add visualization of PyTorch Ascend profiling. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import { makeStyles } from '@material-ui/core/styles'; -import { OperationTableData, OperationTableDataInner, TableMetadata } from '../../api'; -import { OperationGroupBy } from '../../constants/groupBy'; -import { attachId, getCommonOperationColumns } from './common'; -import { Table, TableProps } from 'antd'; -import { makeExpandIcon } from './ExpandIcon'; -import { CallStackTable } from './CallStackTable'; - -export interface IProps { - data: OperationTableData; - run: string; - worker: string; - span: string; - groupBy: OperationGroupBy; - sortColumn: string; - tooltips?: any; - deviceTarget: string; -} - -const useStyles = makeStyles((theme) => ({ - tooltip: { - whiteSpace: 'pre-wrap', - }, -})); - -const rowExpandable = (record: OperationTableDataInner): boolean => record.has_call_stack; -const expandIcon = makeExpandIcon('View CallStack', (record) => !record.has_call_stack); -export const OperationTable = (props: IProps): React.JSX.Element => { - const { data, run, worker, span, groupBy, sortColumn, tooltips, deviceTarget } = props; - const classes = useStyles(props); - - const rows = React.useMemo(() => attachId(data), [data]); - - const columns = React.useMemo( - () => getCommonOperationColumns(rows, deviceTarget, sortColumn, tooltips, classes), - [rows] - ); - - const [pageSize, setPageSize] = React.useState(30); - const onShowSizeChange = (current: number, size: number): void => { - setPageSize(size); - }; - - const expandIconColumnIndex = columns.length; - const expandedRowRender = React.useCallback( - (record: OperationTableDataInner) => ( - - ), - [run, worker, span, groupBy] - ); - - const expandable: TableProps['expandable'] = React.useMemo( - () => ({ - expandIconColumnIndex, - expandIcon, - expandedRowRender, - rowExpandable, - }), - [expandIconColumnIndex, expandedRowRender] - ); - - return ( -
- ); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/common.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/common.tsx deleted file mode 100644 index a84a1a3bb..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/common.tsx +++ /dev/null @@ -1,150 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *-------------------------------------------------------------------------------------------- - * Copyright (c) 2023, Huawei Technologies. - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Modifications: Add visualization of PyTorch Ascend profiling. - *--------------------------------------------------------------------------------------------*/ - -import { firstOrUndefined, isDef } from '../../utils/def'; -import { CallStackTableDataInner, OperationTableDataInner } from '../../api'; -import type { ColumnsType } from 'antd/es/table'; -import { ClassNameMap } from '@material-ui/styles'; - -export function getCommonOperationColumns( - data?: T[], - deviceTarget?: string, - defaultSort?: string, - tooltips?: any, - classes?: ClassNameMap<'tooltip'> -): ColumnsType { - const firstData = firstOrUndefined(data); - - const hasInputShape = !firstData || isDef(firstData.input_shape); - const hasDeviceSelfDuration = !firstData || isDef(firstData.device_self_duration); - const hasDeviceTotalDuration = !firstData || isDef(firstData.device_total_duration); - const hasTcEligible = !firstData || isDef(firstData.tc_eligible); - const hasTcSelfRatio = !firstData || isDef(firstData.tc_self_ratio); - const hasTcTotalRatio = !firstData || isDef(firstData.tc_total_ratio); - - const nameCompare = (a: T, b: T): number => a.name.localeCompare(b.name); - const callsCompare = (a: T, b: T): number => a.calls - b.calls; - const deviceSelfDurationCompare = (a: T, b: T): number => - (a.device_self_duration || 0) - (b.device_self_duration || 0); - const deviceTotalDurationCompare = (a: T, b: T): number => - (a.device_total_duration || 0) - (b.device_total_duration || 0); - const hostSelfDurationCompare = (a: T, b: T): number => (a.host_self_duration || 0) - (b.host_self_duration || 0); - const hostTotalDurationCompare = (a: T, b: T): number => (a.host_total_duration || 0) - (b.host_total_duration || 0); - const tcEligibleCompare = (a: T, b: T): number => (a.tc_eligible ?? '').localeCompare(b.tc_eligible ?? ''); - const tcSelfRatioCompare = (a: T, b: T): number => (a.tc_self_ratio || 0) - (b.tc_self_ratio || 0); - const tcTotalRatioCompare = (a: T, b: T): number => (a.tc_total_ratio || 0) - (b.tc_total_ratio || 0); - - const columns: ColumnsType = [ - { - dataIndex: 'name', - key: 'name', - title: 'Name', - sorter: nameCompare, - }, - hasInputShape - ? { - dataIndex: 'input_shape', - key: 'input_shape', - title: 'Input Shape', - } - : undefined, - { - dataIndex: 'calls', - sorter: callsCompare, - key: 'calls', - title: 'Calls', - }, - hasDeviceSelfDuration - ? { - dataIndex: 'device_self_duration', - key: 'device_self_duration', - title: 'Device Self Duration (us)', - sorter: deviceSelfDurationCompare, - // Use device_self_duration as default sort if defaultSort is unspecified - defaultSortOrder: defaultSort ? undefined : ('descend' as const), - } - : undefined, - hasDeviceTotalDuration - ? { - dataIndex: 'device_total_duration', - key: 'device_total_duration', - title: 'Device Total Duration (us)', - sorter: deviceTotalDurationCompare, - } - : undefined, - { - dataIndex: 'host_self_duration', - key: 'host_self_duration', - title: 'Host Self Duration (us)', - sorter: hostSelfDurationCompare, - }, - { - dataIndex: 'host_total_duration', - key: 'host_total_duration', - title: 'Host Total Duration (us)', - sorter: hostTotalDurationCompare, - }, - hasTcEligible - ? { - dataIndex: 'tc_eligible', - key: 'tc_eligible', - title: deviceTarget === 'Ascend' ? 'AI Cores Eligible' : 'Tensor Cores Eligible', - sorter: tcEligibleCompare, - } - : undefined, - hasTcSelfRatio - ? { - dataIndex: 'tc_self_ratio', - key: 'tc_self_ratio', - title: deviceTarget === 'Ascend' ? 'AI Cores Self(%)' : 'Tensor Cores Self(%)', - sorter: tcSelfRatioCompare, - } - : undefined, - hasTcTotalRatio - ? { - dataIndex: 'tc_total_ratio', - key: 'tc_total_ratio', - title: deviceTarget === 'Ascend' ? 'AI Cores Total(%)' : 'Tensor Cores Total(%)', - sorter: tcTotalRatioCompare, - } - : undefined, - ].filter(isDef); - columns.forEach((column) => { - if (column.key === defaultSort) { - column.defaultSortOrder = 'descend' as const; - } - if (tooltips[column.key as string]) { - column.showSorterTooltip = { - title: tooltips[column.key as string], - overlayClassName: classes?.tooltip, - }; - } - }); - return columns; -} - -let uid = 1; -export function attachId(data: T[]): T[] { - return data.map((d) => ({ - ...d, - key: uid++, - })); -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/transform.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/transform.ts deleted file mode 100644 index 5f59728fe..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/tables/transform.ts +++ /dev/null @@ -1,63 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import { CallStackTableData, CallStackTableDataInner } from '../../api'; - -export interface CallStackFrame { - file?: string; - line?: number; - raw: string; -} - -export interface TransformedCallStackDataInner extends CallStackTableDataInner { - callStackFrames: CallStackFrame[]; -} - -const lineRegex = /\([0-9]+\)$/; - -function parseCallStackLine(raw: string): CallStackFrame { - let rawResult = raw.trim(); - const results = rawResult.split(':'); - const location = results.slice(0, results.length - 1).join(':'); - - const result = lineRegex.exec(location); - if (!result) { - return { raw: rawResult }; - } - - const lineWithParens = result[0].trim(); - const file = rawResult.slice(0, result.index).trim(); - const line = Number( - lineWithParens.substr(1, lineWithParens.length - 2).trim() - ); - - return { - raw: rawResult, - file, - line, - }; -} - -function parseCallStack(callStack?: string): CallStackFrame[] { - const lines = (callStack ?? '') - .trim() - .split(';') - .map((x) => x.trim()); - return lines.map(parseCallStackLine); -} - -function transformCallStackData( - data: CallStackTableDataInner -): TransformedCallStackDataInner { - return { - ...data, - callStackFrames: parseCallStack(data.call_stack), - }; -} - -export function transformTableData( - data: CallStackTableData -): TransformedCallStackDataInner[] { - return data.map(transformCallStackData); -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/transform.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/components/transform.ts deleted file mode 100644 index 94ee9f384..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/components/transform.ts +++ /dev/null @@ -1,83 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import * as api from '../api'; -import { assertDef, isDef } from '../utils/def'; - -export function transformPerformanceIntoTable(performances: api.Performance[]): api.Graph { - const columns: api.GraphColumn[] = [ - { type: 'string', name: 'Category' }, - { type: 'number', name: 'Time Duration (us)' }, - { type: 'number', name: 'Percentage (%)' }, - ]; - - const rows: api.Graph['rows'] = []; - const queue = [...performances]; - - while (queue.length) { - const first = queue.shift(); - assertDef(first); - - const row: api.Graph['rows'][number] = []; - const { name, value, extra, children } = first; - assertDef(value); - assertDef(extra); - - row.push(name); - row.push(value); - row.push(extra); - - if (isDef(children) && children.length) { - queue.push(...children); - } - - rows.push(row); - } - - return { - columns, - rows, - }; -} - -export function transformPerformanceIntoPie(performances: api.Performance[]): { - columns: api.GraphColumn[]; - rows: Array>; -} { - const columns: api.GraphColumn[] = [ - { type: 'string', name: 'Name' }, - { type: 'number', name: 'Value' }, - ]; - - const rows: api.Graph['rows'] = []; - const queue: api.Performance[] = []; - performances.forEach((topLevel) => { - if (topLevel.children) { - queue.push(...topLevel.children); - } - }); - - while (queue.length) { - const first = queue.shift(); - assertDef(first); - - const row: api.Graph['rows'][number] = []; - const { name, value, children } = first; - assertDef(value); - - row.push(name); - row.push(Number.parseInt(value, 10)); - - if (isDef(children) && children.length) { - queue.push(...children); - } - - rows.push(row); - } - - return { - columns, - rows, - }; -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/constants/groupBy.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/constants/groupBy.ts deleted file mode 100644 index 88ea9e3f4..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/constants/groupBy.ts +++ /dev/null @@ -1,13 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -export enum OperationGroupBy { - OPERATION = 'Operation', - OPERATION_AND_INPUT_SHAPE = 'OperationAndInputShape', -} - -export enum KernelGroupBy { - KERNEL = 'Kernel', - KERNEL_NAME_AND_OP_NAME = 'KernelNameAndOpName', -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/gstatic.d.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/gstatic.d.ts deleted file mode 100644 index 521c5fbb8..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/gstatic.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -declare const google: any; -declare module 'react-flame-graph'; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/index.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/index.tsx deleted file mode 100644 index 851474766..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import { render } from 'react-dom'; -import { App } from './app'; -import 'antd/dist/antd.css'; - -render(, document.getElementById('app')); diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/setup.tsx b/plugins/tensorboard-plugins/tb_plugin/fe/src/setup.tsx deleted file mode 100644 index c811ae152..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/setup.tsx +++ /dev/null @@ -1,9 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -export async function setup(): Promise { - await google.charts.load('current', { - packages: ['corechart', 'table', 'timeline'], - }); -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/styles.css b/plugins/tensorboard-plugins/tb_plugin/fe/src/styles.css deleted file mode 100644 index f7705b54a..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/styles.css +++ /dev/null @@ -1,16 +0,0 @@ -#app { - height: 100%; -} -.goog-tooltip { - display: none !important; -} - -.visualization-tooltip { - padding: 4px 10px; - white-space: nowrap; -} - -div.google-visualization-tooltip { - pointer-events: none; - max-width: 90%; -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/binarysearch.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/binarysearch.ts deleted file mode 100644 index 41382dcdb..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/binarysearch.ts +++ /dev/null @@ -1,20 +0,0 @@ -export function binarySearch( - arr: Array, - key: any, - compareFn: (key: number, mid: Array) => number -): number { - let low = 0; - let high = arr.length - 1; - while (low <= high) { - let mid = Math.round((high + low) / 2); - let cmp = compareFn(key, arr[mid]); - if (cmp > 0) { - low = mid + 1; - } else if (cmp < 0) { - high = mid - 1; - } else { - return mid; - } - } - return -1; -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/debounce.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/debounce.ts deleted file mode 100644 index 82c7f04a9..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/debounce.ts +++ /dev/null @@ -1,21 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; - -export function useDebounce(value: T, delay: number): T { - const [debouncedValue, setDebouncedValue] = React.useState(value); - - React.useEffect(() => { - const handler = setTimeout(() => { - setDebouncedValue(value); - }, delay); - - return () => { - clearTimeout(handler); - }; - }, [value, delay]); - - return debouncedValue; -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/def.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/def.ts deleted file mode 100644 index df6bef8ea..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/def.ts +++ /dev/null @@ -1,20 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -export function isDef(v?: T | null): v is T { - return v !== null && v !== undefined; -} - -export function assertDef(v?: T | null): asserts v is T { - if (!isDef(v)) { - throw new Error('Must be defined'); - } -} - -export function firstOrUndefined(v?: T[]): T | undefined { - if (!v || !v.length) { - return undefined; - } - return v[0]; -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/hooks.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/hooks.ts deleted file mode 100644 index 473b393d9..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/hooks.ts +++ /dev/null @@ -1,27 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; - -const cbs: Array<() => void> = []; -export const useOnResize = (cb: () => void): void => { - React.useEffect(() => { - if (cbs.length === 0) { - window.addEventListener('resize', () => { - cbs.forEach((callback) => callback()); - }); - } - cbs.push(cb); - - return (): void => { - const idx = cbs.findIndex(cb); - if (idx > -1) { - cbs.splice(idx, 1); - } - if (cbs.length === 0) { - window.removeEventListener('reset', cb); - } - }; - }, [cb]); -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/index.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/index.ts deleted file mode 100644 index 5da446721..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import { ValueAndFormat } from '../api'; - -export function firstOrUndefined(v?: T[] | null): T | undefined { - if (!v || !v.length) { - return undefined; - } - return v[0]; -} - -export function sleep(delay: number): Promise { - return new Promise((resolve) => setTimeout(resolve, delay)); -} - -export function isValueAndFormat(v: any): v is ValueAndFormat { - return 'f' in v && 'v' in v; -} - -export function value(v: boolean | number | string | ValueAndFormat): boolean | number | string { - return typeof v === 'object' && isValueAndFormat(v) ? v.v : v; -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/resize.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/resize.ts deleted file mode 100644 index 766a10d54..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/resize.ts +++ /dev/null @@ -1,27 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import debounce from '@material-ui/core/utils/debounce'; - -export function useResizeEventDependency(): readonly [number] { - const [version, setVersion] = React.useState(0); - - const increaseVersion = React.useCallback( - debounce(() => { - setVersion((prev) => prev + 1); - }, 100), - [] - ); - - React.useEffect(() => { - window.addEventListener('resize', increaseVersion); - - return (): void => { - window.removeEventListener('resize', increaseVersion); - }; - }, []); - - return [version] as const; -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/search.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/search.ts deleted file mode 100644 index 8a2efc36d..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/search.ts +++ /dev/null @@ -1,68 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import * as React from 'react'; -import { value } from '.'; -import * as api from '../api'; -import { useDebounce } from './debounce'; - -export function useSearch( - searchName: string, - columnName: string, - table?: api.Graph -): [api.Graph | undefined] { - const searchNameDebounce = useDebounce(searchName.trim(), 500); - - const searchedTable: api.Graph | undefined = React.useMemo(() => { - if (!searchNameDebounce) { - return table; - } - - if (!table) { - return undefined; - } - - const columnNameToFind = columnName.toLowerCase(); - const nameColumnIdx = table.columns.findIndex( - (c) => c.name.toLowerCase() === columnNameToFind - ); - if (nameColumnIdx < 0) { - return table; - } - - return { - ...table, - rows: table.rows.filter((x) => { - const cell = value(x[nameColumnIdx]); - return typeof cell === 'string' && cell.includes(searchNameDebounce); - }), - }; - }, [table, searchNameDebounce]); - return [searchedTable]; -} - -export function useSearchDirectly( - searchName: string, - field: (v: T) => string, - table?: T[] -): [T[] | undefined] { - const searchNameDebounce = useDebounce(searchName.trim(), 500); - - const result = React.useMemo(() => { - if (!searchNameDebounce) { - return table; - } - - if (!table) { - return undefined; - } - - return table.filter((row) => { - return field(row) - .toLowerCase() - .includes(searchNameDebounce.toLowerCase()); - }); - }, [table, field, searchNameDebounce]); - return [result]; -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/top.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/top.ts deleted file mode 100644 index 4af19968d..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/top.ts +++ /dev/null @@ -1,54 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -import debounce from '@material-ui/core/utils/debounce'; -import * as React from 'react'; - -export enum UseTop { - NOT_USE = 'NotUse', - USE = 'Use', -} - -interface IOptions { - defaultTop?: number; - defaultUseTop?: UseTop; - noDebounce?: boolean; - wait?: number; -} - -export function useTopN( - options?: IOptions -): readonly [ - string, - number | undefined, - UseTop, - React.Dispatch>, - React.Dispatch> -] { - let realOptions = options ?? {}; - - const [topText, setTopText] = React.useState(String(realOptions.defaultTop ?? 15)); - const [actualTop, setActualTop] = React.useState(Number(topText)); - const [useTop, setUseTop] = React.useState(realOptions.defaultUseTop ?? UseTop.NOT_USE); - - const setActualDebounce = !realOptions.noDebounce - ? React.useCallback(debounce(setActualTop, realOptions.wait ?? 500), []) - : setActualTop; - React.useEffect(() => { - if (useTop !== UseTop.USE) { - setActualDebounce(undefined); - } else if (topIsValid(topText)) { - setActualDebounce(Number(topText)); - } else { - setActualDebounce(actualTop); - } - }, [topText, useTop]); - - return [topText, actualTop, useTop, setTopText, setUseTop] as const; -} - -export function topIsValid(topText: string): boolean { - const top = Number(topText); - return !Number.isNaN(top) && top > 0 && Number.isInteger(top); -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/type.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/type.ts deleted file mode 100644 index ccd45fd16..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/type.ts +++ /dev/null @@ -1,9 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -export type Arguments void> = T extends ( - ...args: infer A -) => void - ? A - : never; diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/vscode.ts b/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/vscode.ts deleted file mode 100644 index 2a763adca..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/src/utils/vscode.ts +++ /dev/null @@ -1,13 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------------------------------------------*/ - -export function navToCode(filename: string, line: number): void { - window.parent.parent.postMessage( - { - filename, - line, - }, - window.origin - ); -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/tsconfig.json b/plugins/tensorboard-plugins/tb_plugin/fe/tsconfig.json deleted file mode 100644 index 182aafbe1..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], - "strict": true, - "strictPropertyInitialization": false, - "module": "esnext", - "moduleResolution": "node", - "forceConsistentCasingInFileNames": true, - "rootDir": "src", - "outDir": "dist", - "jsx": "react", - } -} diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/update-static.js b/plugins/tensorboard-plugins/tb_plugin/fe/update-static.js deleted file mode 100644 index 67c9be6cc..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/update-static.js +++ /dev/null @@ -1,7 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -fs.copyFileSync( - path.resolve(__dirname, 'dist/index.html'), - path.resolve(__dirname, '../torch_tb_profiler/static/index.html') -); diff --git a/plugins/tensorboard-plugins/tb_plugin/fe/webpack.config.js b/plugins/tensorboard-plugins/tb_plugin/fe/webpack.config.js deleted file mode 100644 index a47f8b319..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/fe/webpack.config.js +++ /dev/null @@ -1,36 +0,0 @@ -const path = require('path'); -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const InlineChunkHtmlPlugin = require('inline-chunk-html-plugin'); - -const isDev = process.env.NODE_ENV !== 'production'; - -/** - * @type {import('webpack').Configuration & import('webpack-dev-server').Configuration} - */ -module.exports = { - mode: isDev ? 'development' : 'production', - entry: './src/index.tsx', - output: { - path: path.resolve(__dirname, 'dist'), - filename: 'index.js', - }, - resolve: { - // Add `.ts` and `.tsx` as a resolvable extension. - extensions: ['.ts', '.tsx', '.js'], - }, - module: { - rules: [ - { test: /\.tsx?$/i, use: 'ts-loader' }, - { test: /\.css$/i, use: ['style-loader', 'css-loader'] }, - ], - }, - plugins: [ - new HtmlWebpackPlugin({ - inject: true, - scriptLoading: 'blocking', - template: 'index.html', - }), - !isDev ? new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/.*/]) : undefined, - ].filter(Boolean), - devServer: {}, -}; diff --git a/plugins/tensorboard-plugins/tb_plugin/packaging/torch_tb_profiler/meta.yaml b/plugins/tensorboard-plugins/tb_plugin/packaging/torch_tb_profiler/meta.yaml deleted file mode 100644 index ab105fd04..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/packaging/torch_tb_profiler/meta.yaml +++ /dev/null @@ -1,39 +0,0 @@ -{% set data = load_setup_py_data(setup_file='../../setup.py', from_recipe_dir=True) %} - -package: - name: torch_tb_profiler - version: "{{ data.get('version') }}" - -source: - path: "{{ environ.get('SOURCE_ROOT_DIR', '../..') }}" - -requirements: - host: - - python - - setuptools - - pytorch - - run: - - python - - pandas - - tensorboard - -build: - noarch: python - script: python setup.py install --single-version-externally-managed --record=record.txt - -test: - imports: - - torch_tb_profiler - source_files: - - test - requires: - - tensorboard - - pandas - - -about: - home: https://github.com/pytorch/kineto/tree/main/tb_plugin - license: BSD - license_file: LICENSE - summary: 'Tensoboard Plugin that provides visualization of PyTorch profiling' diff --git a/plugins/tensorboard-plugins/tb_plugin/setup.py b/plugins/tensorboard-plugins/tb_plugin/setup.py deleted file mode 100644 index 2d4260b21..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/setup.py +++ /dev/null @@ -1,125 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. -# Copyright(c) 2023 Huawei Technologies. -# All rights reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Modifications: Add visualization of PyTorch Ascend profiling. -# -------------------------------------------------------------------------- -import os -import pathlib -import subprocess -from configparser import ConfigParser - -import setuptools - -config = ConfigParser() -config.read('./torch_tb_profiler/config/config.ini') - - -def read(rel_path): - here = os.path.abspath(os.path.dirname(__file__)) - with open(os.path.join(here, rel_path)) as fp: - return fp.read() - - -def get_version(rel_path): - for line in read(rel_path).splitlines(): - if line.startswith("__version__"): - delim = '"' if '"' in line else "'" - version = line.split(delim)[1] - - if os.getenv('TORCH_TB_PROFILER_BUILD_VERSION'): - version = os.getenv('TORCH_TB_PROFILER_BUILD_VERSION') - return version - - -INSTALL_REQUIRED = [ - "pandas >= 1.0.0", - "tensorboard >= 2.11.0" -] - -TESTS_REQUIRED = INSTALL_REQUIRED + [ - "torch >= 1.8", - "torchvision >= 0.8" -] - -EXTRAS = { - "s3": ["boto3"], - "blob": ["azure-storage-blob"], - "gs": ["google-cloud-storage"] -} - - -class build_fe(setuptools.Command): - """Build the frontend""" - description = "run yarn build on frontend directory" - - user_options = [] - - def initialize_options(self): - pass - - def finalize_options(self): - pass - - def run(self): - cwd = pathlib.Path().absolute() - root = pathlib.Path(__file__).parent.absolute() - os.chdir(root / "fe") - subprocess.run(["yarn", "build:copy"], check=True) - # restore the working directory - os.chdir(cwd) - - -setuptools.setup( - name="torch-tb-profiler-ascend", - version=get_version(os.path.join('torch_tb_profiler', '__init__.py')), - description="PyTorch Ascend Profiler TensorBoard Plugin", - long_description=f"PyTorch Ascend Profiler TensorBoard Plugin: {config.get('URL', 'repository_url')}", - url=config.get('URL', 'repository_url'), - author="Ascend Team", - author_email=config.get('EMAIL', 'author_email'), - cmdclass={ - "build_fe": build_fe - }, - packages=setuptools.find_packages(), - package_data={ - "torch_tb_profiler": ["static/**", "config/**"], - }, - entry_points={ - "tensorboard_plugins": [ - "torch_profiler = torch_tb_profiler.plugin:TorchProfilerPlugin", - ], - }, - python_requires=">=3.6.2", - install_requires=INSTALL_REQUIRED, - tests_require=TESTS_REQUIRED, - classifiers=[ - 'Intended Audience :: Developers', - 'Intended Audience :: Education', - 'Intended Audience :: Science/Research', - 'License :: OSI Approved :: BSD License', - 'Programming Language :: Python :: 3', - 'Topic :: Scientific/Engineering', - 'Topic :: Scientific/Engineering :: Mathematics', - 'Topic :: Scientific/Engineering :: Artificial Intelligence', - 'Topic :: Software Development', - 'Topic :: Software Development :: Libraries', - 'Topic :: Software Development :: Libraries :: Python Modules', - ], - license='BSD-3', - keywords='pytorch tensorboard profile plugin', - extras_require=EXTRAS -) diff --git a/plugins/tensorboard-plugins/tb_plugin/test/gpu_metrics_expected.json b/plugins/tensorboard-plugins/tb_plugin/test/gpu_metrics_expected.json deleted file mode 100644 index 81f03632c..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/test/gpu_metrics_expected.json +++ /dev/null @@ -1,3105 +0,0 @@ - -{ - "schemaVersion": 1, - - "computeProperties": [ - - { - "id": 0, "name": "Tesla V100-DGXS-32GB", "totalGlobalMem": 34084028416, - "major": 7, "minor": 0, - "maxThreadsPerBlock": 1024, "maxThreadsPerMultiProcessor": 2048, - "regsPerBlock": 65536, "regsPerMultiprocessor": 65536, "warpSize": 32, - "sharedMemPerBlock": 49152, "sharedMemPerMultiprocessor": 98304, - "multiProcessorCount": 80, "sharedMemPerBlockOptin": 98304 - }, - - { - "id": 1, "name": "Tesla V100-DGXS-32GB", "totalGlobalMem": 34087305216, - "major": 7, "minor": 0, - "maxThreadsPerBlock": 1024, "maxThreadsPerMultiProcessor": 2048, - "regsPerBlock": 65536, "regsPerMultiprocessor": 65536, "warpSize": 32, - "sharedMemPerBlock": 49152, "sharedMemPerMultiprocessor": 98304, - "multiProcessorCount": 80, "sharedMemPerBlockOptin": 98304 - }, - - { - "id": 2, "name": "Tesla V100-DGXS-32GB", "totalGlobalMem": 34087305216, - "major": 7, "minor": 0, - "maxThreadsPerBlock": 1024, "maxThreadsPerMultiProcessor": 2048, - "regsPerBlock": 65536, "regsPerMultiprocessor": 65536, "warpSize": 32, - "sharedMemPerBlock": 49152, "sharedMemPerMultiprocessor": 98304, - "multiProcessorCount": 80, "sharedMemPerBlockOptin": 98304 - }, - - { - "id": 3, "name": "Tesla V100-DGXS-32GB", "totalGlobalMem": 34087305216, - "major": 7, "minor": 0, - "maxThreadsPerBlock": 1024, "maxThreadsPerMultiProcessor": 2048, - "regsPerBlock": 65536, "regsPerMultiprocessor": 65536, "warpSize": 32, - "sharedMemPerBlock": 49152, "sharedMemPerMultiprocessor": 98304, - "multiProcessorCount": 80, "sharedMemPerBlockOptin": 98304 - } - ], - "traceEvents": [ - - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187223197, "dur": 21, - "args": { - "Device": 24572, "External id": 2, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187223264, "dur": 5, - "args": { - "Device": 24572, "External id": 3, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zeros", "pid": 24572, "tid": "24572", - "ts": 1621401187223182, "dur": 99, - "args": { - "Device": 24572, "External id": 1, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187223376, "dur": 19, - "args": { - "Device": 24572, "External id": 5, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187223480, "dur": 18, - "args": { - "Device": 24572, "External id": 7, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187223530, "dur": 5, - "args": { - "Device": 24572, "External id": 8, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zeros", "pid": 24572, "tid": "24572", - "ts": 1621401187223469, "dur": 72, - "args": { - "Device": 24572, "External id": 6, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187223622, "dur": 19, - "args": { - "Device": 24572, "External id": 10, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187223790, "dur": 12, - "args": { - "Device": 24572, "External id": 13, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::unsqueeze", "pid": 24572, "tid": "24572", - "ts": 1621401187223777, "dur": 50, - "args": { - "Device": 24572, "External id": 12, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187223850, "dur": 7, - "args": { - "Device": 24572, "External id": 15, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::unsqueeze", "pid": 24572, "tid": "24572", - "ts": 1621401187223841, "dur": 24, - "args": { - "Device": 24572, "External id": 14, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187223904, "dur": 16, - "args": { - "Device": 24572, "External id": 18, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::resize_", "pid": 24572, "tid": "24572", - "ts": 1621401187223945, "dur": 14, - "args": { - "Device": 24572, "External id": 19, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::_cat", "pid": 24572, "tid": "24572", - "ts": 1621401187223888, "dur": 87, - "args": { - "Device": 24572, "External id": 17, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::cat", "pid": 24572, "tid": "24572", - "ts": 1621401187223876, "dur": 106, - "args": { - "Device": 24572, "External id": 16, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::stack", "pid": 24572, "tid": "24572", - "ts": 1621401187223752, "dur": 245, - "args": { - "Device": 24572, "External id": 11, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187224094, "dur": 12, - "args": { - "Device": 24572, "External id": 22, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::unsqueeze", "pid": 24572, "tid": "24572", - "ts": 1621401187224074, "dur": 43, - "args": { - "Device": 24572, "External id": 21, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187224137, "dur": 6, - "args": { - "Device": 24572, "External id": 24, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::unsqueeze", "pid": 24572, "tid": "24572", - "ts": 1621401187224128, "dur": 21, - "args": { - "Device": 24572, "External id": 23, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187224184, "dur": 15, - "args": { - "Device": 24572, "External id": 27, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::resize_", "pid": 24572, "tid": "24572", - "ts": 1621401187224223, "dur": 12, - "args": { - "Device": 24572, "External id": 28, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::_cat", "pid": 24572, "tid": "24572", - "ts": 1621401187224169, "dur": 79, - "args": { - "Device": 24572, "External id": 26, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::cat", "pid": 24572, "tid": "24572", - "ts": 1621401187224159, "dur": 96, - "args": { - "Device": 24572, "External id": 25, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::stack", "pid": 24572, "tid": "24572", - "ts": 1621401187224056, "dur": 213, - "args": { - "Device": 24572, "External id": 20, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "enumerate(DataLoader)#_SingleProcessDataLoaderIter.__next__", "pid": 24572, "tid": "24572", - "ts": 1621401187223604, "dur": 725, - "args": { - "Device": 24572, "External id": 9, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187224415, "dur": 54, - "args": { - "Device": 24572, "External id": 30, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::copy_", "pid": 24572, "tid": "24572", - "ts": 1621401187224496, "dur": 80, - "args": { - "Device": 24572, "External id": 31, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::to", "pid": 24572, "tid": "24572", - "ts": 1621401187224398, "dur": 193, - "args": { - "Device": 24572, "External id": 29, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187224645, "dur": 51, - "args": { - "Device": 24572, "External id": 33, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::copy_", "pid": 24572, "tid": "24572", - "ts": 1621401187224720, "dur": 65, - "args": { - "Device": 24572, "External id": 34, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::to", "pid": 24572, "tid": "24572", - "ts": 1621401187224631, "dur": 168, - "args": { - "Device": 24572, "External id": 32, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187224956, "dur": 14, - "args": { - "Device": 24572, "External id": 38, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24572", - "ts": 1621401187224945, "dur": 37, - "args": { - "Device": 24572, "External id": 37, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24572", - "ts": 1621401187224917, "dur": 101, - "args": { - "Device": 24572, "External id": 36, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24572", - "ts": 1621401187225058, "dur": 33, - "args": { - "Device": 24572, "External id": 40, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 23 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187225181, "dur": 41, - "args": { - "Device": 24572, "External id": 42, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 24572, "tid": "24572", - "ts": 1621401187225112, "dur": 197, - "args": { - "Device": 24572, "External id": 41, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 23 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24572", - "ts": 1621401187225367, "dur": 17, - "args": { - "Device": 24572, "External id": 44, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::_unsafe_view", "pid": 24572, "tid": "24572", - "ts": 1621401187225336, "dur": 79, - "args": { - "Device": 24572, "External id": 43, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 24 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::matmul", "pid": 24572, "tid": "24572", - "ts": 1621401187225037, "dur": 394, - "args": { - "Device": 24572, "External id": 39, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 23 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24572", - "ts": 1621401187225449, "dur": 107, - "args": { - "Device": 24572, "External id": 45, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 25 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::linear", "pid": 24572, "tid": "24572", - "ts": 1621401187224907, "dur": 664, - "args": { - "Device": 24572, "External id": 35, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187225662, "dur": 25, - "args": { - "Device": 24572, "External id": 47, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::resize_", "pid": 24572, "tid": "24572", - "ts": 1621401187225746, "dur": 30, - "args": { - "Device": 24572, "External id": 50, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::clamp_min", "pid": 24572, "tid": "24572", - "ts": 1621401187225721, "dur": 105, - "args": { - "Device": 24572, "External id": 49, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::clamp", "pid": 24572, "tid": "24572", - "ts": 1621401187225709, "dur": 128, - "args": { - "Device": 24572, "External id": 48, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::clamp", "pid": 24572, "tid": "24572", - "ts": 1621401187225606, "dur": 263, - "args": { - "Device": 24572, "External id": 46, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 26 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187225978, "dur": 14, - "args": { - "Device": 24572, "External id": 54, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24572", - "ts": 1621401187225968, "dur": 36, - "args": { - "Device": 24572, "External id": 53, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24572", - "ts": 1621401187225941, "dur": 98, - "args": { - "Device": 24572, "External id": 52, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 27 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24572", - "ts": 1621401187226077, "dur": 60, - "args": { - "Device": 24572, "External id": 56, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 28 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187226233, "dur": 41, - "args": { - "Device": 24572, "External id": 58, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 24572, "tid": "24572", - "ts": 1621401187226161, "dur": 197, - "args": { - "Device": 24572, "External id": 57, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 29 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24572", - "ts": 1621401187226416, "dur": 17, - "args": { - "Device": 24572, "External id": 60, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::_unsafe_view", "pid": 24572, "tid": "24572", - "ts": 1621401187226384, "dur": 79, - "args": { - "Device": 24572, "External id": 59, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 30 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::matmul", "pid": 24572, "tid": "24572", - "ts": 1621401187226057, "dur": 422, - "args": { - "Device": 24572, "External id": 55, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 28 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24572", - "ts": 1621401187226497, "dur": 103, - "args": { - "Device": 24572, "External id": 61, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 31 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::linear", "pid": 24572, "tid": "24572", - "ts": 1621401187225932, "dur": 683, - "args": { - "Device": 24572, "External id": 51, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 27 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::broadcast_tensors", "pid": 24572, "tid": "24572", - "ts": 1621401187226708, "dur": 11, - "args": { - "Device": 24572, "External id": 62, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 32 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187226827, "dur": 41, - "args": { - "Device": 24572, "External id": 64, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187226955, "dur": 35, - "args": { - "Device": 24572, "External id": 66, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187227020, "dur": 11, - "args": { - "Device": 24572, "External id": 67, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::sum", "pid": 24572, "tid": "24572", - "ts": 1621401187226930, "dur": 176, - "args": { - "Device": 24572, "External id": 65, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mse_loss", "pid": 24572, "tid": "24572", - "ts": 1621401187226753, "dur": 445, - "args": { - "Device": 24572, "External id": 63, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 32 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187227327, "dur": 21, - "args": { - "Device": 24572, "External id": 69, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187227368, "dur": 5, - "args": { - "Device": 24572, "External id": 70, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zeros", "pid": 24572, "tid": "24572", - "ts": 1621401187227314, "dur": 65, - "args": { - "Device": 24572, "External id": 68, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187227464, "dur": 18, - "args": { - "Device": 24572, "External id": 72, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::fill_", "pid": 24572, "tid": "24572", - "ts": 1621401187227576, "dur": 49, - "args": { - "Device": 24572, "External id": 74, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187227553, "dur": 97, - "args": { - "Device": 24572, "External id": 73, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 33 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::fill_", "pid": 24572, "tid": "24572", - "ts": 1621401187227707, "dur": 43, - "args": { - "Device": 24572, "External id": 76, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187227689, "dur": 79, - "args": { - "Device": 24572, "External id": 75, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 33 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::fill_", "pid": 24572, "tid": "24572", - "ts": 1621401187227823, "dur": 42, - "args": { - "Device": 24572, "External id": 78, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187227805, "dur": 77, - "args": { - "Device": 24572, "External id": 77, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 33 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::fill_", "pid": 24572, "tid": "24572", - "ts": 1621401187227937, "dur": 41, - "args": { - "Device": 24572, "External id": 80, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187227919, "dur": 77, - "args": { - "Device": 24572, "External id": 79, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 33 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "Optimizer.zero_grad#SGD.zero_grad", "pid": 24572, "tid": "24572", - "ts": 1621401187227446, "dur": 606, - "args": { - "Device": 24572, "External id": 71, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187228150, "dur": 53, - "args": { - "Device": 24572, "External id": 83, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty_like", "pid": 24572, "tid": "24572", - "ts": 1621401187228137, "dur": 81, - "args": { - "Device": 24572, "External id": 82, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::fill_", "pid": 24572, "tid": "24572", - "ts": 1621401187228235, "dur": 50, - "args": { - "Device": 24572, "External id": 84, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::ones_like", "pid": 24572, "tid": "24572", - "ts": 1621401187228128, "dur": 169, - "args": { - "Device": 24572, "External id": 81, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187228708, "dur": 79, - "args": { - "Device": 24572, "External id": 89, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty_like", "pid": 24572, "tid": "24610", - "ts": 1621401187228680, "dur": 146, - "args": { - "Device": 24572, "External id": 88, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::fill_", "pid": 24572, "tid": "24610", - "ts": 1621401187228885, "dur": 93, - "args": { - "Device": 24572, "External id": 91, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24610", - "ts": 1621401187228858, "dur": 147, - "args": { - "Device": 24572, "External id": 90, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zeros_like", "pid": 24572, "tid": "24610", - "ts": 1621401187228647, "dur": 369, - "args": { - "Device": 24572, "External id": 87, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mse_loss_backward", "pid": 24572, "tid": "24610", - "ts": 1621401187229048, "dur": 122, - "args": { - "Device": 24572, "External id": 92, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mse_loss_backward", "pid": 24572, "tid": "24610", - "ts": 1621401187228603, "dur": 614, - "args": { - "Device": 24572, "External id": 86, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "MseLossBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187228516, "dur": 727, - "args": { - "Device": 24572, "External id": 85, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 32 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "AddBackward1", "pid": 24572, "tid": "24610", - "ts": 1621401187229384, "dur": 17, - "args": { - "Device": 24572, "External id": 93, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 31 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187229506, "dur": 73, - "args": { - "Device": 24572, "External id": 95, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::sum", "pid": 24572, "tid": "24610", - "ts": 1621401187229459, "dur": 279, - "args": { - "Device": 24572, "External id": 94, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24610", - "ts": 1621401187229788, "dur": 65, - "args": { - "Device": 24572, "External id": 96, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24610", - "ts": 1621401187230059, "dur": 131, - "args": { - "Device": 24572, "External id": 98, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "torch::autograd::AccumulateGrad", "pid": 24572, "tid": "24610", - "ts": 1621401187230028, "dur": 228, - "args": { - "Device": 24572, "External id": 97, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24610", - "ts": 1621401187230405, "dur": 61, - "args": { - "Device": 24572, "External id": 101, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::reshape", "pid": 24572, "tid": "24610", - "ts": 1621401187230383, "dur": 107, - "args": { - "Device": 24572, "External id": 100, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "UnsafeViewBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187230354, "dur": 146, - "args": { - "Device": 24572, "External id": 99, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 30 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187230751, "dur": 22, - "args": { - "Device": 24572, "External id": 105, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24610", - "ts": 1621401187230732, "dur": 65, - "args": { - "Device": 24572, "External id": 104, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24610", - "ts": 1621401187230710, "dur": 124, - "args": { - "Device": 24572, "External id": 103, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::conj", "pid": 24572, "tid": "24610", - "ts": 1621401187230862, "dur": 7, - "args": { - "Device": 24572, "External id": 106, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187230935, "dur": 73, - "args": { - "Device": 24572, "External id": 108, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 24572, "tid": "24610", - "ts": 1621401187230889, "dur": 235, - "args": { - "Device": 24572, "External id": 107, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187231211, "dur": 23, - "args": { - "Device": 24572, "External id": 111, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24610", - "ts": 1621401187231191, "dur": 69, - "args": { - "Device": 24572, "External id": 110, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24610", - "ts": 1621401187231168, "dur": 129, - "args": { - "Device": 24572, "External id": 109, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187231376, "dur": 17, - "args": { - "Device": 24572, "External id": 114, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24610", - "ts": 1621401187231360, "dur": 49, - "args": { - "Device": 24572, "External id": 113, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24610", - "ts": 1621401187231340, "dur": 100, - "args": { - "Device": 24572, "External id": 112, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::conj", "pid": 24572, "tid": "24610", - "ts": 1621401187231465, "dur": 6, - "args": { - "Device": 24572, "External id": 115, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187231534, "dur": 72, - "args": { - "Device": 24572, "External id": 117, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 24572, "tid": "24610", - "ts": 1621401187231491, "dur": 225, - "args": { - "Device": 24572, "External id": 116, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "MmBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187230626, "dur": 1124, - "args": { - "Device": 24572, "External id": 102, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 29 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24610", - "ts": 1621401187231992, "dur": 61, - "args": { - "Device": 24572, "External id": 120, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::reshape", "pid": 24572, "tid": "24610", - "ts": 1621401187231970, "dur": 108, - "args": { - "Device": 24572, "External id": 119, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "ViewBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187231941, "dur": 166, - "args": { - "Device": 24572, "External id": 118, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 28 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187232305, "dur": 21, - "args": { - "Device": 24572, "External id": 124, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24610", - "ts": 1621401187232286, "dur": 62, - "args": { - "Device": 24572, "External id": 123, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24610", - "ts": 1621401187232265, "dur": 123, - "args": { - "Device": 24572, "External id": 122, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "TBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187232239, "dur": 161, - "args": { - "Device": 24572, "External id": 121, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 27 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24610", - "ts": 1621401187232535, "dur": 85, - "args": { - "Device": 24572, "External id": 126, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "torch::autograd::AccumulateGrad", "pid": 24572, "tid": "24610", - "ts": 1621401187232515, "dur": 148, - "args": { - "Device": 24572, "External id": 125, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187232790, "dur": 47, - "args": { - "Device": 24572, "External id": 129, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::fill_", "pid": 24572, "tid": "24610", - "ts": 1621401187232866, "dur": 68, - "args": { - "Device": 24572, "External id": 130, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::scalar_tensor", "pid": 24572, "tid": "24610", - "ts": 1621401187232776, "dur": 174, - "args": { - "Device": 24572, "External id": 128, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187233023, "dur": 27, - "args": { - "Device": 24572, "External id": 132, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::_local_scalar_dense", "pid": 24572, "tid": "24610", - "ts": 1621401187233192, "dur": 6, - "args": { - "Device": 24572, "External id": 135, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::item", "pid": 24572, "tid": "24610", - "ts": 1621401187233184, "dur": 24, - "args": { - "Device": 24572, "External id": 134, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::resize_", "pid": 24572, "tid": "24610", - "ts": 1621401187233251, "dur": 41, - "args": { - "Device": 24572, "External id": 136, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::ge", "pid": 24572, "tid": "24610", - "ts": 1621401187233168, "dur": 182, - "args": { - "Device": 24572, "External id": 133, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::ge", "pid": 24572, "tid": "24610", - "ts": 1621401187232971, "dur": 404, - "args": { - "Device": 24572, "External id": 131, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187233430, "dur": 15, - "args": { - "Device": 24572, "External id": 139, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::expand", "pid": 24572, "tid": "24610", - "ts": 1621401187233414, "dur": 62, - "args": { - "Device": 24572, "External id": 138, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187233508, "dur": 10, - "args": { - "Device": 24572, "External id": 141, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::expand", "pid": 24572, "tid": "24610", - "ts": 1621401187233494, "dur": 48, - "args": { - "Device": 24572, "External id": 140, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187233571, "dur": 10, - "args": { - "Device": 24572, "External id": 143, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::expand", "pid": 24572, "tid": "24610", - "ts": 1621401187233558, "dur": 43, - "args": { - "Device": 24572, "External id": 142, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187233649, "dur": 46, - "args": { - "Device": 24572, "External id": 145, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::_s_where", "pid": 24572, "tid": "24610", - "ts": 1621401187233620, "dur": 167, - "args": { - "Device": 24572, "External id": 144, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::where", "pid": 24572, "tid": "24610", - "ts": 1621401187233398, "dur": 409, - "args": { - "Device": 24572, "External id": 137, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "ClampBackward1", "pid": 24572, "tid": "24610", - "ts": 1621401187232724, "dur": 1110, - "args": { - "Device": 24572, "External id": 127, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 26 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "AddBackward1", "pid": 24572, "tid": "24610", - "ts": 1621401187233941, "dur": 12, - "args": { - "Device": 24572, "External id": 146, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 25 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187234021, "dur": 46, - "args": { - "Device": 24572, "External id": 148, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::sum", "pid": 24572, "tid": "24610", - "ts": 1621401187233990, "dur": 182, - "args": { - "Device": 24572, "External id": 147, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24610", - "ts": 1621401187234208, "dur": 43, - "args": { - "Device": 24572, "External id": 149, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24610", - "ts": 1621401187234378, "dur": 84, - "args": { - "Device": 24572, "External id": 151, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "torch::autograd::AccumulateGrad", "pid": 24572, "tid": "24610", - "ts": 1621401187234357, "dur": 144, - "args": { - "Device": 24572, "External id": 150, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24610", - "ts": 1621401187234593, "dur": 39, - "args": { - "Device": 24572, "External id": 154, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::reshape", "pid": 24572, "tid": "24610", - "ts": 1621401187234580, "dur": 67, - "args": { - "Device": 24572, "External id": 153, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "UnsafeViewBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187234561, "dur": 92, - "args": { - "Device": 24572, "External id": 152, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 24 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187234803, "dur": 14, - "args": { - "Device": 24572, "External id": 158, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24610", - "ts": 1621401187234792, "dur": 41, - "args": { - "Device": 24572, "External id": 157, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24610", - "ts": 1621401187234778, "dur": 79, - "args": { - "Device": 24572, "External id": 156, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::conj", "pid": 24572, "tid": "24610", - "ts": 1621401187234874, "dur": 4, - "args": { - "Device": 24572, "External id": 159, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187234918, "dur": 47, - "args": { - "Device": 24572, "External id": 161, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 24572, "tid": "24610", - "ts": 1621401187234890, "dur": 149, - "args": { - "Device": 24572, "External id": 160, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187235092, "dur": 15, - "args": { - "Device": 24572, "External id": 164, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24610", - "ts": 1621401187235080, "dur": 39, - "args": { - "Device": 24572, "External id": 163, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24610", - "ts": 1621401187235067, "dur": 75, - "args": { - "Device": 24572, "External id": 162, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "MmBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187234734, "dur": 424, - "args": { - "Device": 24572, "External id": 155, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 23 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187235312, "dur": 13, - "args": { - "Device": 24572, "External id": 168, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24610", - "ts": 1621401187235301, "dur": 40, - "args": { - "Device": 24572, "External id": 167, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24610", - "ts": 1621401187235288, "dur": 78, - "args": { - "Device": 24572, "External id": 166, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "TBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187235271, "dur": 103, - "args": { - "Device": 24572, "External id": 165, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24610", - "ts": 1621401187235487, "dur": 85, - "args": { - "Device": 24572, "External id": 170, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "torch::autograd::AccumulateGrad", "pid": 24572, "tid": "24610", - "ts": 1621401187235467, "dur": 147, - "args": { - "Device": 24572, "External id": 169, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187235803, "dur": 24, - "args": { - "Device": 24572, "External id": 172, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187235850, "dur": 5, - "args": { - "Device": 24572, "External id": 173, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zeros", "pid": 24572, "tid": "24572", - "ts": 1621401187235787, "dur": 75, - "args": { - "Device": 24572, "External id": 171, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187235954, "dur": 20, - "args": { - "Device": 24572, "External id": 175, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24572", - "ts": 1621401187236091, "dur": 82, - "args": { - "Device": 24572, "External id": 176, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24572", - "ts": 1621401187236221, "dur": 70, - "args": { - "Device": 24572, "External id": 177, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24572", - "ts": 1621401187236334, "dur": 68, - "args": { - "Device": 24572, "External id": 178, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24572", - "ts": 1621401187236444, "dur": 68, - "args": { - "Device": 24572, "External id": 179, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "Optimizer.step#SGD.step", "pid": 24572, "tid": "24572", - "ts": 1621401187235935, "dur": 663, - "args": { - "Device": 24572, "External id": 174, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#2", "pid": 24572, "tid": "24572", - "ts": 1621401187223358, "dur": 13410, - "args": { - "Device": 24572, "External id": 4, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Memcpy", - "name": "Memcpy HtoD (Pageable -> Device)", "pid": 0, "tid": "stream 7", - "ts": 1621401187224556, "dur": 1, - "args": { - "device": 0, "context": 1, - "stream": 7, "correlation": 311, "external id": 31, - "bytes": 640, "memory bandwidth (GB/s)": 0.46511627906976744 - } - }, - { - "ph": "f", "id": 311, "pid": 0, "tid": "stream 7", "ts": 1621401187224556, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaMemcpyAsync", "pid": 24572, "tid": "24572", - "ts": 1621401187224533, "dur": 20, - "args": { - "cbid": 41, "correlation": 311, - "external id": 31, "external ts": 1621401187224496 - } - }, - { - "ph": "s", "id": 311, "pid": 24572, "tid": 24572, "ts": 1621401187224533, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaStreamSynchronize", "pid": 24572, "tid": "24572", - "ts": 1621401187224554, "dur": 8, - "args": { - "cbid": 131, "correlation": 312, - "external id": 31, "external ts": 1621401187224496 - } - }, - { - "ph": "X", "cat": "Memcpy", - "name": "Memcpy HtoD (Pageable -> Device)", "pid": 0, "tid": "stream 7", - "ts": 1621401187224767, "dur": 1, - "args": { - "device": 0, "context": 1, - "stream": 7, "correlation": 323, "external id": 34, - "bytes": 128, "memory bandwidth (GB/s)": 0.09523809523809523 - } - }, - { - "ph": "f", "id": 323, "pid": 0, "tid": "stream 7", "ts": 1621401187224767, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaMemcpyAsync", "pid": 24572, "tid": "24572", - "ts": 1621401187224752, "dur": 12, - "args": { - "cbid": 41, "correlation": 323, - "external id": 34, "external ts": 1621401187224720 - } - }, - { - "ph": "s", "id": 323, "pid": 24572, "tid": 24572, "ts": 1621401187224752, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaStreamSynchronize", "pid": 24572, "tid": "24572", - "ts": 1621401187224765, "dur": 7, - "args": { - "cbid": 131, "correlation": 324, - "external id": 34, "external ts": 1621401187224720 - } - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "pid": 24572, "tid": "24572", - "ts": 1621401187225253, "dur": 2, - "args": { - "cbid": 251, "correlation": 332, - "external id": 41, "external ts": 1621401187225112 - } - }, - { - "ph": "X", "cat": "Kernel", - "name": "void gemmSN_TN_kernel_64addr, cublasGemvTensorStridedBatched >(cublasGemmSmallNParams, cublasGemvTensorStridedBatched, float>)", "pid": 0, "tid": "stream 7", - "ts": 1621401187225275, "dur": 3, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 333, "external id": 41, - "registers per thread": 72, - "shared memory": 13824, - "blocks per SM": 0.025, - "warps per SM": 0.1, - "grid": [1, 2, 1], - "block": [128, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 333, "pid": 0, "tid": "stream 7", "ts": 1621401187225275, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187225258, "dur": 16, - "args": { - "cbid": 211, "correlation": 333, - "external id": 41, "external ts": 1621401187225112 - } - }, - { - "ph": "s", "id": 333, "pid": 24572, "tid": 24572, "ts": 1621401187225258, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::unrolled_elementwise_kernel, at::detail::Array, OffsetCalculator<2, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast>(int, at::native::AddFunctor, at::detail::Array, OffsetCalculator<2, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast)", "pid": 0, "tid": "stream 7", - "ts": 1621401187225530, "dur": 2, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 338, "external id": 45, - "registers per thread": 22, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 338, "pid": 0, "tid": "stream 7", "ts": 1621401187225530, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187225512, "dur": 16, - "args": { - "cbid": 211, "correlation": 338, - "external id": 45, "external ts": 1621401187225449 - } - }, - { - "ph": "s", "id": 338, "pid": 24572, "tid": 24572, "ts": 1621401187225512, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::(anonymous namespace)::clamp_min_scalar_kernel_impl(at::TensorIterator&, c10::Scalar)::{lambda()#1}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array >(int, at::native::(anonymous namespace)::clamp_min_scalar_kernel_impl(at::TensorIterator&, c10::Scalar)::{lambda()#1}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187225820, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 352, "external id": 49, - "registers per thread": 18, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 352, "pid": 0, "tid": "stream 7", "ts": 1621401187225820, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187225803, "dur": 15, - "args": { - "cbid": 211, "correlation": 352, - "external id": 49, "external ts": 1621401187225721 - } - }, - { - "ph": "s", "id": 352, "pid": 24572, "tid": 24572, "ts": 1621401187225803, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "pid": 24572, "tid": "24572", - "ts": 1621401187226305, "dur": 2, - "args": { - "cbid": 251, "correlation": 363, - "external id": 57, "external ts": 1621401187226161 - } - }, - { - "ph": "X", "cat": "Kernel", - "name": "void gemmSN_TN_kernel_64addr, cublasGemvTensorStridedBatched >(cublasGemmSmallNParams, cublasGemvTensorStridedBatched, float>)", "pid": 0, "tid": "stream 7", - "ts": 1621401187226325, "dur": 2, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 364, "external id": 57, - "registers per thread": 72, - "shared memory": 13824, - "blocks per SM": 0.025, - "warps per SM": 0.1, - "grid": [1, 2, 1], - "block": [128, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 364, "pid": 0, "tid": "stream 7", "ts": 1621401187226325, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187226309, "dur": 15, - "args": { - "cbid": 211, "correlation": 364, - "external id": 57, "external ts": 1621401187226161 - } - }, - { - "ph": "s", "id": 364, "pid": 24572, "tid": 24572, "ts": 1621401187226309, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::unrolled_elementwise_kernel, at::detail::Array, OffsetCalculator<2, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast>(int, at::native::AddFunctor, at::detail::Array, OffsetCalculator<2, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast)", "pid": 0, "tid": "stream 7", - "ts": 1621401187226575, "dur": 2, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 369, "external id": 61, - "registers per thread": 22, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 369, "pid": 0, "tid": "stream 7", "ts": 1621401187226575, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187226558, "dur": 15, - "args": { - "cbid": 211, "correlation": 369, - "external id": 61, "external ts": 1621401187226497 - } - }, - { - "ph": "s", "id": 369, "pid": 24572, "tid": 24572, "ts": 1621401187226558, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::mse_kernel_cuda(at::TensorIterator&)::{lambda()#1}::operator()() const::{lambda()#4}::operator()() const::{lambda(float, float)#1}, at::detail::Array >(int, at::native::mse_kernel_cuda(at::TensorIterator&)::{lambda()#1}::operator()() const::{lambda()#4}::operator()() const::{lambda(float, float)#1}, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187226912, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 377, "external id": 63, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 377, "pid": 0, "tid": "stream 7", "ts": 1621401187226912, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187226895, "dur": 16, - "args": { - "cbid": 211, "correlation": 377, - "external id": 63, "external ts": 1621401187226753 - } - }, - { - "ph": "s", "id": 377, "pid": 24572, "tid": 24572, "ts": 1621401187226895, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::reduce_kernel<512, 1, at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4> >(at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4>)", "pid": 0, "tid": "stream 7", - "ts": 1621401187227092, "dur": 2, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 388, "external id": 65, - "registers per thread": 32, - "shared memory": 16, - "blocks per SM": 0.0125, - "warps per SM": 0.0125, - "grid": [1, 1, 1], - "block": [32, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 388, "pid": 0, "tid": "stream 7", "ts": 1621401187227092, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187227075, "dur": 15, - "args": { - "cbid": 211, "correlation": 388, - "external id": 65, "external ts": 1621401187226930 - } - }, - { - "ph": "s", "id": 388, "pid": 24572, "tid": 24572, "ts": 1621401187227075, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187227619, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 395, "external id": 74, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 395, "pid": 0, "tid": "stream 7", "ts": 1621401187227619, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187227601, "dur": 16, - "args": { - "cbid": 211, "correlation": 395, - "external id": 74, "external ts": 1621401187227576 - } - }, - { - "ph": "s", "id": 395, "pid": 24572, "tid": 24572, "ts": 1621401187227601, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187227745, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 402, "external id": 76, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 402, "pid": 0, "tid": "stream 7", "ts": 1621401187227745, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187227729, "dur": 14, - "args": { - "cbid": 211, "correlation": 402, - "external id": 76, "external ts": 1621401187227707 - } - }, - { - "ph": "s", "id": 402, "pid": 24572, "tid": 24572, "ts": 1621401187227729, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187227859, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 409, "external id": 78, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 409, "pid": 0, "tid": "stream 7", "ts": 1621401187227859, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187227844, "dur": 13, - "args": { - "cbid": 211, "correlation": 409, - "external id": 78, "external ts": 1621401187227823 - } - }, - { - "ph": "s", "id": 409, "pid": 24572, "tid": 24572, "ts": 1621401187227844, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187227973, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 416, "external id": 80, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 416, "pid": 0, "tid": "stream 7", "ts": 1621401187227973, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187227958, "dur": 13, - "args": { - "cbid": 211, "correlation": 416, - "external id": 80, "external ts": 1621401187227937 - } - }, - { - "ph": "s", "id": 416, "pid": 24572, "tid": 24572, "ts": 1621401187227958, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187228279, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 429, "external id": 84, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 429, "pid": 0, "tid": "stream 7", "ts": 1621401187228279, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187228262, "dur": 15, - "args": { - "cbid": 211, "correlation": 429, - "external id": 84, "external ts": 1621401187228235 - } - }, - { - "ph": "s", "id": 429, "pid": 24572, "tid": 24572, "ts": 1621401187228262, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187228962, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 440, "external id": 91, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 440, "pid": 0, "tid": "stream 7", "ts": 1621401187228962, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187228932, "dur": 30, - "args": { - "cbid": 211, "correlation": 440, - "external id": 91, "external ts": 1621401187228885 - } - }, - { - "ph": "s", "id": 440, "pid": 24572, "tid": 24610, "ts": 1621401187228932, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::unrolled_elementwise_kernel, OffsetCalculator<3, unsigned int>, at::detail::Array<1, unsigned int>, at::native::memory::LoadWithoutCast, OffsetCalculator::StoreWithoutCast>(int, at::native::mse_backward_cuda_kernel(at::TensorIterator&, c10::Scalar const&)::{lambda()#1}::operator()() const::{lambda()#4}::operator()() const::{lambda(float, float, float)#1}, at::detail::Array, OffsetCalculator<3, unsigned int>, at::detail::Array<1, unsigned int>, at::native::memory::LoadWithoutCast, OffsetCalculator::StoreWithoutCast)", "pid": 0, "tid": "stream 7", - "ts": 1621401187229153, "dur": 2, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 446, "external id": 92, - "registers per thread": 28, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 446, "pid": 0, "tid": "stream 7", "ts": 1621401187229153, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187229127, "dur": 26, - "args": { - "cbid": 211, "correlation": 446, - "external id": 92, "external ts": 1621401187229048 - } - }, - { - "ph": "s", "id": 446, "pid": 24572, "tid": 24610, "ts": 1621401187229127, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::reduce_kernel<256, 2, at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4> >(at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4>)", "pid": 0, "tid": "stream 7", - "ts": 1621401187229711, "dur": 4, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 460, "external id": 94, - "registers per thread": 35, - "shared memory": 16, - "blocks per SM": 0.0125, - "warps per SM": 0.00625, - "grid": [1, 1, 1], - "block": [1, 16, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 460, "pid": 0, "tid": "stream 7", "ts": 1621401187229711, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187229681, "dur": 30, - "args": { - "cbid": 211, "correlation": 460, - "external id": 94, "external ts": 1621401187229459 - } - }, - { - "ph": "s", "id": 460, "pid": 24572, "tid": 24610, "ts": 1621401187229681, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187230162, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 467, "external id": 98, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 467, "pid": 0, "tid": "stream 7", "ts": 1621401187230162, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187230133, "dur": 29, - "args": { - "cbid": 211, "correlation": 467, - "external id": 98, "external ts": 1621401187230059 - } - }, - { - "ph": "s", "id": 467, "pid": 24572, "tid": 24610, "ts": 1621401187230133, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "pid": 24572, "tid": "24610", - "ts": 1621401187231063, "dur": 4, - "args": { - "cbid": 251, "correlation": 480, - "external id": 107, "external ts": 1621401187230889 - } - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "pid": 24572, "tid": "24610", - "ts": 1621401187231069, "dur": 1, - "args": { - "cbid": 251, "correlation": 481, - "external id": 107, "external ts": 1621401187230889 - } - }, - { - "ph": "X", "cat": "Kernel", - "name": "volta_sgemm_128x32_nt", "pid": 0, "tid": "stream 7", - "ts": 1621401187231100, "dur": 3, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 482, "external id": 107, - "registers per thread": 55, - "shared memory": 16384, - "blocks per SM": 0.0125, - "warps per SM": 0.1, - "grid": [1, 1, 1], - "block": [256, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 482, "pid": 0, "tid": "stream 7", "ts": 1621401187231100, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187231073, "dur": 27, - "args": { - "cbid": 211, "correlation": 482, - "external id": 107, "external ts": 1621401187230889 - } - }, - { - "ph": "s", "id": 482, "pid": 24572, "tid": 24610, "ts": 1621401187231073, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "pid": 24572, "tid": "24610", - "ts": 1621401187231658, "dur": 3, - "args": { - "cbid": 251, "correlation": 491, - "external id": 116, "external ts": 1621401187231491 - } - }, - { - "ph": "X", "cat": "Kernel", - "name": "void gemmSN_NN_kernel, cublasGemvTensorStridedBatched >(cublasGemmSmallNParams, cublasGemvTensorStridedBatched, float>)", "pid": 0, "tid": "stream 7", - "ts": 1621401187231692, "dur": 2, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 492, "external id": 116, - "registers per thread": 64, - "shared memory": 12288, - "blocks per SM": 0.05, - "warps per SM": 0.4, - "grid": [1, 4, 1], - "block": [256, 1, 1], - "theoretical occupancy %": 1 - } - }, - { - "ph": "f", "id": 492, "pid": 0, "tid": "stream 7", "ts": 1621401187231692, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187231665, "dur": 27, - "args": { - "cbid": 211, "correlation": 492, - "external id": 116, "external ts": 1621401187231491 - } - }, - { - "ph": "s", "id": 492, "pid": 24572, "tid": 24610, "ts": 1621401187231665, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187232603, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 503, "external id": 126, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 503, "pid": 0, "tid": "stream 7", "ts": 1621401187232603, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187232583, "dur": 19, - "args": { - "cbid": 211, "correlation": 503, - "external id": 126, "external ts": 1621401187232535 - } - }, - { - "ph": "s", "id": 503, "pid": 24572, "tid": 24610, "ts": 1621401187232583, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187232921, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 513, "external id": 130, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 513, "pid": 0, "tid": "stream 7", "ts": 1621401187232921, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187232901, "dur": 19, - "args": { - "cbid": 211, "correlation": 513, - "external id": 130, "external ts": 1621401187232866 - } - }, - { - "ph": "s", "id": 513, "pid": 24572, "tid": 24610, "ts": 1621401187232901, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::BUnaryFunctor >, at::detail::Array >(int, at::native::BUnaryFunctor >, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187233342, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 526, "external id": 133, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 526, "pid": 0, "tid": "stream 7", "ts": 1621401187233342, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187233323, "dur": 18, - "args": { - "cbid": 211, "correlation": 526, - "external id": 133, "external ts": 1621401187233168 - } - }, - { - "ph": "s", "id": 526, "pid": 24572, "tid": 24610, "ts": 1621401187233323, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::unrolled_elementwise_kernel, OffsetCalculator<3, unsigned int>, at::detail::Array<1, unsigned int>, at::native::memory::LoadWithoutCast, OffsetCalculator::StoreWithoutCast>(int, at::native::(anonymous namespace)::where_kernel_impl(at::TensorIterator&, c10::ScalarType)::{lambda()#1}::operator()() const::{lambda()#8}::operator()() const::{lambda(bool, float, float)#1}, at::detail::Array, OffsetCalculator<3, unsigned int>, at::detail::Array<1, unsigned int>, at::native::memory::LoadWithoutCast, OffsetCalculator::StoreWithoutCast)", "pid": 0, "tid": "stream 7", - "ts": 1621401187233770, "dur": 2, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 535, "external id": 144, - "registers per thread": 26, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 535, "pid": 0, "tid": "stream 7", "ts": 1621401187233770, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187233751, "dur": 19, - "args": { - "cbid": 211, "correlation": 535, - "external id": 144, "external ts": 1621401187233620 - } - }, - { - "ph": "s", "id": 535, "pid": 24572, "tid": 24610, "ts": 1621401187233751, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::reduce_kernel<512, 1, at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4> >(at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4>)", "pid": 0, "tid": "stream 7", - "ts": 1621401187234156, "dur": 3, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 548, "external id": 147, - "registers per thread": 32, - "shared memory": 16, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [4, 16, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 548, "pid": 0, "tid": "stream 7", "ts": 1621401187234156, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187234135, "dur": 19, - "args": { - "cbid": 211, "correlation": 548, - "external id": 147, "external ts": 1621401187233990 - } - }, - { - "ph": "s", "id": 548, "pid": 24572, "tid": 24610, "ts": 1621401187234135, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187234445, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 555, "external id": 151, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 555, "pid": 0, "tid": "stream 7", "ts": 1621401187234445, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187234425, "dur": 19, - "args": { - "cbid": 211, "correlation": 555, - "external id": 151, "external ts": 1621401187234378 - } - }, - { - "ph": "s", "id": 555, "pid": 24572, "tid": 24610, "ts": 1621401187234425, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "pid": 24572, "tid": "24610", - "ts": 1621401187235000, "dur": 2, - "args": { - "cbid": 251, "correlation": 568, - "external id": 160, "external ts": 1621401187234890 - } - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "pid": 24572, "tid": "24610", - "ts": 1621401187235004, "dur": 0, - "args": { - "cbid": 251, "correlation": 569, - "external id": 160, "external ts": 1621401187234890 - } - }, - { - "ph": "X", "cat": "Kernel", - "name": "volta_sgemm_128x32_nt", "pid": 0, "tid": "stream 7", - "ts": 1621401187235025, "dur": 3, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 570, "external id": 160, - "registers per thread": 55, - "shared memory": 16384, - "blocks per SM": 0.0125, - "warps per SM": 0.1, - "grid": [1, 1, 1], - "block": [256, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 570, "pid": 0, "tid": "stream 7", "ts": 1621401187235025, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187235006, "dur": 17, - "args": { - "cbid": 211, "correlation": 570, - "external id": 160, "external ts": 1621401187234890 - } - }, - { - "ph": "s", "id": 570, "pid": 24572, "tid": 24610, "ts": 1621401187235006, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187235555, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 579, "external id": 170, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 579, "pid": 0, "tid": "stream 7", "ts": 1621401187235555, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187235535, "dur": 19, - "args": { - "cbid": 211, "correlation": 579, - "external id": 170, "external ts": 1621401187235487 - } - }, - { - "ph": "s", "id": 579, "pid": 24572, "tid": 24610, "ts": 1621401187235535, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187236158, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 585, "external id": 176, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 585, "pid": 0, "tid": "stream 7", "ts": 1621401187236158, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187236138, "dur": 18, - "args": { - "cbid": 211, "correlation": 585, - "external id": 176, "external ts": 1621401187236091 - } - }, - { - "ph": "s", "id": 585, "pid": 24572, "tid": 24572, "ts": 1621401187236138, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187236278, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 590, "external id": 177, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 590, "pid": 0, "tid": "stream 7", "ts": 1621401187236278, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187236261, "dur": 15, - "args": { - "cbid": 211, "correlation": 590, - "external id": 177, "external ts": 1621401187236221 - } - }, - { - "ph": "s", "id": 590, "pid": 24572, "tid": 24572, "ts": 1621401187236261, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187236390, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 595, "external id": 178, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 595, "pid": 0, "tid": "stream 7", "ts": 1621401187236390, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187236373, "dur": 15, - "args": { - "cbid": 211, "correlation": 595, - "external id": 178, "external ts": 1621401187236334 - } - }, - { - "ph": "s", "id": 595, "pid": 24572, "tid": 24572, "ts": 1621401187236373, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187236501, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 600, "external id": 179, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 600, "pid": 0, "tid": "stream 7", "ts": 1621401187236501, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187236483, "dur": 15, - "args": { - "cbid": 211, "correlation": 600, - "external id": 179, "external ts": 1621401187236444 - } - }, - { - "ph": "s", "id": 600, "pid": 24572, "tid": 24572, "ts": 1621401187236483, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaDeviceSynchronize", "pid": 24572, "tid": "24572", - "ts": 1621401187236853, "dur": 10, - "args": { - "cbid": 165, "correlation": 605, - "external id": 0, "external ts": 0 - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 24572, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 24572, "tid": 0, - "args": { - "labels": "CPU" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 0, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 0, "tid": 0, - "args": { - "labels": "GPU 0" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 1, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 1, "tid": 0, - "args": { - "labels": "GPU 1" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 2, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 2, "tid": 0, - "args": { - "labels": "GPU 2" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 3, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 3, "tid": 0, - "args": { - "labels": "GPU 3" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 4, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 4, "tid": 0, - "args": { - "labels": "GPU 4" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 5, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 5, "tid": 0, - "args": { - "labels": "GPU 5" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 6, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 6, "tid": 0, - "args": { - "labels": "GPU 6" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 7, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 7, "tid": 0, - "args": { - "labels": "GPU 7" - } - }, - { - "name": "thread_name", "ph": "M", "ts": 1621401187223005, "pid": 24572, "tid": "24610", - "args": { - "name": "thread 24610 (python)" - } - }, - { - "name": "thread_name", "ph": "M", "ts": 1621401187223005, "pid": 24572, "tid": "24572", - "args": { - "name": "thread 24572 (python)" - } - }, - { - "ph": "X", "cat": "Trace", "ts": 1621401187223005, "dur": 13896, - "pid": "Traces", "tid": "PyTorch Profiler", - "name": "PyTorch Profiler (0)", - "args": { - "Op count": 0 - } - }, - { - "name": "Iteration Start: PyTorch Profiler", "ph": "i", "s": "g", - "pid": "Traces", "tid": "Trace PyTorch Profiler", "ts": 1621401187223005 - }, - { - "name": "Record Window End", "ph": "i", "s": "g", - "pid": "", "tid": "", "ts": 1621401187237108 - } -, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187223005, "args":{"GPU Utilization":1}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187223005, "args":{"GPU Utilization":0}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187223005, "args":{"GPU Utilization":0.0}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187224005, "args":{"GPU Utilization":0.0}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187225005, "args":{"GPU Utilization":0.6}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187226005, "args":{"GPU Utilization":0.5}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187227005, "args":{"GPU Utilization":0.6}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187228005, "args":{"GPU Utilization":0.2}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187229005, "args":{"GPU Utilization":0.6}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187230005, "args":{"GPU Utilization":0.1}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187231005, "args":{"GPU Utilization":0.5}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187232005, "args":{"GPU Utilization":0.2}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187233005, "args":{"GPU Utilization":0.3}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187234005, "args":{"GPU Utilization":0.4}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187235005, "args":{"GPU Utilization":0.4219409282700422}}, {"ph":"C", "name":"GPU 0 Utilization", "pid":0, "ts":1621401187236901, "args":{"GPU Utilization":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187223005, "args":{"Est. SM Efficiency":1}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187223005, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187225275, "args":{"Est. SM Efficiency":0.25}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187225278, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187225530, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187225532, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187225820, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187225821, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187226325, "args":{"Est. SM Efficiency":0.25}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187226327, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187226575, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187226577, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187226912, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187226913, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187227092, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187227094, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187227619, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187227620, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187227745, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187227746, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187227859, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187227860, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187227973, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187227974, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187228279, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187228280, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187228962, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187228963, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187229153, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187229155, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187229711, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187229715, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187230162, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187230163, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187231100, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187231103, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187231692, "args":{"Est. SM Efficiency":0.5}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187231694, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187232603, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187232604, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187232921, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187232922, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187233342, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187233343, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187233770, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187233772, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187234156, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187234159, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187234445, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187234446, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187235025, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187235028, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187235555, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187235556, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187236158, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187236159, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187236278, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187236279, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187236390, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187236391, "args":{"Est. SM Efficiency":0}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187236501, "args":{"Est. SM Efficiency":0.125}}, {"ph":"C", "name":"GPU 0 Est. SM Efficiency", "pid":0, "ts":1621401187236502, "args":{"Est. SM Efficiency":0}}]} \ No newline at end of file diff --git a/plugins/tensorboard-plugins/tb_plugin/test/gpu_metrics_input.json b/plugins/tensorboard-plugins/tb_plugin/test/gpu_metrics_input.json deleted file mode 100644 index 71530b1d6..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/test/gpu_metrics_input.json +++ /dev/null @@ -1,3105 +0,0 @@ - -{ - "schemaVersion": 1, - - "computeProperties": [ - - { - "id": 0, "name": "Tesla V100-DGXS-32GB", "totalGlobalMem": 34084028416, - "major": 7, "minor": 0, - "maxThreadsPerBlock": 1024, "maxThreadsPerMultiProcessor": 2048, - "regsPerBlock": 65536, "regsPerMultiprocessor": 65536, "warpSize": 32, - "sharedMemPerBlock": 49152, "sharedMemPerMultiprocessor": 98304, - "multiProcessorCount": 80, "sharedMemPerBlockOptin": 98304 - }, - - { - "id": 1, "name": "Tesla V100-DGXS-32GB", "totalGlobalMem": 34087305216, - "major": 7, "minor": 0, - "maxThreadsPerBlock": 1024, "maxThreadsPerMultiProcessor": 2048, - "regsPerBlock": 65536, "regsPerMultiprocessor": 65536, "warpSize": 32, - "sharedMemPerBlock": 49152, "sharedMemPerMultiprocessor": 98304, - "multiProcessorCount": 80, "sharedMemPerBlockOptin": 98304 - }, - - { - "id": 2, "name": "Tesla V100-DGXS-32GB", "totalGlobalMem": 34087305216, - "major": 7, "minor": 0, - "maxThreadsPerBlock": 1024, "maxThreadsPerMultiProcessor": 2048, - "regsPerBlock": 65536, "regsPerMultiprocessor": 65536, "warpSize": 32, - "sharedMemPerBlock": 49152, "sharedMemPerMultiprocessor": 98304, - "multiProcessorCount": 80, "sharedMemPerBlockOptin": 98304 - }, - - { - "id": 3, "name": "Tesla V100-DGXS-32GB", "totalGlobalMem": 34087305216, - "major": 7, "minor": 0, - "maxThreadsPerBlock": 1024, "maxThreadsPerMultiProcessor": 2048, - "regsPerBlock": 65536, "regsPerMultiprocessor": 65536, "warpSize": 32, - "sharedMemPerBlock": 49152, "sharedMemPerMultiprocessor": 98304, - "multiProcessorCount": 80, "sharedMemPerBlockOptin": 98304 - } - ], - "traceEvents": [ - - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187223197, "dur": 21, - "args": { - "Device": 24572, "External id": 2, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187223264, "dur": 5, - "args": { - "Device": 24572, "External id": 3, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zeros", "pid": 24572, "tid": "24572", - "ts": 1621401187223182, "dur": 99, - "args": { - "Device": 24572, "External id": 1, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187223376, "dur": 19, - "args": { - "Device": 24572, "External id": 5, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187223480, "dur": 18, - "args": { - "Device": 24572, "External id": 7, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187223530, "dur": 5, - "args": { - "Device": 24572, "External id": 8, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zeros", "pid": 24572, "tid": "24572", - "ts": 1621401187223469, "dur": 72, - "args": { - "Device": 24572, "External id": 6, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187223622, "dur": 19, - "args": { - "Device": 24572, "External id": 10, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187223790, "dur": 12, - "args": { - "Device": 24572, "External id": 13, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::unsqueeze", "pid": 24572, "tid": "24572", - "ts": 1621401187223777, "dur": 50, - "args": { - "Device": 24572, "External id": 12, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187223850, "dur": 7, - "args": { - "Device": 24572, "External id": 15, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::unsqueeze", "pid": 24572, "tid": "24572", - "ts": 1621401187223841, "dur": 24, - "args": { - "Device": 24572, "External id": 14, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187223904, "dur": 16, - "args": { - "Device": 24572, "External id": 18, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::resize_", "pid": 24572, "tid": "24572", - "ts": 1621401187223945, "dur": 14, - "args": { - "Device": 24572, "External id": 19, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::_cat", "pid": 24572, "tid": "24572", - "ts": 1621401187223888, "dur": 87, - "args": { - "Device": 24572, "External id": 17, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::cat", "pid": 24572, "tid": "24572", - "ts": 1621401187223876, "dur": 106, - "args": { - "Device": 24572, "External id": 16, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::stack", "pid": 24572, "tid": "24572", - "ts": 1621401187223752, "dur": 245, - "args": { - "Device": 24572, "External id": 11, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187224094, "dur": 12, - "args": { - "Device": 24572, "External id": 22, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::unsqueeze", "pid": 24572, "tid": "24572", - "ts": 1621401187224074, "dur": 43, - "args": { - "Device": 24572, "External id": 21, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187224137, "dur": 6, - "args": { - "Device": 24572, "External id": 24, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::unsqueeze", "pid": 24572, "tid": "24572", - "ts": 1621401187224128, "dur": 21, - "args": { - "Device": 24572, "External id": 23, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187224184, "dur": 15, - "args": { - "Device": 24572, "External id": 27, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::resize_", "pid": 24572, "tid": "24572", - "ts": 1621401187224223, "dur": 12, - "args": { - "Device": 24572, "External id": 28, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::_cat", "pid": 24572, "tid": "24572", - "ts": 1621401187224169, "dur": 79, - "args": { - "Device": 24572, "External id": 26, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::cat", "pid": 24572, "tid": "24572", - "ts": 1621401187224159, "dur": 96, - "args": { - "Device": 24572, "External id": 25, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::stack", "pid": 24572, "tid": "24572", - "ts": 1621401187224056, "dur": 213, - "args": { - "Device": 24572, "External id": 20, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "enumerate(DataLoader)#_SingleProcessDataLoaderIter.__next__", "pid": 24572, "tid": "24572", - "ts": 1621401187223604, "dur": 725, - "args": { - "Device": 24572, "External id": 9, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187224415, "dur": 54, - "args": { - "Device": 24572, "External id": 30, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::copy_", "pid": 24572, "tid": "24572", - "ts": 1621401187224496, "dur": 80, - "args": { - "Device": 24572, "External id": 31, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::to", "pid": 24572, "tid": "24572", - "ts": 1621401187224398, "dur": 193, - "args": { - "Device": 24572, "External id": 29, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187224645, "dur": 51, - "args": { - "Device": 24572, "External id": 33, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::copy_", "pid": 24572, "tid": "24572", - "ts": 1621401187224720, "dur": 65, - "args": { - "Device": 24572, "External id": 34, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::to", "pid": 24572, "tid": "24572", - "ts": 1621401187224631, "dur": 168, - "args": { - "Device": 24572, "External id": 32, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187224956, "dur": 14, - "args": { - "Device": 24572, "External id": 38, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24572", - "ts": 1621401187224945, "dur": 37, - "args": { - "Device": 24572, "External id": 37, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24572", - "ts": 1621401187224917, "dur": 101, - "args": { - "Device": 24572, "External id": 36, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24572", - "ts": 1621401187225058, "dur": 33, - "args": { - "Device": 24572, "External id": 40, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 23 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187225181, "dur": 41, - "args": { - "Device": 24572, "External id": 42, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 24572, "tid": "24572", - "ts": 1621401187225112, "dur": 197, - "args": { - "Device": 24572, "External id": 41, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 23 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24572", - "ts": 1621401187225367, "dur": 17, - "args": { - "Device": 24572, "External id": 44, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::_unsafe_view", "pid": 24572, "tid": "24572", - "ts": 1621401187225336, "dur": 79, - "args": { - "Device": 24572, "External id": 43, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 24 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::matmul", "pid": 24572, "tid": "24572", - "ts": 1621401187225037, "dur": 394, - "args": { - "Device": 24572, "External id": 39, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 23 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24572", - "ts": 1621401187225449, "dur": 107, - "args": { - "Device": 24572, "External id": 45, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 25 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::linear", "pid": 24572, "tid": "24572", - "ts": 1621401187224907, "dur": 664, - "args": { - "Device": 24572, "External id": 35, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187225662, "dur": 25, - "args": { - "Device": 24572, "External id": 47, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::resize_", "pid": 24572, "tid": "24572", - "ts": 1621401187225746, "dur": 30, - "args": { - "Device": 24572, "External id": 50, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::clamp_min", "pid": 24572, "tid": "24572", - "ts": 1621401187225721, "dur": 105, - "args": { - "Device": 24572, "External id": 49, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::clamp", "pid": 24572, "tid": "24572", - "ts": 1621401187225709, "dur": 128, - "args": { - "Device": 24572, "External id": 48, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::clamp", "pid": 24572, "tid": "24572", - "ts": 1621401187225606, "dur": 263, - "args": { - "Device": 24572, "External id": 46, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 26 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187225978, "dur": 14, - "args": { - "Device": 24572, "External id": 54, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24572", - "ts": 1621401187225968, "dur": 36, - "args": { - "Device": 24572, "External id": 53, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24572", - "ts": 1621401187225941, "dur": 98, - "args": { - "Device": 24572, "External id": 52, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 27 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24572", - "ts": 1621401187226077, "dur": 60, - "args": { - "Device": 24572, "External id": 56, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 28 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187226233, "dur": 41, - "args": { - "Device": 24572, "External id": 58, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 24572, "tid": "24572", - "ts": 1621401187226161, "dur": 197, - "args": { - "Device": 24572, "External id": 57, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 29 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24572", - "ts": 1621401187226416, "dur": 17, - "args": { - "Device": 24572, "External id": 60, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::_unsafe_view", "pid": 24572, "tid": "24572", - "ts": 1621401187226384, "dur": 79, - "args": { - "Device": 24572, "External id": 59, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 30 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::matmul", "pid": 24572, "tid": "24572", - "ts": 1621401187226057, "dur": 422, - "args": { - "Device": 24572, "External id": 55, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 28 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24572", - "ts": 1621401187226497, "dur": 103, - "args": { - "Device": 24572, "External id": 61, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 31 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::linear", "pid": 24572, "tid": "24572", - "ts": 1621401187225932, "dur": 683, - "args": { - "Device": 24572, "External id": 51, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 27 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::broadcast_tensors", "pid": 24572, "tid": "24572", - "ts": 1621401187226708, "dur": 11, - "args": { - "Device": 24572, "External id": 62, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 32 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187226827, "dur": 41, - "args": { - "Device": 24572, "External id": 64, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187226955, "dur": 35, - "args": { - "Device": 24572, "External id": 66, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187227020, "dur": 11, - "args": { - "Device": 24572, "External id": 67, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::sum", "pid": 24572, "tid": "24572", - "ts": 1621401187226930, "dur": 176, - "args": { - "Device": 24572, "External id": 65, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mse_loss", "pid": 24572, "tid": "24572", - "ts": 1621401187226753, "dur": 445, - "args": { - "Device": 24572, "External id": 63, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 32 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187227327, "dur": 21, - "args": { - "Device": 24572, "External id": 69, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187227368, "dur": 5, - "args": { - "Device": 24572, "External id": 70, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zeros", "pid": 24572, "tid": "24572", - "ts": 1621401187227314, "dur": 65, - "args": { - "Device": 24572, "External id": 68, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187227464, "dur": 18, - "args": { - "Device": 24572, "External id": 72, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::fill_", "pid": 24572, "tid": "24572", - "ts": 1621401187227576, "dur": 49, - "args": { - "Device": 24572, "External id": 74, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187227553, "dur": 97, - "args": { - "Device": 24572, "External id": 73, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 33 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::fill_", "pid": 24572, "tid": "24572", - "ts": 1621401187227707, "dur": 43, - "args": { - "Device": 24572, "External id": 76, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187227689, "dur": 79, - "args": { - "Device": 24572, "External id": 75, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 33 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::fill_", "pid": 24572, "tid": "24572", - "ts": 1621401187227823, "dur": 42, - "args": { - "Device": 24572, "External id": 78, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187227805, "dur": 77, - "args": { - "Device": 24572, "External id": 77, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 33 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::fill_", "pid": 24572, "tid": "24572", - "ts": 1621401187227937, "dur": 41, - "args": { - "Device": 24572, "External id": 80, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187227919, "dur": 77, - "args": { - "Device": 24572, "External id": 79, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 0, "Sequence number": 33 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "Optimizer.zero_grad#SGD.zero_grad", "pid": 24572, "tid": "24572", - "ts": 1621401187227446, "dur": 606, - "args": { - "Device": 24572, "External id": 71, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty_strided", "pid": 24572, "tid": "24572", - "ts": 1621401187228150, "dur": 53, - "args": { - "Device": 24572, "External id": 83, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty_like", "pid": 24572, "tid": "24572", - "ts": 1621401187228137, "dur": 81, - "args": { - "Device": 24572, "External id": 82, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::fill_", "pid": 24572, "tid": "24572", - "ts": 1621401187228235, "dur": 50, - "args": { - "Device": 24572, "External id": 84, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::ones_like", "pid": 24572, "tid": "24572", - "ts": 1621401187228128, "dur": 169, - "args": { - "Device": 24572, "External id": 81, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187228708, "dur": 79, - "args": { - "Device": 24572, "External id": 89, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty_like", "pid": 24572, "tid": "24610", - "ts": 1621401187228680, "dur": 146, - "args": { - "Device": 24572, "External id": 88, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::fill_", "pid": 24572, "tid": "24610", - "ts": 1621401187228885, "dur": 93, - "args": { - "Device": 24572, "External id": 91, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24610", - "ts": 1621401187228858, "dur": 147, - "args": { - "Device": 24572, "External id": 90, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zeros_like", "pid": 24572, "tid": "24610", - "ts": 1621401187228647, "dur": 369, - "args": { - "Device": 24572, "External id": 87, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mse_loss_backward", "pid": 24572, "tid": "24610", - "ts": 1621401187229048, "dur": 122, - "args": { - "Device": 24572, "External id": 92, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mse_loss_backward", "pid": 24572, "tid": "24610", - "ts": 1621401187228603, "dur": 614, - "args": { - "Device": 24572, "External id": 86, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "MseLossBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187228516, "dur": 727, - "args": { - "Device": 24572, "External id": 85, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 32 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "AddBackward1", "pid": 24572, "tid": "24610", - "ts": 1621401187229384, "dur": 17, - "args": { - "Device": 24572, "External id": 93, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 31 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187229506, "dur": 73, - "args": { - "Device": 24572, "External id": 95, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::sum", "pid": 24572, "tid": "24610", - "ts": 1621401187229459, "dur": 279, - "args": { - "Device": 24572, "External id": 94, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24610", - "ts": 1621401187229788, "dur": 65, - "args": { - "Device": 24572, "External id": 96, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24610", - "ts": 1621401187230059, "dur": 131, - "args": { - "Device": 24572, "External id": 98, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "torch::autograd::AccumulateGrad", "pid": 24572, "tid": "24610", - "ts": 1621401187230028, "dur": 228, - "args": { - "Device": 24572, "External id": 97, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24610", - "ts": 1621401187230405, "dur": 61, - "args": { - "Device": 24572, "External id": 101, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::reshape", "pid": 24572, "tid": "24610", - "ts": 1621401187230383, "dur": 107, - "args": { - "Device": 24572, "External id": 100, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "UnsafeViewBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187230354, "dur": 146, - "args": { - "Device": 24572, "External id": 99, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 30 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187230751, "dur": 22, - "args": { - "Device": 24572, "External id": 105, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24610", - "ts": 1621401187230732, "dur": 65, - "args": { - "Device": 24572, "External id": 104, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24610", - "ts": 1621401187230710, "dur": 124, - "args": { - "Device": 24572, "External id": 103, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::conj", "pid": 24572, "tid": "24610", - "ts": 1621401187230862, "dur": 7, - "args": { - "Device": 24572, "External id": 106, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187230935, "dur": 73, - "args": { - "Device": 24572, "External id": 108, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 24572, "tid": "24610", - "ts": 1621401187230889, "dur": 235, - "args": { - "Device": 24572, "External id": 107, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187231211, "dur": 23, - "args": { - "Device": 24572, "External id": 111, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24610", - "ts": 1621401187231191, "dur": 69, - "args": { - "Device": 24572, "External id": 110, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24610", - "ts": 1621401187231168, "dur": 129, - "args": { - "Device": 24572, "External id": 109, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187231376, "dur": 17, - "args": { - "Device": 24572, "External id": 114, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24610", - "ts": 1621401187231360, "dur": 49, - "args": { - "Device": 24572, "External id": 113, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24610", - "ts": 1621401187231340, "dur": 100, - "args": { - "Device": 24572, "External id": 112, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::conj", "pid": 24572, "tid": "24610", - "ts": 1621401187231465, "dur": 6, - "args": { - "Device": 24572, "External id": 115, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187231534, "dur": 72, - "args": { - "Device": 24572, "External id": 117, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 24572, "tid": "24610", - "ts": 1621401187231491, "dur": 225, - "args": { - "Device": 24572, "External id": 116, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "MmBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187230626, "dur": 1124, - "args": { - "Device": 24572, "External id": 102, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 29 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24610", - "ts": 1621401187231992, "dur": 61, - "args": { - "Device": 24572, "External id": 120, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::reshape", "pid": 24572, "tid": "24610", - "ts": 1621401187231970, "dur": 108, - "args": { - "Device": 24572, "External id": 119, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "ViewBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187231941, "dur": 166, - "args": { - "Device": 24572, "External id": 118, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 28 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187232305, "dur": 21, - "args": { - "Device": 24572, "External id": 124, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24610", - "ts": 1621401187232286, "dur": 62, - "args": { - "Device": 24572, "External id": 123, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24610", - "ts": 1621401187232265, "dur": 123, - "args": { - "Device": 24572, "External id": 122, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "TBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187232239, "dur": 161, - "args": { - "Device": 24572, "External id": 121, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 27 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24610", - "ts": 1621401187232535, "dur": 85, - "args": { - "Device": 24572, "External id": 126, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "torch::autograd::AccumulateGrad", "pid": 24572, "tid": "24610", - "ts": 1621401187232515, "dur": 148, - "args": { - "Device": 24572, "External id": 125, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187232790, "dur": 47, - "args": { - "Device": 24572, "External id": 129, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::fill_", "pid": 24572, "tid": "24610", - "ts": 1621401187232866, "dur": 68, - "args": { - "Device": 24572, "External id": 130, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::scalar_tensor", "pid": 24572, "tid": "24610", - "ts": 1621401187232776, "dur": 174, - "args": { - "Device": 24572, "External id": 128, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187233023, "dur": 27, - "args": { - "Device": 24572, "External id": 132, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::_local_scalar_dense", "pid": 24572, "tid": "24610", - "ts": 1621401187233192, "dur": 6, - "args": { - "Device": 24572, "External id": 135, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::item", "pid": 24572, "tid": "24610", - "ts": 1621401187233184, "dur": 24, - "args": { - "Device": 24572, "External id": 134, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::resize_", "pid": 24572, "tid": "24610", - "ts": 1621401187233251, "dur": 41, - "args": { - "Device": 24572, "External id": 136, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::ge", "pid": 24572, "tid": "24610", - "ts": 1621401187233168, "dur": 182, - "args": { - "Device": 24572, "External id": 133, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::ge", "pid": 24572, "tid": "24610", - "ts": 1621401187232971, "dur": 404, - "args": { - "Device": 24572, "External id": 131, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187233430, "dur": 15, - "args": { - "Device": 24572, "External id": 139, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::expand", "pid": 24572, "tid": "24610", - "ts": 1621401187233414, "dur": 62, - "args": { - "Device": 24572, "External id": 138, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187233508, "dur": 10, - "args": { - "Device": 24572, "External id": 141, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::expand", "pid": 24572, "tid": "24610", - "ts": 1621401187233494, "dur": 48, - "args": { - "Device": 24572, "External id": 140, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187233571, "dur": 10, - "args": { - "Device": 24572, "External id": 143, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::expand", "pid": 24572, "tid": "24610", - "ts": 1621401187233558, "dur": 43, - "args": { - "Device": 24572, "External id": 142, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187233649, "dur": 46, - "args": { - "Device": 24572, "External id": 145, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::_s_where", "pid": 24572, "tid": "24610", - "ts": 1621401187233620, "dur": 167, - "args": { - "Device": 24572, "External id": 144, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::where", "pid": 24572, "tid": "24610", - "ts": 1621401187233398, "dur": 409, - "args": { - "Device": 24572, "External id": 137, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "ClampBackward1", "pid": 24572, "tid": "24610", - "ts": 1621401187232724, "dur": 1110, - "args": { - "Device": 24572, "External id": 127, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 26 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "AddBackward1", "pid": 24572, "tid": "24610", - "ts": 1621401187233941, "dur": 12, - "args": { - "Device": 24572, "External id": 146, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 25 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187234021, "dur": 46, - "args": { - "Device": 24572, "External id": 148, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::sum", "pid": 24572, "tid": "24610", - "ts": 1621401187233990, "dur": 182, - "args": { - "Device": 24572, "External id": 147, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24610", - "ts": 1621401187234208, "dur": 43, - "args": { - "Device": 24572, "External id": 149, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24610", - "ts": 1621401187234378, "dur": 84, - "args": { - "Device": 24572, "External id": 151, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "torch::autograd::AccumulateGrad", "pid": 24572, "tid": "24610", - "ts": 1621401187234357, "dur": 144, - "args": { - "Device": 24572, "External id": 150, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::view", "pid": 24572, "tid": "24610", - "ts": 1621401187234593, "dur": 39, - "args": { - "Device": 24572, "External id": 154, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::reshape", "pid": 24572, "tid": "24610", - "ts": 1621401187234580, "dur": 67, - "args": { - "Device": 24572, "External id": 153, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "UnsafeViewBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187234561, "dur": 92, - "args": { - "Device": 24572, "External id": 152, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 24 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187234803, "dur": 14, - "args": { - "Device": 24572, "External id": 158, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24610", - "ts": 1621401187234792, "dur": 41, - "args": { - "Device": 24572, "External id": 157, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24610", - "ts": 1621401187234778, "dur": 79, - "args": { - "Device": 24572, "External id": 156, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::conj", "pid": 24572, "tid": "24610", - "ts": 1621401187234874, "dur": 4, - "args": { - "Device": 24572, "External id": 159, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24610", - "ts": 1621401187234918, "dur": 47, - "args": { - "Device": 24572, "External id": 161, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 24572, "tid": "24610", - "ts": 1621401187234890, "dur": 149, - "args": { - "Device": 24572, "External id": 160, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187235092, "dur": 15, - "args": { - "Device": 24572, "External id": 164, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24610", - "ts": 1621401187235080, "dur": 39, - "args": { - "Device": 24572, "External id": 163, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24610", - "ts": 1621401187235067, "dur": 75, - "args": { - "Device": 24572, "External id": 162, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "MmBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187234734, "dur": 424, - "args": { - "Device": 24572, "External id": 155, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 23 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::as_strided", "pid": 24572, "tid": "24610", - "ts": 1621401187235312, "dur": 13, - "args": { - "Device": 24572, "External id": 168, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 24572, "tid": "24610", - "ts": 1621401187235301, "dur": 40, - "args": { - "Device": 24572, "External id": 167, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 24572, "tid": "24610", - "ts": 1621401187235288, "dur": 78, - "args": { - "Device": 24572, "External id": 166, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "TBackward", "pid": 24572, "tid": "24610", - "ts": 1621401187235271, "dur": 103, - "args": { - "Device": 24572, "External id": 165, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 , - "Fwd thread id": 1, "Sequence number": 22 - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24610", - "ts": 1621401187235487, "dur": 85, - "args": { - "Device": 24572, "External id": 170, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "torch::autograd::AccumulateGrad", "pid": 24572, "tid": "24610", - "ts": 1621401187235467, "dur": 147, - "args": { - "Device": 24572, "External id": 169, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187235803, "dur": 24, - "args": { - "Device": 24572, "External id": 172, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zero_", "pid": 24572, "tid": "24572", - "ts": 1621401187235850, "dur": 5, - "args": { - "Device": 24572, "External id": 173, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::zeros", "pid": 24572, "tid": "24572", - "ts": 1621401187235787, "dur": 75, - "args": { - "Device": 24572, "External id": 171, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::empty", "pid": 24572, "tid": "24572", - "ts": 1621401187235954, "dur": 20, - "args": { - "Device": 24572, "External id": 175, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24572", - "ts": 1621401187236091, "dur": 82, - "args": { - "Device": 24572, "External id": 176, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24572", - "ts": 1621401187236221, "dur": 70, - "args": { - "Device": 24572, "External id": 177, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24572", - "ts": 1621401187236334, "dur": 68, - "args": { - "Device": 24572, "External id": 178, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::add_", "pid": 24572, "tid": "24572", - "ts": 1621401187236444, "dur": 68, - "args": { - "Device": 24572, "External id": 179, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "Optimizer.step#SGD.step", "pid": 24572, "tid": "24572", - "ts": 1621401187235935, "dur": 663, - "args": { - "Device": 24572, "External id": 174, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#2", "pid": 24572, "tid": "24572", - "ts": 1621401187223358, "dur": 13410, - "args": { - "Device": 24572, "External id": 4, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - - } - }, - { - "ph": "X", "cat": "Memcpy", - "name": "Memcpy HtoD (Pageable -> Device)", "pid": 0, "tid": "stream 7", - "ts": 1621401187224556, "dur": 1, - "args": { - "device": 0, "context": 1, - "stream": 7, "correlation": 311, "external id": 31, - "bytes": 640, "memory bandwidth (GB/s)": 0.46511627906976744 - } - }, - { - "ph": "f", "id": 311, "pid": 0, "tid": "stream 7", "ts": 1621401187224556, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaMemcpyAsync", "pid": 24572, "tid": "24572", - "ts": 1621401187224533, "dur": 20, - "args": { - "cbid": 41, "correlation": 311, - "external id": 31, "external ts": 1621401187224496 - } - }, - { - "ph": "s", "id": 311, "pid": 24572, "tid": 24572, "ts": 1621401187224533, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaStreamSynchronize", "pid": 24572, "tid": "24572", - "ts": 1621401187224554, "dur": 8, - "args": { - "cbid": 131, "correlation": 312, - "external id": 31, "external ts": 1621401187224496 - } - }, - { - "ph": "X", "cat": "Memcpy", - "name": "Memcpy HtoD (Pageable -> Device)", "pid": 0, "tid": "stream 7", - "ts": 1621401187224767, "dur": 1, - "args": { - "device": 0, "context": 1, - "stream": 7, "correlation": 323, "external id": 34, - "bytes": 128, "memory bandwidth (GB/s)": 0.09523809523809523 - } - }, - { - "ph": "f", "id": 323, "pid": 0, "tid": "stream 7", "ts": 1621401187224767, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaMemcpyAsync", "pid": 24572, "tid": "24572", - "ts": 1621401187224752, "dur": 12, - "args": { - "cbid": 41, "correlation": 323, - "external id": 34, "external ts": 1621401187224720 - } - }, - { - "ph": "s", "id": 323, "pid": 24572, "tid": 24572, "ts": 1621401187224752, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaStreamSynchronize", "pid": 24572, "tid": "24572", - "ts": 1621401187224765, "dur": 7, - "args": { - "cbid": 131, "correlation": 324, - "external id": 34, "external ts": 1621401187224720 - } - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "pid": 24572, "tid": "24572", - "ts": 1621401187225253, "dur": 2, - "args": { - "cbid": 251, "correlation": 332, - "external id": 41, "external ts": 1621401187225112 - } - }, - { - "ph": "X", "cat": "Kernel", - "name": "void gemmSN_TN_kernel_64addr, cublasGemvTensorStridedBatched >(cublasGemmSmallNParams, cublasGemvTensorStridedBatched, float>)", "pid": 0, "tid": "stream 7", - "ts": 1621401187225275, "dur": 3, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 333, "external id": 41, - "registers per thread": 72, - "shared memory": 13824, - "blocks per SM": 0.025, - "warps per SM": 0.1, - "grid": [1, 2, 1], - "block": [128, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 333, "pid": 0, "tid": "stream 7", "ts": 1621401187225275, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187225258, "dur": 16, - "args": { - "cbid": 211, "correlation": 333, - "external id": 41, "external ts": 1621401187225112 - } - }, - { - "ph": "s", "id": 333, "pid": 24572, "tid": 24572, "ts": 1621401187225258, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::unrolled_elementwise_kernel, at::detail::Array, OffsetCalculator<2, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast>(int, at::native::AddFunctor, at::detail::Array, OffsetCalculator<2, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast)", "pid": 0, "tid": "stream 7", - "ts": 1621401187225530, "dur": 2, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 338, "external id": 45, - "registers per thread": 22, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 338, "pid": 0, "tid": "stream 7", "ts": 1621401187225530, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187225512, "dur": 16, - "args": { - "cbid": 211, "correlation": 338, - "external id": 45, "external ts": 1621401187225449 - } - }, - { - "ph": "s", "id": 338, "pid": 24572, "tid": 24572, "ts": 1621401187225512, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::(anonymous namespace)::clamp_min_scalar_kernel_impl(at::TensorIterator&, c10::Scalar)::{lambda()#1}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array >(int, at::native::(anonymous namespace)::clamp_min_scalar_kernel_impl(at::TensorIterator&, c10::Scalar)::{lambda()#1}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187225820, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 352, "external id": 49, - "registers per thread": 18, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 352, "pid": 0, "tid": "stream 7", "ts": 1621401187225820, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187225803, "dur": 15, - "args": { - "cbid": 211, "correlation": 352, - "external id": 49, "external ts": 1621401187225721 - } - }, - { - "ph": "s", "id": 352, "pid": 24572, "tid": 24572, "ts": 1621401187225803, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "pid": 24572, "tid": "24572", - "ts": 1621401187226305, "dur": 2, - "args": { - "cbid": 251, "correlation": 363, - "external id": 57, "external ts": 1621401187226161 - } - }, - { - "ph": "X", "cat": "Kernel", - "name": "void gemmSN_TN_kernel_64addr, cublasGemvTensorStridedBatched >(cublasGemmSmallNParams, cublasGemvTensorStridedBatched, float>)", "pid": 0, "tid": "stream 7", - "ts": 1621401187226325, "dur": 2, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 364, "external id": 57, - "registers per thread": 72, - "shared memory": 13824, - "blocks per SM": 0.025, - "warps per SM": 0.1, - "grid": [1, 2, 1], - "block": [128, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 364, "pid": 0, "tid": "stream 7", "ts": 1621401187226325, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187226309, "dur": 15, - "args": { - "cbid": 211, "correlation": 364, - "external id": 57, "external ts": 1621401187226161 - } - }, - { - "ph": "s", "id": 364, "pid": 24572, "tid": 24572, "ts": 1621401187226309, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::unrolled_elementwise_kernel, at::detail::Array, OffsetCalculator<2, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast>(int, at::native::AddFunctor, at::detail::Array, OffsetCalculator<2, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast)", "pid": 0, "tid": "stream 7", - "ts": 1621401187226575, "dur": 2, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 369, "external id": 61, - "registers per thread": 22, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 369, "pid": 0, "tid": "stream 7", "ts": 1621401187226575, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187226558, "dur": 15, - "args": { - "cbid": 211, "correlation": 369, - "external id": 61, "external ts": 1621401187226497 - } - }, - { - "ph": "s", "id": 369, "pid": 24572, "tid": 24572, "ts": 1621401187226558, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::mse_kernel_cuda(at::TensorIterator&)::{lambda()#1}::operator()() const::{lambda()#4}::operator()() const::{lambda(float, float)#1}, at::detail::Array >(int, at::native::mse_kernel_cuda(at::TensorIterator&)::{lambda()#1}::operator()() const::{lambda()#4}::operator()() const::{lambda(float, float)#1}, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187226912, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 377, "external id": 63, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 377, "pid": 0, "tid": "stream 7", "ts": 1621401187226912, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187226895, "dur": 16, - "args": { - "cbid": 211, "correlation": 377, - "external id": 63, "external ts": 1621401187226753 - } - }, - { - "ph": "s", "id": 377, "pid": 24572, "tid": 24572, "ts": 1621401187226895, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::reduce_kernel<512, 1, at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4> >(at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4>)", "pid": 0, "tid": "stream 7", - "ts": 1621401187227092, "dur": 2, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 388, "external id": 65, - "registers per thread": 32, - "shared memory": 16, - "blocks per SM": 0.0125, - "warps per SM": 0.0125, - "grid": [1, 1, 1], - "block": [32, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 388, "pid": 0, "tid": "stream 7", "ts": 1621401187227092, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187227075, "dur": 15, - "args": { - "cbid": 211, "correlation": 388, - "external id": 65, "external ts": 1621401187226930 - } - }, - { - "ph": "s", "id": 388, "pid": 24572, "tid": 24572, "ts": 1621401187227075, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187227619, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 395, "external id": 74, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 395, "pid": 0, "tid": "stream 7", "ts": 1621401187227619, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187227601, "dur": 16, - "args": { - "cbid": 211, "correlation": 395, - "external id": 74, "external ts": 1621401187227576 - } - }, - { - "ph": "s", "id": 395, "pid": 24572, "tid": 24572, "ts": 1621401187227601, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187227745, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 402, "external id": 76, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 402, "pid": 0, "tid": "stream 7", "ts": 1621401187227745, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187227729, "dur": 14, - "args": { - "cbid": 211, "correlation": 402, - "external id": 76, "external ts": 1621401187227707 - } - }, - { - "ph": "s", "id": 402, "pid": 24572, "tid": 24572, "ts": 1621401187227729, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187227859, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 409, "external id": 78, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 409, "pid": 0, "tid": "stream 7", "ts": 1621401187227859, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187227844, "dur": 13, - "args": { - "cbid": 211, "correlation": 409, - "external id": 78, "external ts": 1621401187227823 - } - }, - { - "ph": "s", "id": 409, "pid": 24572, "tid": 24572, "ts": 1621401187227844, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187227973, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 416, "external id": 80, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 416, "pid": 0, "tid": "stream 7", "ts": 1621401187227973, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187227958, "dur": 13, - "args": { - "cbid": 211, "correlation": 416, - "external id": 80, "external ts": 1621401187227937 - } - }, - { - "ph": "s", "id": 416, "pid": 24572, "tid": 24572, "ts": 1621401187227958, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187228279, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 429, "external id": 84, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 429, "pid": 0, "tid": "stream 7", "ts": 1621401187228279, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187228262, "dur": 15, - "args": { - "cbid": 211, "correlation": 429, - "external id": 84, "external ts": 1621401187228235 - } - }, - { - "ph": "s", "id": 429, "pid": 24572, "tid": 24572, "ts": 1621401187228262, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187228962, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 440, "external id": 91, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 440, "pid": 0, "tid": "stream 7", "ts": 1621401187228962, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187228932, "dur": 30, - "args": { - "cbid": 211, "correlation": 440, - "external id": 91, "external ts": 1621401187228885 - } - }, - { - "ph": "s", "id": 440, "pid": 24572, "tid": 24610, "ts": 1621401187228932, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::unrolled_elementwise_kernel, OffsetCalculator<3, unsigned int>, at::detail::Array<1, unsigned int>, at::native::memory::LoadWithoutCast, OffsetCalculator::StoreWithoutCast>(int, at::native::mse_backward_cuda_kernel(at::TensorIterator&, c10::Scalar const&)::{lambda()#1}::operator()() const::{lambda()#4}::operator()() const::{lambda(float, float, float)#1}, at::detail::Array, OffsetCalculator<3, unsigned int>, at::detail::Array<1, unsigned int>, at::native::memory::LoadWithoutCast, OffsetCalculator::StoreWithoutCast)", "pid": 0, "tid": "stream 7", - "ts": 1621401187229153, "dur": 2, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 446, "external id": 92, - "registers per thread": 28, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 446, "pid": 0, "tid": "stream 7", "ts": 1621401187229153, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187229127, "dur": 26, - "args": { - "cbid": 211, "correlation": 446, - "external id": 92, "external ts": 1621401187229048 - } - }, - { - "ph": "s", "id": 446, "pid": 24572, "tid": 24610, "ts": 1621401187229127, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::reduce_kernel<256, 2, at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4> >(at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4>)", "pid": 0, "tid": "stream 7", - "ts": 1621401187229711, "dur": 4, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 460, "external id": 94, - "registers per thread": 35, - "shared memory": 16, - "blocks per SM": 0.0125, - "warps per SM": 0.00625, - "grid": [1, 1, 1], - "block": [1, 16, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 460, "pid": 0, "tid": "stream 7", "ts": 1621401187229711, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187229681, "dur": 30, - "args": { - "cbid": 211, "correlation": 460, - "external id": 94, "external ts": 1621401187229459 - } - }, - { - "ph": "s", "id": 460, "pid": 24572, "tid": 24610, "ts": 1621401187229681, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187230162, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 467, "external id": 98, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 467, "pid": 0, "tid": "stream 7", "ts": 1621401187230162, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187230133, "dur": 29, - "args": { - "cbid": 211, "correlation": 467, - "external id": 98, "external ts": 1621401187230059 - } - }, - { - "ph": "s", "id": 467, "pid": 24572, "tid": 24610, "ts": 1621401187230133, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "pid": 24572, "tid": "24610", - "ts": 1621401187231063, "dur": 4, - "args": { - "cbid": 251, "correlation": 480, - "external id": 107, "external ts": 1621401187230889 - } - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "pid": 24572, "tid": "24610", - "ts": 1621401187231069, "dur": 1, - "args": { - "cbid": 251, "correlation": 481, - "external id": 107, "external ts": 1621401187230889 - } - }, - { - "ph": "X", "cat": "Kernel", - "name": "volta_sgemm_128x32_nt", "pid": 0, "tid": "stream 7", - "ts": 1621401187231100, "dur": 3, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 482, "external id": 107, - "registers per thread": 55, - "shared memory": 16384, - "blocks per SM": 0.0125, - "warps per SM": 0.1, - "grid": [1, 1, 1], - "block": [256, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 482, "pid": 0, "tid": "stream 7", "ts": 1621401187231100, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187231073, "dur": 27, - "args": { - "cbid": 211, "correlation": 482, - "external id": 107, "external ts": 1621401187230889 - } - }, - { - "ph": "s", "id": 482, "pid": 24572, "tid": 24610, "ts": 1621401187231073, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "pid": 24572, "tid": "24610", - "ts": 1621401187231658, "dur": 3, - "args": { - "cbid": 251, "correlation": 491, - "external id": 116, "external ts": 1621401187231491 - } - }, - { - "ph": "X", "cat": "Kernel", - "name": "void gemmSN_NN_kernel, cublasGemvTensorStridedBatched >(cublasGemmSmallNParams, cublasGemvTensorStridedBatched, float>)", "pid": 0, "tid": "stream 7", - "ts": 1621401187231692, "dur": 2, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 492, "external id": 116, - "registers per thread": 64, - "shared memory": 12288, - "blocks per SM": 0.05, - "warps per SM": 0.4, - "grid": [1, 4, 1], - "block": [256, 1, 1], - "theoretical occupancy %": 1 - } - }, - { - "ph": "f", "id": 492, "pid": 0, "tid": "stream 7", "ts": 1621401187231692, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187231665, "dur": 27, - "args": { - "cbid": 211, "correlation": 492, - "external id": 116, "external ts": 1621401187231491 - } - }, - { - "ph": "s", "id": 492, "pid": 24572, "tid": 24610, "ts": 1621401187231665, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187232603, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 503, "external id": 126, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 503, "pid": 0, "tid": "stream 7", "ts": 1621401187232603, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187232583, "dur": 19, - "args": { - "cbid": 211, "correlation": 503, - "external id": 126, "external ts": 1621401187232535 - } - }, - { - "ph": "s", "id": 503, "pid": 24572, "tid": 24610, "ts": 1621401187232583, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187232921, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 513, "external id": 130, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 513, "pid": 0, "tid": "stream 7", "ts": 1621401187232921, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187232901, "dur": 19, - "args": { - "cbid": 211, "correlation": 513, - "external id": 130, "external ts": 1621401187232866 - } - }, - { - "ph": "s", "id": 513, "pid": 24572, "tid": 24610, "ts": 1621401187232901, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::BUnaryFunctor >, at::detail::Array >(int, at::native::BUnaryFunctor >, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187233342, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 526, "external id": 133, - "registers per thread": 16, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 526, "pid": 0, "tid": "stream 7", "ts": 1621401187233342, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187233323, "dur": 18, - "args": { - "cbid": 211, "correlation": 526, - "external id": 133, "external ts": 1621401187233168 - } - }, - { - "ph": "s", "id": 526, "pid": 24572, "tid": 24610, "ts": 1621401187233323, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::unrolled_elementwise_kernel, OffsetCalculator<3, unsigned int>, at::detail::Array<1, unsigned int>, at::native::memory::LoadWithoutCast, OffsetCalculator::StoreWithoutCast>(int, at::native::(anonymous namespace)::where_kernel_impl(at::TensorIterator&, c10::ScalarType)::{lambda()#1}::operator()() const::{lambda()#8}::operator()() const::{lambda(bool, float, float)#1}, at::detail::Array, OffsetCalculator<3, unsigned int>, at::detail::Array<1, unsigned int>, at::native::memory::LoadWithoutCast, OffsetCalculator::StoreWithoutCast)", "pid": 0, "tid": "stream 7", - "ts": 1621401187233770, "dur": 2, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 535, "external id": 144, - "registers per thread": 26, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 535, "pid": 0, "tid": "stream 7", "ts": 1621401187233770, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187233751, "dur": 19, - "args": { - "cbid": 211, "correlation": 535, - "external id": 144, "external ts": 1621401187233620 - } - }, - { - "ph": "s", "id": 535, "pid": 24572, "tid": 24610, "ts": 1621401187233751, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::reduce_kernel<512, 1, at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4> >(at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4>)", "pid": 0, "tid": "stream 7", - "ts": 1621401187234156, "dur": 3, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 548, "external id": 147, - "registers per thread": 32, - "shared memory": 16, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [4, 16, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 548, "pid": 0, "tid": "stream 7", "ts": 1621401187234156, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187234135, "dur": 19, - "args": { - "cbid": 211, "correlation": 548, - "external id": 147, "external ts": 1621401187233990 - } - }, - { - "ph": "s", "id": 548, "pid": 24572, "tid": 24610, "ts": 1621401187234135, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187234445, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 555, "external id": 151, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 555, "pid": 0, "tid": "stream 7", "ts": 1621401187234445, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187234425, "dur": 19, - "args": { - "cbid": 211, "correlation": 555, - "external id": 151, "external ts": 1621401187234378 - } - }, - { - "ph": "s", "id": 555, "pid": 24572, "tid": 24610, "ts": 1621401187234425, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "pid": 24572, "tid": "24610", - "ts": 1621401187235000, "dur": 2, - "args": { - "cbid": 251, "correlation": 568, - "external id": 160, "external ts": 1621401187234890 - } - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "pid": 24572, "tid": "24610", - "ts": 1621401187235004, "dur": 0, - "args": { - "cbid": 251, "correlation": 569, - "external id": 160, "external ts": 1621401187234890 - } - }, - { - "ph": "X", "cat": "Kernel", - "name": "volta_sgemm_128x32_nt", "pid": 0, "tid": "stream 7", - "ts": 1621401187235025, "dur": 3, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 570, "external id": 160, - "registers per thread": 55, - "shared memory": 16384, - "blocks per SM": 0.0125, - "warps per SM": 0.1, - "grid": [1, 1, 1], - "block": [256, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 570, "pid": 0, "tid": "stream 7", "ts": 1621401187235025, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187235006, "dur": 17, - "args": { - "cbid": 211, "correlation": 570, - "external id": 160, "external ts": 1621401187234890 - } - }, - { - "ph": "s", "id": 570, "pid": 24572, "tid": 24610, "ts": 1621401187235006, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187235555, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 579, "external id": 170, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 579, "pid": 0, "tid": "stream 7", "ts": 1621401187235555, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24610", - "ts": 1621401187235535, "dur": 19, - "args": { - "cbid": 211, "correlation": 579, - "external id": 170, "external ts": 1621401187235487 - } - }, - { - "ph": "s", "id": 579, "pid": 24572, "tid": 24610, "ts": 1621401187235535, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187236158, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 585, "external id": 176, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 585, "pid": 0, "tid": "stream 7", "ts": 1621401187236158, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187236138, "dur": 18, - "args": { - "cbid": 211, "correlation": 585, - "external id": 176, "external ts": 1621401187236091 - } - }, - { - "ph": "s", "id": 585, "pid": 24572, "tid": 24572, "ts": 1621401187236138, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187236278, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 590, "external id": 177, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 590, "pid": 0, "tid": "stream 7", "ts": 1621401187236278, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187236261, "dur": 15, - "args": { - "cbid": 211, "correlation": 590, - "external id": 177, "external ts": 1621401187236221 - } - }, - { - "ph": "s", "id": 590, "pid": 24572, "tid": 24572, "ts": 1621401187236261, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187236390, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 595, "external id": 178, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 595, "pid": 0, "tid": "stream 7", "ts": 1621401187236390, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187236373, "dur": 15, - "args": { - "cbid": 211, "correlation": 595, - "external id": 178, "external ts": 1621401187236334 - } - }, - { - "ph": "s", "id": 595, "pid": 24572, "tid": 24572, "ts": 1621401187236373, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "pid": 0, "tid": "stream 7", - "ts": 1621401187236501, "dur": 1, - "args": { - "queued": 0, "device": 0, "context": 1, - "stream": 7, "correlation": 600, "external id": 179, - "registers per thread": 20, - "shared memory": 0, - "blocks per SM": 0.0125, - "warps per SM": 0.025, - "grid": [1, 1, 1], - "block": [64, 1, 1], - "theoretical occupancy %": 0 - } - }, - { - "ph": "f", "id": 600, "pid": 0, "tid": "stream 7", "ts": 1621401187236501, - "cat": "async", "name": "launch", "bp": "e" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 24572, "tid": "24572", - "ts": 1621401187236483, "dur": 15, - "args": { - "cbid": 211, "correlation": 600, - "external id": 179, "external ts": 1621401187236444 - } - }, - { - "ph": "s", "id": 600, "pid": 24572, "tid": 24572, "ts": 1621401187236483, - "cat": "async", "name": "launch" - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaDeviceSynchronize", "pid": 24572, "tid": "24572", - "ts": 1621401187236853, "dur": 10, - "args": { - "cbid": 165, "correlation": 605, - "external id": 0, "external ts": 0 - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 24572, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 24572, "tid": 0, - "args": { - "labels": "CPU" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 0, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 0, "tid": 0, - "args": { - "labels": "GPU 0" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 1, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 1, "tid": 0, - "args": { - "labels": "GPU 1" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 2, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 2, "tid": 0, - "args": { - "labels": "GPU 2" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 3, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 3, "tid": 0, - "args": { - "labels": "GPU 3" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 4, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 4, "tid": 0, - "args": { - "labels": "GPU 4" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 5, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 5, "tid": 0, - "args": { - "labels": "GPU 5" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 6, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 6, "tid": 0, - "args": { - "labels": "GPU 6" - } - }, - { - "name": "process_name", "ph": "M", "ts": 1621401187223005, "pid": 7, "tid": 0, - "args": { - "name": "python" - } - }, - { - "name": "process_labels", "ph": "M", "ts": 1621401187223005, "pid": 7, "tid": 0, - "args": { - "labels": "GPU 7" - } - }, - { - "name": "thread_name", "ph": "M", "ts": 1621401187223005, "pid": 24572, "tid": "24610", - "args": { - "name": "thread 24610 (python)" - } - }, - { - "name": "thread_name", "ph": "M", "ts": 1621401187223005, "pid": 24572, "tid": "24572", - "args": { - "name": "thread 24572 (python)" - } - }, - { - "ph": "X", "cat": "Trace", "ts": 1621401187223005, "dur": 13896, - "pid": "Traces", "tid": "PyTorch Profiler", - "name": "PyTorch Profiler (0)", - "args": { - "Op count": 0 - } - }, - { - "name": "Iteration Start: PyTorch Profiler", "ph": "i", "s": "g", - "pid": "Traces", "tid": "Trace PyTorch Profiler", "ts": 1621401187223005 - }, - { - "name": "Record Window End", "ph": "i", "s": "g", - "pid": "", "tid": "", "ts": 1621401187237108 - } -]} \ No newline at end of file diff --git a/plugins/tensorboard-plugins/tb_plugin/test/resources/resnet50_num_workers_0/worker0.1623143089861.pt.trace.json.gz b/plugins/tensorboard-plugins/tb_plugin/test/resources/resnet50_num_workers_0/worker0.1623143089861.pt.trace.json.gz deleted file mode 100644 index 769c3eb7843639ac114d183e07304b6d44931452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1159569 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

yv^@Uoor+mi^KyhC7Ad$^`Obc7B{ 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

#?=iXGp=YZniJ5q%~@{ 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

kLr-8h(CK7WAV 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

UwOE!nG|ij6}M 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%0A5Oubm{ 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 NYXT7gPHsom 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ℑ+5oDb&>PG5r`fUDLtCD85POrK{!JJK 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 SG8T$IC5&eHtvuk$4EsNfa0W>L diff --git a/plugins/tensorboard-plugins/tb_plugin/test/resources/resnet50_num_workers_0/worker0.1623143566756.pt.trace.json.gz b/plugins/tensorboard-plugins/tb_plugin/test/resources/resnet50_num_workers_0/worker0.1623143566756.pt.trace.json.gz deleted file mode 100644 index 383a066433725823a57b0dfd047d718b65d4741b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160275 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
+NXbhaWS`Dfr`Mome~&S1(RKyF5aa*04663{CL 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∨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

6FZFtGO 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

d(W+U-K!)mCNez# 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

    Xi<6Pom& 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%0ATtbfk=Fq3( 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%0AWlpYj`-dhgoILB@79>VRR8)FB?<&pL;xW*nFf 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�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�YWta%V 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�=)N7g=cGl$}5xt88i&OW6_IT5WJ_v-46 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%0AZ2x81aY|1VErLZ#BGGonn~TL7PB^HZLO$ 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


    Urr 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
    Fml>JnF?v~+2j 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

    9cEzK@%e#*~leDW4WZ2 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

    6ECYIF(IKo2o*@9@(yX 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

    x}$t+s07NoIHYL(=b-7-iR>O+;(mz``e7 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 Pmslieo|#DXn>haiLZ`z4 diff --git a/plugins/tensorboard-plugins/tb_plugin/test/resources/resnet50_num_workers_4/worker0.1623212756351.pt.trace.json.gz b/plugins/tensorboard-plugins/tb_plugin/test/resources/resnet50_num_workers_4/worker0.1623212756351.pt.trace.json.gz deleted file mode 100644 index 234cf25df597fb99765ee2a49978f5f3c4bbbaf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1095617 zcma%ibwE^W_ce`xgoKoY64D*gT?&HIHGs&_-9v+bf=ai9lpv{eBS;V3-ObRQ-@$v$ zd++=E{ylRTp7WeFd+oLMdMJW#+!zqA*M~!Nwze}jvSVXm=i%VwVCUfF=HcXKXR&c$ zaj-KmG-5Hcx3+@YxPV#fwuMi<@=UHvwOIDoY+2{r(ty|_Ilelfq25&`Gs9h#OTVJ|d##|kFoy-P` zctDPpbM#m)&jwo*hbgA6R;@h?t+A$Ss!w63lY?Ft$FsvZA;|>=!pv85UQE+hvw>Gf zhx5C7I(jVAoYtPl{b#{?`O&Ob`_uWtlRD?y(|PPyn_E}2SC=2WmM2BdCzGSSu1*@4 zgA=^UPqw=Wd9Pd!I(GF=^&hh3BPC2tT$yeOpYN{6bgN&v?1+fC>s&^hXL_ukUckzr zjb3LRO%zwKZi)gH7Lf~JAzsdVvy*yQUY7F>3HPryDe5NNYcCJx1D(~Ag(okGyI$;W zx42iI#$CeGOD9hWx}POn!7l2qF6QP7t{g530`IyVZ3lXs?lraKbQrlWDBc{DK3dwT zJ6j6LYf9MOZmGW7?GU-Ji`{rOCAb%O8KWnnS66pMF?nfy>1Cbd$`E~~@|m}HHXG{7 zfTbukqrBt7Kq?ZoIImb1zjrd}>&n9ge~U$!qV|$C zm`T?i$!sE)} zEW*NWN^|)U8jGqu(e`3YW2^i5X|k^S`N=kga5bNoSI%3Q;-$#tvHQW!MN=oX9^vVQ z*U>Z<)#>cz)}h|j>9nxB`_VGRZPkmI^@N;8y~}kk+lv#ncLEpOB7*1LSN&&;2Pd;z z1=h=ZUgsgnQ|H^Tt;NRV%lW3xPV8i1y$RtWk&EMH>^hx`@8N- z^APndue1Gmz5HoCkIU`(&I6IF<8?g|;C;JYZS935M<-uydFo!a5Q^w|obK$+797tv z#dK46Ub@(x%opfgc}%sz0OxD@~8AX zsy&aA3q(9>&&tY@H@&VV1F?C_^se@|(We@G&T22#2V1bMS!u(!00YOFl_*1DIU-0Tyz z<{gzc%rYmL+Ki%q}Z3#SLDFRjbz8T@!iVelo6)cY3~u`kshHq}Do z4{J52&cK~kC3fe{7V~9~TT${Vok+H!%FAXgU9Q%XC&X%#|iHz*D z7Mc`cxh^&EZ$znjOa@Li8C`3|SI9*%B|8GI_KrFzgr`ACm)oI9yNc=^+WVJq9fidLExr`RuX!I7(EvX0l6Pom(a_NI-#2yo7P9}%&>2Mek8*C)Q^!+onQ(ba^8$76yz$_S47ps{)Gh0* zv&a0C>MehSRBt+im*F_`kKbL^h+tn3PfnTw>+wKEDE>2wS*Gw zox!*Kxkj?md^^uQmUz{vbsnX$o~`0$KkjP&-IBFO9WQR}mWxsK$g;gTjB3%PVy;{8 zuOQnk|8jp@4nG;`Yq>eyr0WEh>jdzO_b`})5GJ@!FX4EB8>rdjxFVd0Cl8w+;7%@O zJmz1pMbw9j)$yi(WyQ)Clt=wGt_2p_f=S{d?Q2?GCb)^LJ?Ma19@c^>3IC)Ir^Ms6 z+j|Vt@(rO77GP1jqJ*{%y?9H9&10vTMSkfruVtM$>C;ThpW$e}=_JgL=nmN9g+l91>5KvN)^1clo}0(^pp7>TPO4#FNtGye3E_Xqmm6 zyX7(5YgM281+6I2Uxo+J!LwUcSp<)vG4HPU3R(d>e@li?%D`$Jah0;IQAzagrH4ah zj|O)G$u0*6>rT#$j;~Ifj;{{AJkCM_V@~RXtD&&zix2*Ht}Z>*G|1vVXJfj4aRWKH zk9@Hb>|&{Pzuewy3GSfS(u-;|54R}yNX(yN^?I}D5r4Kh*5Kld3W~43*gu&+SRABz zglE{wd_ldP@7b7ZF@e_@)$&2Gnjy$Pi->)K?X-c|c}^VgNOcplol@PLNg^!E~q z53ZI_mm6S#jS_B4+EmH&jj*LgLT5#@iyHd9Axe~R?^~}Gs!`Ys)ZTR2cW;es5qBSq zXOw%CJL34*%P)*_BJ)EZ*24QFdp*x+D!R8v$;UWfUnMa2)>Fm7TA^;pe{6A-@2Tfk z=puHJ9q_cJ1S1bA-s@DeG*(>>GcGaYak0KElM5=s=l0i@(rrz?kLo^EceS(0e7rxu zTXzN9oGix#-MQR>)wv%ZpEb2~+%--&_8Pc*hjTS>!lU+$daMhnm`j=b^!U1-XASXA znrGEzv0!tfVujXQPiIEhcH@Mu;MID{(p9-qSzN=sh1~tk@uc28vAIdafamh&=j{%- zK}B8FEu~}Lh%;~xEY&WD6mgShn;na1M`c^P zfeEZ-7$MFLh3O&&9D+K~$|s)S`#Tfah)VD(P8dYS~)u`8ABX&L%m2TkC7*L!RcOo3e;~;Cq%- z&-s=Xz1U$q9QdGF)mT;5_7nm-tW9Zm&wD z?rM7{W}J{=fsDl?B%`~{0Rn@RCQO4fLg~PYXZ@!;+G@h_tr^Eh4j6{?gG(g?;I{pq8`Js|@tvejQ z_gk{GdH>IWK0U{<(=}&umd}>19MFj|uJt(qGDbE895|#wQ5Thp>XX%b{W^TKh)y#M z$oIT&+*2gP#R+RWK-qGlveePVl7zb@`c+U8f2-2@)>&&gDsT(s9G|4pnHK2D<9JVY zv~M?fe|&eyzh`nwZnRD@$~lUiGh=O4RT{n93+b_UMB?nic<#q7ciZH}lOu}S^Sw@j z6Ei>Ro8lSc^e%1}m%D4&v?=1_T}X}9=840?FX8D#(L)i^$tBh>(*nRaxs}dJnOvgC zV9mYUXa_iaIAqaPl!2;*U_DQdvkvZpudE3pklQj~L6c6zDMdZ)8R65*hYvpIlTT%a zsPpPc*Nqc)gq*;fq&KIm%Or4-Lsz)7&Gc#tP?dd$mzYV18GJBUu_A{A!SHCJ4PBvZ zx#RPlgy4b}tufFS4sEWC!7dI;xEqCd2-Qm(v(5T*F~K5Jmz8%+Cl<%23xH+?CrwxF z;QrL6fh!byCJQ=H5|}v0HZ})r?ymy$vxl?#^Dg*={Shsg@ zmTVm(iZ1X%6)E=t%tUWGWP!VWFU_aL@LeA4;{*p{&FYqo}hbzKAaf zdFXIF>!#A1D!}~B4)_d3pP$Yue8jjxSym|KGf~A6#>~QtH(LK_pK03(q0+}{#}A>B zdmzBEa3Vrp4$S+BBS#rgBcJ$|eg$yyOQIqCb)`C1zLB{aJ@qpfxfg>rF{Kta*88*p1$ixJCygSqRk$al zmT1laAED@@N$FrOqXUvw>WwEoxCVZ{(OLG3Dq-2yhXEvuXq3oI~eqEV{3Pv z(xnMd3sQ9r%lHg>j<%o%hZL$kk|Mf!Yk_>J*k#YZ!)!c1g1J80T)Ow&R)RLV9QJN?fRUpb_mBs#LEX7Hs)12;;p43X_KD$ID`=70x%+2QXZ15GQtQ{ev7mbbX zO`({WspMEUIo^BBrYyZ+oxSQ^=y@l9$3FUpJ0>AB>|$;yLb!R|sAd@br`74WO6ei(?Tk_`9$BJbPaJ?&FZ-vmY zzaUnxbC(Lv9{6G?cfI>dM94vLlkF^xzjhIrrWYgHuf7&H9_|cy6&pF9L@6SBgnJNb zPJ1>D{N`2DwThC~DXYzozS6yX1#GAMfa@?8Zqz2;D^tybyF20vjzTRGE3HY}NMyHo z=vG=Q)?|}WADKjBqNy*vS3J zG)KsC~$>I*-Ny=h4&lV}!co>w7N zc$1U2wTq*nK@N3|%2i&8A}d5tV*mYG1D9k$RHPeneq*X`_v>{d1D}+Y8GIxu0AF-k zOud2hsQtJ#u{hd!;!ET*;3$UN`^aZUl1C7K)KHXk8Mjn*L*8z1`@)a_8_a$(HyEur z@&~+%wk7paHWL&@4W@Xi;&wco3H^NNE1ev?cYrtAyfuVh6FaA^{y0A_CL!wm+K^=x zqLbgGKJN(g5P`=RN2~GedL}v>wm#&lFW055iaRpMvA&xB^AQ;Il%HtzC&u{l4vY?M zY|d6@;bIZ5F_wROX$Yr)VJns`IZ60NEaP(|eHIHP?+TRI5F060S{kj)_*ng9O@)2x zH%%VPcq0Xv^!nG^dhsx~H*m2eq)1wC;6?EanokZbXUz>hGX$w8NDOpA0Lq?3o{V8B zM^6>W<)&K%B|a1Bzj@0Hf%}#KZ5Gwg*EL+B%egjY9!~`_ ziy%rpH82mW)5z>tPa~~v9QZzJ94uogLD>l4YvUIlD$6vhQ(iEatMhqM_&bKu^k98X zw@?bD5z@5S;;-?_#h|W@iEE-Ix5B{TF2qfxbymXRo&>vEDRqJB^y5b!J4cU33_Y?7 z^Y&g79nrKUMqsc|!cht%mv1R{lz0P+)<_ud1igd~J@*822zI51s(kYEO=lp+r&di* zx1x>{)NYhw)-B?G-OM&<2mUN#f%!gs4h1<%g@Z0DoxGq~%&zsotoYTtI~eNdAIil1 z)v3Hu7Q;m7=(?LxB0cwXy5id`DT)f5VjV{VH$6z`?9@zN1fY@Pb8QIfa9bWQ-_(ec zNiKYbNPi>7!QmYN_FWwS1G8fVs#%=rYcn7R5VKlQ5SBgx13sE@6W@(+U{gY!7QNQw zEt~JWXX7?eGiH1j%0)Sw`v6r8mxt~~cmO{P%m1@a@y;ShxO2@0*}t#;Wf1}e{=<=! z6eR(5I^%fDSH`84=w~L5$o>e&DN17~$o^wh;>f8=P?j$S5a|c_580@?(A|~j0LBtG zRm!@X)KH2)htMXhD7OdmO+k}r*R;j;r3JQ;i(9(QZ><1@gl1fP>nleYuL=QeSg4#& z3P0niI4#g!aAbEC*oW#kCErtsXf=s*rK%OZcQ=fZmHO#s3T4E ztFxSJx%>e#G+g_ppZrq>(1*mCY9K;c}FJx->?C4swudJb^??%SZCgRKl{LsRShos8zhk@zuFrnTP9$mr z)cY?7D%=$H+p|j@%y%_)y2JKo*mMfJ&7L1aH_uP9Fpxx9)hXcsh`*R+i4?Pxns*KVpYJqErMYE}vz@DHU% zA3xy~yK|EZM8P76YfZ zK=091wWD;z5ly&|Ku8T5dC_FK`ouHLa&->68Bg%T{*{}9WxT^)70<+lO1TE1Tv&>n zROf;99T86vDM5Gnyj_4TnM38Ci9HV{Ixv+tP9>3;ZB0e)pj5-A1fc)T~m zXbcmEgHA+q`vf^VX}`FV{NP_EfPYuCl)1a#WYwn=v!Ox(T4tLTfZBH`??btoibGhi zzL78D62u@$em$od=JYP}J~qMCF` zG3n)bc57r<8c!c+YrHQMbX9m|P42JR3Lsk-OzVLzzTn};$OTjxly)m}PTtU?r^dmP zdhHtvwA5cE6KReppR5XnF(t=`BISod_r+d>ipo;IMH5H3I~o?cUy*k9PMhS)W88PR zT^7Vzc+jtI?*R0Hl8BjabRpM$AOyaqXZFpey~!~CAe%ug$OdgiP4w^0(A7vgli!TA zoauvP+`y7$rhua?0gCuQ4qsZ#lLyNQYbbaxIr)p4dAb=o_zTas$64!olr)Iha{Jx< z;XeCqn7!`x%g!r~Hh-ODtZGPRs)iD@?u|$XFhxqaPS9R(p|8in`IqO%!a;?iHaK?x za;6#3uUX$m-;aVIlUU`q=hA|^GX#b4?BFjCo+2Lu?fQ&f86$*DC1sG6nahEqypJO% z!8Wj1)XV|*=2I%5nv;ZO7PqLFNN}$aQjI^XayKY_(NSbkXw&6$e1jbCE9x9o?=6p% zayGKw80=0&$_L;!8&LPFbtzq+q?LO7eW2+}xeqz-K}ACy#uhprX~!==d}E{*)c|>F zgW|aYaYX?He&ah(Gfk$Kkt!voYxgIE>ux3{C*TaneDgbVGUiQfb2b+|o2xUk5+$uogaNifS3T>x2l=RMrdS|Mpp z@;w+U{#d|=?vHLVL#MbMYi4kJ^1N?|0-_3jvT9obJ4(_f*O*5-i&4r()a(QfE*mKD z>7Wkm$uR&`ZmZ3HGU|Kl&vxC_G@}K)&*Ao^9GLjg8L0veAdBcGsAGdfsWKE=nI8;G zOR|gFKk2{BC&5Yq^sCRD9er0pLs0EPG->0bH@093RSn7qH?VyDW^jWFryNO;r3tm~ z8?@9;zZ-1Y81FpUV<+6!V^yp70&2sRsz9nXZVJ|V{fT4HBpUDbV}2!yHbdW2Q4b_YYKRJ9=6y(Un9ds_ ztH8>GiE_~G+c$!+9*Zdf9iwk*GrmWposB}TAqPyb!GdQNn)}rMAYK0|a|Kke4cF(r z@1pEb=gOnZZP`KYYJ}Vct&9~_H0{KP-voB3Tm)NrU*l;GL5`q^v@y8(Xj1nkO8&}N zFMKnAJfb>1^?eO{NdIckCN%e^YMIqISs^Jr3xV4*99)#7NIND zmdMt?hT^qZ&SsQ804~?xVIvfwt9M^!D~o=>!om4?Lm2Ylr=GCLdrMXj-!{6s>gQb{ zE)BN?6!KVe?-LyDeGS=`d3{&rjl{Tr>G#a4dr=olu=k}y_{t8g?%G)!8bfZ`4Il-j z-cV7(2Ph>qYp;YXovFq+VnZ8B&mlnefb)-z&(7Ahjq`;ZOL1=MLaZ|(V|%N8leRMc z{DXu2@H+#D2emRa!%o;Y{8A5&YG(vroQyT>({tV`wfnT%Z(UHl>JM*8cyb{AjlW~! zJ-O4#+LPqB}8)`huZ8lln)uoUn@`Yfc(6O00`ZCoXlJ^0XCF zw1nZglrghVJ|?H0a>GYG2wHXz-i}l-&5(n>EKE?1cUXz?1ehDMzn5AUl|2^&a3YEk zVLALSj>O*Stn-0!nmQTe_=mi2{m$Bqo!rH*ZNVl@o$a08+F{Swyk~$-^ww9-YNf_lVC=NqEu%{b2dO}S#{pWi`a-5=b?w0#V*R{C6oPk$!5F4mGl*p+ zBe|J%x^oDhdfV7uUJGCg$#_eO{=c~T-YR4UqbTrgq7kug5!Qmtek`R(XmZJdF_o*W zVE-n*&}!FGIclP2*C!?;pVSpN0(?NAq|lAiw@dfg+P3w-v5@sN2e$_#{6*DPivJf? zD?1Gq3kmd#41EbLBt3H5kVcv4Ai=j0;mj~~2w3~epnOlRO_|9i@T4;C)}_SEqFgpS zPC@7$(Q2Sj?DzpQD8Do7VfDJb!cD_EsrLy{>G23Xd9VI1Bvg-@c?t+RYWc&B8`DYx z-!lR2S1<+sNZxymT*Rd>Wes}WT#*NCk;qVZdqCVkkFfS8rWHH4(t;5Ii43Ti3Q(-f zBQ0LGE&hu?bn!nW=_TC2m*}mVD{d5>gcMoZfg;QvoRBd4dB;SSeG5VhJpr@ z6tem-13NhD$PsZ7f5w^pkb9!5<3CwiW19asa3xNhqaXDaK+s_iXm6mscrGK}xBNCq z*_1y#_G0)P;**zL8=n@jl}}B=X1UQ9oc?z~wcdXxn{C-CA6r1E^Q(FuTHzawJ~l;+ z8T!4Pb`saTZs40%;T@LezsJUT(wO@>7qJ7oE~YM3M#8|T9`I%e5L&T5=deq&HkV>W zPGs&F0Om~?*eInO>w)*RJrmTC@u2QT4pCnm6Gw1i!#`*mIv7q44yfWw9{jpd5!qra z&Qf0o`UrOg{OS3+lT?8pdU0h&#`Am3KI2a<)p+NzOnnAcsEN|00qM(qPr)=KyC=YG zfK@uZxP#E@Sq~E_(>r@gVZaRB@i~@tkffkvk(b$j$4F0HYrS-3rmOj1L|s!p0Yw3b z+Tfo=op?>uanWsG^KdYVtY~^3YjH|>y8-onv%3+y<|{r$3aG;9*}Bw`k4xSH+#FD5 zUrrZLK;*dmUyg=wc0GLTPf^Ko4{j28B!{hb?3(9Kmq}xvz;0mttfOH-9i_6>eIC$8 z#pD2QU$1kX0=HMwSdA;<0G2o{|4GvjgUhVQS8=xFAO2_yCC+;u6_?u9a9CP2#%D;f zmSZEFJ^UMJ1x?r@!G}mz<@a-!MQ)Ie3$dd=yJliMOPfM7~pnQ4RS!+Q1eDA1RCM`Os0QO~TqVHA~rP*}x_UFB|sH@w*Lv$yh)~)lFcn@Z|OUK>s5R6oak26|A3`EDJJZnOcPQ)(fGcxrsO;P*bRZwAmlHy_DO#nANQZLko$K^7_0(zN{ zLbuqAjZQ+AJj-B;5uCVk(7GDlKgBiQ_`T}*cXEmJMW&*0s`1ZtPaf{ekoEV{=%R95 z)3XEEf>r;l`Sz?XK5MDelRHI-hH%Bo4Uz1{Mhf| zC=bocgK`MPY>uqK{3&!&GCyQzWrGH zGKaA#B0b3^`^HorwoLPzQd&1xd!l0(bBvG@@m<$(7i+wK(pIm}5%XZJ-T z$+*=J=Me%}Z4eMF+vPF}tyS7*LsBJ%2vASt2m($QhX%+ZaK2 zH~N8V8bdNR>{^;#`wlNgccWkGW^sUE5-H`h3@a+olcECbUBebqD%C_*B;%3zhuJvo zxU_1onm05W9lyfKyTDPDv?52+F-+QHEaG!97K(5PRGX2y?6fr$SD2*uPpUS1_Q-ti zHd7hDVoNsuHf7pTI>nJZ%WYQ)@q55g`ekNfqM-+CL0Uk{P`G@@jX*kXwBG!jOFcb z!iTc_MPIISB9Ct=ZU+`272ZY>BtaR4w489jxNNeK>U!4Xz?6bk%4mR1gC;7<=^ z?D88!ICFY!lPg6n9mH>%0kT?&G%T~E<%Nla*xGQKENf)NheS;l%?B`1uje6Xr-&C} zCh@{bda;?Sr5g8`U#ZJ(bOwQR@5^FPOQB{{(gRgSuGcVLSXQ7sbG55tpYl#r!UBJe znSl`f1H^uZ8bL$=owJ#%Qx-{s_=Z)%(EPjyu$iMISAefk{;-dWyq0<(lAMrEV-I~d8rRRKJ{F%@N6`G~!21l^ewEBPl~w`rh4i|$(P zV&W}rkN(me_Bbsi#UWWA^>)C2LtVWNI~0R`_&`2ZQIXfx!KSBK)rUTrt1QRS0(f_L`#mbTXBh{7(K{wZ6=WHJ-oew88&v^= zP!m?0Un=2cz52>7rjSA_@H9fW-$7lOQz0bo1C3SFgJH!1u8Z|D^>EBszC*eIUO-$l zc|TiWQ*e$d-&V_f@>-j{2MG``2qS=(pnt?7*sq&yxo0`5s%0)^=WTX^1osixj4Tk) zm5x6VT&{vambEOB*5fw8s%BDdiVjuh;>iX^t%aZhkPl41ilp0N>lt8>%%e0JN12eV z8=$;iPeEh@ESvgro!5Jhiq5|f9^F+4&@^5@d=ifgNNa$(S>AK3>wXAMDa$@kw6Oq8 zM$1FMWR(3CVp)gsM^;L`YIT(^b8(&lF%;&O|9B&`>l&Xi*BfXYQsJ}*TfHP53W<#xbjbH4SG8jbCz5itF z%Ypon&qO`GRoH0m$8Xv?Y4y9d?gltpO}Q(N-Bdp_^Hg&f&*VW~+`al5pxhrV&&B~B zSWMT1fUyW?vlpqWk8!2v_c_Wi=VVOJsep}8|3$9+p#Q3V87;Nn*nK=f+)_p<8J&-xY{fEUKZ_>5KC(NemNv|_B!NMmBrk(lV8)9;7CbU!SM+q@bR;pB{LgnG&=c0G|v^$g`c(dT2- z5+4E#kTb~J91zIg^4V8{~k=a2;gBlrJUN{?TJ zVfb!v4IMqh=awEIh3*@H z;%MNnnm*X*G{6g|!$jx)s`~(cx;+MA*qP>`{q`S2mgsLo7A@L9c@9*>Dr?(+4p}OI zA*p)Vn$~yK}qY#uOyFmUoA~3JNz9lI}a9CL<1bfV6pX1g%|#`pfu-2A^dLUpt;z|>b_k5Izw29k1d%4Tr&V3 zqL|>Fx6feD))S^m>rK_{P;wav{NRy*a*v~rW*2QVb zLY}rUH;oJvU3ttjvGlhgi}Cj%i&p;%)6XG`th_&rH5Gg>AzD>-w?f0r1>EtefY6 zb#u4)(Zg=L!y(gf-&UhVFCMgRNWm{qR)j%}d^#D~-!NO|i3@3Il+x0&iLKbdr`ib?K zxWCwXx2T7Hdc+<+#xBO5Lc}lFugn0OO64eE zZV&RIy_Pfe*HMou=h?WVrzQ#39W{h>f3meu>^HW~jDO@TY!auM?TE2Aj_rBkFWlH3 z`bm%vXz9nlIB_Sfj*h6MHXX>b7CkI}d%%X+?AQZObZzhJur!}!XpT~cJFLdxOv{-5 zXb0PYc96w4du&XcDQVSA8(hNUCVa6|QHX&r%BqoaJrP7!g2j<{x`i!l-AQ}Mdn-rdVLgpc8f8jG7=2rK?bf6#Rj)#_ONlu`lFJnDQ&D&lM4q1im^l2-W^&oj$N z%DdWC{EaI)e)6=CG30K06SsxaFA7A6O);;Gq^v~Czw?K%wvQ#0F!zjO`$d2>v0-Nu zE`5>zvk!F1Twc+>-64TDufEkcoOd5G8iTW;?u%at4D#wdnUhx2cE?a5nahiW6|ard zJ`52gqRrY>@hXWu0d^oLwR6!a^7DR@g1DJ+L}>t2E8gn=REkznuRzJ<}M=X)mz(KwsAOph{ zy81%FX7z;Y;Yy({O4PfF@X#A2J2F772d?s>?(g?ZRZ9 z$9gJ|0qOI0@Z0YUJQBIG@gTgHs#h0X?KqyBY4Td(YgA~$Ad-56)x_2(8e$t(bEWzV zXmMt*=0|Jm{42Yr7nSBQUH+pC)7`Ik#;YiyX%Iv<(A~d%NYs+qIGMka5Vn&QOZ;wn z54X+oyW3St)}3bHfuSKVCKT3sP-@#W0zceVv&xNzy&d&4C-&O0exm=eAXM-YPEYgu z=x~cIgjsZx3UBE*U`H(^+BY)&3GAvaLEZe17{dx?rn6sc_8N?b@PyR^8m$t(RElrvwcRF_D04(< zv?`oHq{Y)@xhm36^hahauJ)xIlsQj?L!q|ex{}sHGJ#fL3y3FN>2r(E|4fb^+qr{dC^mfRN4`R457$FbR6f7^l#fn3Oiq zQOf0TJBcs+4{goF2U7umQjawX_y1usQUK+H>cD?7u2%LDL;Bm;$yW|iIr(_$$lyIxWnd2)KRnnCzv$eO(gQo?o63YIKvmKHZ z$Xzq--)O3FNxz8Sz>`W^!8WT?crA{i?nuqa|5CjKSM_ zQ~Qw24+Mw`*M;$K6QO}~aw(p|#1fHk_;+-D=j&n3=?3~Fw0*(<;%k8fZEVgK3)*DB zwE4oR%liXW@ATpqZwDP&Hy!=Mt>LWj*SN!Ll4J~YfM91&>J0?s9*o;`-auu7cW}!L z{0mT8)AH(oU9U@P`c{n?zjcCSY^;J`)_9SK|{4LgXyydcgQKFetzgJZy@*&zeJ)h{FQUE zsqY?3t=%}d>;G_TCNDnd%^z)CCUPdC{g!+ksF=Wd8ogPBR)g6EC4C|IM-{uyLD&cE zG;@*3O}xG&Fj}aX%cBpneFuTaVXgTp;o2tkZ9UF2Kx!(!jEtn!B%=qd@&7Lr-$4Kh>%9cQ&^sTa^pegskwKEI_PmI7DZoLq_e&?o`C7nl8rqBKkQ&S(nu;6ed-X39uD|up^-3ZBPv*V`Ezuc z_G_&Y4EhU7tMxa$%T#e;@eNefiS!LTh)ZvnZZHP64yJ%c!?L>N*5r zA@@B5k!R`<{XGQnm?bfebj<|Zd<@gYS$gvC1D2w4^4F})4P6~HS_1|kZnlv;w7=Pj z3ZsRmfCz)OY{@iCU8C@v{$(C8QY_mCh>PT5Grzu-M{qV<&ev3*0;ZqC!-#l2C(7S| zJu!M4Y{0Yh3j7DOJ%{5y^s73a^zf{H*^Z}>;r#zn)XEC?c2*82XrccAxvK;AHOODl z7)L;1j%`2nCyETs z@98pzqAAD98v)O?UN&iOZn^{7XStsu8KX)Re%}`vof5F-;0A#eU@?rXsl~)=nhFrND=9v#`xJ!A_(=%tYH98ediQUNcPbjEn}X^prh|ENW}+MpH}R* z9#_j&mmy=6Zw38UQ@iRpby>TCNG+t?7-9z)JWZlJFdtW;*?$yO$bPn?gCUPYuvHV0 z2vGsSPu&x8cQpEA`$qFT*yv*er!Mh#3u7^k9Gm%&!lv`JxxmPVF95vb@4zFM*poNb z%9lj_)dOc`#<-q79R3`$utFoK1nj|v?(5e#gZ$u4Hn-L96|K6b+8zuXssCeWjJ+eT7^We2(qQ3v2mDQToInsy zH-0e)0RsfP-JD`2E=k-9Cg8V7jtBlPQ9YB;uO>TD)FyBEk5EKEapstsXF@Eq{ag^o zuFlR7e$#`;LN(N=2ck7wfKfh)*q35*Q6uvJ!(cSMl;AN`C%*hgXp!Kz&|*m@5L%pi z%SAf<*^~h=!$Fn4znbBV)kfB}HuI=oHHT1G^8Zs+cjp%i5_IHpz5!&lj=bKh%Pd3w z%JlWWjPS14FanF|5r*pExhb3=&Iru;-1u}uGNNB?a9d9U)5BUCzHGb|HWElmUzEwPU%Pop63Ij;w`ZJ>5He-1t@-#%kl!zdMU$W#65}ueyVA z4FhSK`FDTLnl&GJ@$?b4aBg<-lx-+43n^=XD_VAc)hZVE=}ApnnrM_C+@=(|A@h7q zI{q761vj7kM`-cZxAO&+fZMps%st3na35C(t;)8pCHi@NO)fAUj()BQR-)2BIvV{N0Yddp z2;%#bsaNAb4?FMW6W z_V5oi-263KyQ~f-FmG$3C7e6Uf+AcW_`8D?qZE6P-!EB6^hm+7f~Ks9A4ox5{GNiy zDwXecQtDJIs9eyJn=CL|8d}!0eEWMRS)42McPDA|ly9S)x4lU4w;44DFr&6%?l(^< zn}CvrSEniuqy1|53}|GA^kL;2K{SO+NI1cqX&is2AUeLMAfi`CErApSCOfu%fM0v= zI@*51kJEm8h4QTLi$8v9t+r?BH$3OL^IHs}V;>h)1u+JITcNyqz;|O(GczXkRM!bZ z=Xcw?fZ8^ER4cE+=!Y%I2aTZd!3VclPyQUSG_f7!N!1vYW)=KHLr1UDd>yjsbhRSs z_$vd^@k<86=vxK?xWy%Wg}l6tv;Pg6UiPncO+p)t?%J*i1^2MnSBWVeNxg^{RRE5y z04M!M!{YaWRo~GLQR=RF1G-kxCGuCNu&C#V;I~3Svv2+$sxb9GI)qu^VBjq?qQuu* zA%CY0e~2x?XBi(TAT)z7WaJ9DL55_b_Qdga(#uhS1!l9fZ`%Bh$H*?OVk z9X-wg;}`bP3b(ria42UDec{BssmC(0@rg1mA@rpc)BG(=H2I8`j)|$vJ@{l%Ko_WIt zFx%=cT#qx=3FBMTXT&|gkykAH2=fjX8*mFiuN697U<)}2n3&$}1BygcKE#`UChrxR z_w{j(sVck21yfB{AnjP#k3xpt0?{Ye;;Gw{k8QO00WjdC)OegW$Vlz;*~-dK-`f!m z`r$s#Z>OXr-u36CZN7Mm=EPZ)zG8Z> zd@*$7;!K~mM&q{z-P00N1N^Yhsa*$7q1F3IPc7~pHSn?17-c@WM~xhQ&rLoQU$*@% zbw&$&W^>=z-3Lh#hM$Wb+HIv%lOx!(UE)HMiV!{?$iZT}*2Kh4O3S{i_GL;OXdEe= z$=AKmHnLmX{%8IHO9MSU>{bzfBP?y;*Ze~Pkbl6Ic#|I4Lu;?S$lgnsJ&<(EueQ`RY z_iMSw81M0cBLf-atSw?et%r8dPl*&%-AE5ARu!JkF8&Nah#5@@78K!%*+$XR6H!Et1WVVfT9RyhSbib#9*J`JW<`EfLA{eMAE)a-yJmVs&}-bJrj( zL**RFc^;*GbM%Fxk^$ux+YgQ?l~PfVH!J4`a;LruY3(vP*mp zpbu&5oc02(YwP-~rYa#W%)+2acjAk15R=GK**I~9+mp%7&{X0GeUTBbYK4YLk&t$j z@?}1I^|e&D{_)P1f;bd77e;+wa2NcP_t7mE>}Q8Q^g23Kww*q z_SJDwEbiAdDy5`~bW3-KfrzA{bV)4Ty)=j@N-8a(Qc6lUNFymrvn&V_%hIsK627xs z1HAY9d;c4EKMp%H&pdg~c|PDh#2!++f0UGPkEV4?ZR7{Il^J}_4%#$tje(IFV!7$*h z-UdmA?t4djg^=5^D;|ZtRupXd@+d>6O-pP;E-)kV`~@6bU8O*g2bVoM$*Gnoo9x{r zyYf>xc`j1W|juj+e10+Yw)0)SI|_IIxE-mUtJoY zz~JW@v}oI3yU81gAa3*wS;UwHjOQiYV6+A8q<>94Dy1Dcga4Yb`-`?g0;gwA*E3y!#v*Q$tbbBJJl-We9BPTRK z(dY;Qu%}~)MkU-i?mUoWWyd4G6$;=U>*bSHKOI`XDZFfnRYO7l6A(~XR{J=H*6wL6L$gHP?m1)0 z(SkNf-~I0>4w>AW2yKEhBa}BriRL6;aooXa=Qn&Gf_||I*t@|aR?L=mtaXlrRLlRB z`Ynp6?gm?zqlQ=pRBfO*N&m|Ggz|soeO~Vr^d)1(x|mKiW=K^a_&{Su$alYCFoQ)f z-(faP^{B&es4lYs&;wDS9$FVwrXglJ?!T;fu&T>PV=XF#%WAa$-t(X3l_f>on z$#F3~v^v|BDO0X^zOCufUC`&HnRT5D68j5utp)s{InA9ex3M0_)1wn)V{M#YLi6dY zk8a<>37g~0#I8j*e!_tJU#M5@tclB<&nx+A#UVG20x>AbnGM z7t0iFP(T8Eo)Pgg(Ywb5dEu~2so%9-dj{p;tDQwPkrWx*oq^O1ycVS^gCS=POwvAR zl_*D^ln`!hBhPCSoJ{NoCyX_=?B$ViduAcBPUBqPC~~Vj^)Au*3*}n) z!k9bXKd1*lwg}{wjS1FlnL1J34KOU0!vb6$Y5IhaG||WLrTF;U-!lbx&Aa}OJP*rB zr6M|!MW~CFV1edb)H?r-0D3u6I|%*-!V!_W0mFMTUOI<_I<5+Evn<1C zr?zj*d`7Bx#A%b>US;{OB(K&B1ljzwGM*?(?)I-FPclsxez`*4GV#h>13_J*n1QS$ zh8J+(zVF(+Sq-w;t%y6nBf)8a#BgiWBO}9b0KTgAn0vE&lYW@DduHlF$sZ*3H-Pvg z2#@WvjWv2)P5@Bq0Pt(V8qIvHtJdtD2RmQC{sL0-cE4wm9j%3vcL!_mbhq z%uRIPj!R^bS0mF|U6YISeTrc@djSV%^3!8jFGKJ%D@aP!jOwiwaH$e$E`Cvdb+bG} zPLurWg<^Dfp2Dr5BKUje?&}$A+n5KH*{>7tJO|ReFaRd^fSyA#<~0Ct$TCo7MpgzU z^H*oZN$K?p%L_)hsPT4vmUdk8hI-rG3KU@X@pqu<4IX{lw)mMR#G9_h{Rl2PWn?u= z@M@fA2hqwrO0q-8D|=+EE19s+ZD7UtVGWw@Ww1p{xvtrW)AI(q7ITehofa6RZ-um6+G6-!$yL(_rEi(tI3MtE z7eX`*sk?1KSHh-SuyJE#SlKU7V>;JckVbWfz@!sX#tLG9c&H(`_G6+9nl$beCw=-nwF&mUVP zBOZ?#QAnFkn~Glh&E8Ty$M#yBigm8#wj)}}*OLE|<5^{4`oJC&G>lp7xt#Ab2VY+Gt_Ez%?V*}PVu zjIuKnpEt0caBNq`D058tGi8oIHohsf_K=#0wEZUW+qSRG!(zsbK#aAM3TnUDDL|2& z(Q{Q4C_B%N1pP+dW<#uoChk5UtD=y12g&~jddFWQc!+3o{P`28>gNf>ZoHO1-%tzL z)M{hCT8foM$9*#PFvj0#v10Gn#lYm5tFxs$^#iM*H0fJbb+S*UK|tl~p26yiwVk^=LvJNC$xzi^1DtHD+~hOx;b4Vv`$8F3^SQ2;STZmFyrl1m-p zQjaK5i`y&Ub2*s&8I%EHO6e8Nr-X=Y7*hb6Hn8TJCiS7;1e{%?L!sNQdzP0%6RX2f z-nI(G@vDgZ@*CL@qO&Fuj^o?ibGQEri0PhaZpqlzSY%(wDJ)Ka{j95O4k*{ifYB+fQQdK`-JB1*qL?= zw(-Ac0;Y+EbUIl;x9_kTd7F2FH0bEwPvTQyn}Dyn;lbUm?R#Lpnhx8RSuG*fC!H&> z-^9LG{}B5=ag#yJ?F)k`d@sFa^$sQJ@MZrB4s+nH&gY$t)#F6Zu15cyp;i)JFTp5o3XFMKR! zALWbm=b~;;YzJaBm#UC-X{qSFv9Rt6vp2}LBoLCv|Co*@H>rG`O_sSURap;bn2%#@ zt$&jEsQP3&BKmtelAJ2qXZwYt9**1zE3s$qcl~2S&7#uRF5rQEA+z1=KMWRe+u*1% z%nksoK;K|GyKQoJ%VHjB_vWv*%Ym~hZv^=dUDiS%^8PL-t|0=&ksBuS6}J;sP9bCL zR|Kjihh}6XB>q5SxE;VLklAgVn`iamT)-W1%xuoUSKTr1vY&J9dZf3@+`=ez!o>on zm=`gGci_PT6ZqrVp%0&D++K}c{$Ig3MxctSH=2V(Fr1WuBZ?e=Zf3|maA)QKWSW#~ z60T0v301gq=6_)6i*r%=`f?Tu>2h`?fgaHA8cwLE6JD5_(hDu2r&O`-{U*c5Q2u`f z<5~kNAqHs-X#u8dRz2R@je3}5LN3JXc(sv@-U$daS+v05#a${;<^$c8h`-39%9#uTG>xm)GzAs+`!cS2}MSMr#5m)W(9=muOiJ+EN_Vb91`t155 zP}C?`6|J8t0*MlmJ`bq7wZ7?4ibbT{^SASBH-EJ_A|3>tVaK+VBZRm)3{iCRH&HZ|>%(=^aicjMtK8G`K3X05a^HPz30pThRI8v95klv;QppjJXlhJ& zyO8M%Gr&#&-;!MxU;01nyU~Ro<6cE1Jq@1{yY|TjrXdhPitj zWP#yG5)r2}{_PSHa>z!yFszdJ<$^W{Iy>!mgz8tV}iEv(eN2%J2{3eeEI(?t+PH_mh- zfXL%>0uZBpAlse2@E6~{7V;`GA9Hh)8+7P18TKxI@-%K?HbsX0lW)2Qcrz8+=1i2o z6n6ZCuV#|^7f;s0UGlDOwHjO8_7k3N*jqPw|Jxm%Fm_yV^iA#@`=XfU0lxPMDQEn& zI!uRu5J^@Gc@%RZyM(qX;im9vxv3& zEOiQHSo>Zo*DQv;+4ha`?)}u?tWXJn6`E))aXC%awwFoNRwlRZ-vu*N8Yq~dOC#~O zw^;<=%Yrm3W>tLyVT&!7x6wQkQN~G|NX4&lF@uG7Kgk!{&WTe{3U+Z3u+g%kE9Ss- zImROh{&hl#thD(^gk;2Io4q`wK%)is-MipN7byU<%3&8!r^}$V#YQIC|54#EPT9+;T~9Qx4=mI$`oNTI%-7+Z37EK;oA7Xb^~iO>DH#iSg$<7;v zZ|Dr&Q>YOPnw40`hya{}7*G5xjd1pJp^HV`Le8?BO4#;y!aidJ0biXf$o{@_F_d)R}hFmX=Mz5+9RpKM>I3I|kNJqwej1q$#I0DUJ9+#jcWc}2QE1sf0(I&J* zNnG~&PUV|ck}h4gZ?5co9sSb)%C|Cz;zk$A$7gV}ej{1gBTi+yGczldDNTVmBka`njO((cf%Nek;-~&ykD1Yr>fplRZ$ff z`Cy)<#Rx=XMj+&pb#$hF&*)RE6GPAqwz#bEX%e~}Z4cc|@$+Vx3}`ToH)95Lip}H% zT=#OQ^d^Sn&Bpyh&PL{@J9VSVwu4p4Yh{e$^kqI60fRvH|DbUGo&6+QzQN-K@ArcE zF?NRD>%-NV`z!c>3U*Vs^=lxuoUP*+8!VX9bx1B*PtmX7xfR*Np z36j(9-cR}ML&X3enr6Ha=s3x@MK_zb3hG;sm7zL~gZ)A?c$8k9@8{)o+pw~=!AY}l zR>mt3x|nhKJ6dQ-l(EMqlH+S!*dXuSr(#e%P+z537spA<5onPCEl0*lbjuMUT~~RN zSaM8IP+d!CS>nd&o+IPhNzYN0_fz?8tpX458+3g``6ke#+Atk3$8DUo?IJI0joyqK z9D=gKJ=O2zX03WIW3BRi zJpNGix+IT`p#yp%amE$DOPd^OU{VrBG~ccF1*hhBjl9OkTZa1}AwO2g7UD2%Wz9j2iJmy=W9$?{&ub}VqfFg+XsbL5m3?5rrz@@KSNYQy}79zd2 zjaHc(nY32o9G;oqUC?RO-4PjeY2TisswUzL2AFyj1g`j#LkZaMW8DmBiu26xAS)?g+xk~7AR#i-nw!YWROQdLSF zja9(95qKMwP4e(^mOofHb}zfcB~DXlMM7Sm{Bm!ZG%IXL&&a^xibq$SJGZ z%{Yu7`&7UDKL3|cgGoX=fQ}Ar&9?Xps=zg9L!YveV!E@)@&Ad)hPN1#np7gX1?w)1 zC1Dxdf5N$lCV^>fS4|NQ#IL%9v02F^P5|u2e}`i$>Q{C(NyHIXwsrqM(KxSCGk7V{ zz+h=yIA_YoKQo_q*}7)BF#c75?6iL^4l>tw#W+>4BD1x0d$*%IA(+@uS&Cp!-Xd9hp2j0ZTOL^9r?g6YGS~X*JSEid*y3-#F`UP&> zHm($bx@l@m8wLhWFMhv_qX2k5F-G62NUN`LNrSwKB4yf?2lq_k3eWXQMbX1egK%yH z4acPCGq>>{)scKzPv=QZt`O=njmzaxr=Tec`Ut%B56vYXjop*s;n5lY_EO~&MGC(+ z!=TP1LLhmZ?G*+{^cyE6dca_*Gk=lj?*b(Hp~bS~Y_a{(C8C7YkfHx8Ag@vnVi$(r z68^tK@^^5jT}iKvjZsft=^6Er$UMf0dLJ(BAe+>ZN5boAzuVV?k;q1=(&2<&fycx@ zPVw{9T9n_!=W7G20wn*mg6!-I%3u0DnQj^;R{zu9D^9{s?;Yovf4&eM4ppjdPUnB}bB_h6+Q7q*d_!OcLpBfo5{Gm*V{cm3? zOy#z4XQQ^+Pc(aYIW>980jO>!2M%|Ff$CK80&PSjoGd zZ)(>aa7F-PDbGZ43WulVuh^WHHeD>fo3T{xY|2$q{cmX{b`SO4;H7fZTq~&&seOa6 zWbTMlTCJSD>jOe(v|cfF^n6+SYfB~hCCZG4R@Yu|-Yt1k>!Tq&6A2^yZv|7Y`eCdq#Ie=VSDo%D3%BCrWVsF1yq*lLhRC?C8cds#?9<( zAK^t**?5!`u=jhODsLnwb*J(kW0ff7=<#=xwAsl2RB`aDgXHJuv-J74%ns?N{ard& zyTv6n@Hr9H{22#M0$m#H^RFdYyB}Blo|w?gS3Lsh*a!IhiO>{)G-86FhW6oK2Iuq4 zqq^*AC7A@sgSNt6{%hCj6XOQbpDJ~T4OP0=qcZ)HlUE0xkICEP_{;m>Oqg5^|H)5W z6s)0P=B~>odv%uw1R9^LrZ~F9z~=q_=N=CWPBvc{T;%d@I%}$T=qHmL0Pmlj%Y1_O zr@scUeE0CGwb zr24O#Iozu{Jah7suKi_m%|y!X(|CW$FC{TZqM2^4^)lVJ0TGpOnsie51 znW3KCnx7A~nbQI3pm8)$PH;4&@H83q#|g)9k&9IN?ZO@#oJsB}jHi$^^3j1PdgS!g zoQdUeB5yOiFHL!<5M-(G54(SG*U8VOex8wlzfZ~UGydn~6LVq0PL5Eh5(i09(xV8fCUFg$@mY`Tt@0D14_ zRT|M!qLDu)g#=8>#uH-mmUg=Ow@FdY_lm_3_SNpbJg`Lk0TR};r0LE3TD(cUadscY zCw1OvN(z2S%cqI*|21I-`wZgGRYY#z=Y6X~QQbK7I?*u1Rwb~2y@|pVErH94f;!;C zm3GBjV@kW16O#lWe3z22RHCI>EiVX}t0kdnc_raa!%<7z^O!6J9ISnst}2(pXQv?q zE&(Ld2ef;JlMjKG_P43zXIt#^%3X1_4p;ZB!}1M+Q9Zj_Nd2tUt-6RgX?^wP)HGg%qk4`$;8i>wgXb`1k_!S5U!*wab(Mn3V=lLE?Yb94MM$QOiOKeECd_>#cqosbmwp{Ewnt;C zkIG{rUnpg{xAYsi#(^I31HLa(as)tpwVoip)UUp_fBg&b#VEgx(0UIbzGhxaJMo$s zK4h+>a^LccO!?C2tphZBEat_+Rdsy5U5?^8SqJU994hZ5f&*GzZK&YWh?Bj?=Md33)_Cj4=_nT_B5f@S|z-1)Orvt>BK4%FoHr(Xj@6Unbp6XHKNsb#&1G7TbtE+;11 zpY3HY)z&B|D(%9VqnbW+cdsf6){!!>MWH9lZ{$>WnAuWPmxL>5&;9h9*@btO0L4Q% z-XTp5Gg|SG89U}}i^9?L;EX2?Y;O}M7*9umBw`HA`ZUeI=_Eq5``v=LZ1m0N@v~HyZ)eoJ`;+=;o>4;A#VPy z78^50n)Td8oVyv`D7nDL)!E*+t~uVCi}TO79CZsSm(y@fzmNn>S^CN4VesIVU_{EQ zseJ(sKOgVo|BA_}D`om=(HD^{tb> z7UUSP4j6mW+KBihRZRX8VdRpVX7TkmrvP8Q@On>(V-KN?)+r$NN1&HY+X+k7!PGwk z(8)x8`JS{g>|5&c6I(b!uw|_q&0V1aN=cPI<3358RCmW>T5k8*Rg2W6F3LQ|t%rMK zUFZP%pY#oAERy01wlBn28S-nZoBs^nVgzv>l@uOVaD!+FT@QNvYMZxLsqfAsV01fjU z%lU0Huk>X|1a7qVr8?bbrnV>+By8DK*#gAKqWni9o&J;)|DBvi+-^tKf;b$3t5RJm+ z(02aNy+S71MNQBShA>d`f-E*&?lj)xu({xRohxw*o|3*K1}iYj^+2=(~{<+*&fEh?ME+$TQd;P z3cXDOsrqb306-R~*MW@!je57>+9W-uH6LA}hQyR2HRywytljaxWI3^o&AZx z%Yu7_L_fE3fomc7bCo39sw8h?gpxXP9~m&4XDKphJfPk9f<&HxwHA zYJfPfCdq}FiaHwAc!@_7)pxX0`41Us1?|Y{tsyH8Ij_`Z-cW3(s{&@`7L%(=^W0ci zNR6(2#rNCJeP?_Ftkra-FL<~H1FxVv1tZaK)nBBWRe5y@>Iq9r-=iTqzA^s2c`onS zc`GtNxHs9^rcQu8vCv3Vnq!v(N-iTQ$XTl-`u2UXqPwQ&(})YyPCm&cJ z#KsL9>Fk_$0~JfD=BR6q1qT%a%cWjF$|$zae4{VgqW>&EYys3UnmC8S_4SGNm!=^d z{>vsDz|>wzUM4d5VKidvvWl(z$a0d6Xr0$}AKE}6%gDnUH@wS53iI@`!8||IZoZ1; z29H3r#FEG#0J5&cy@Gi^?4vK|l?# zGxm_QT1WVN(UsT>Atj77%!)wutyr_E8Xovv-P0cSHf;!tAe5O%S&Xy)Ml{eV56gHP zQ*-OxyR9R97TH`9O6Ggm%)MbgQRqccw^t0_VRhbKsD`3^OPhmk2Ld14{qylNkFdF{ zjeU6Hw9#cpf?eCU2L`PHQC}e?tQYSu_Y!fw*dkGy){@l z4u8mmNJuAwz%yADuYf7*#ilE%E=QE6MToIwCU6~`$T1({f$r5UW)2hLM1!l8>96_~ zr>P`3fSqEUB}1KPjid=n<$AC0Pa5m!^wsFoK4hgb2Dg8}_aYT$S9iD!NL**KC*1J( zjsG_!LninVJoU2Y>Moo({?_U7pWCIV&u*7eL~oaRjZf`!CY%RAPBF!v)1J;wmROLI%l{Xq7&k;ki>|6T2Po~XhOIg z^f?ZJpa7X$G`2qAzY>7nE!Bh^6#uQ?TTOhaQTLnM?2t0*{<>QLq81idi zE<;lQaMvf(AAIxkWq8^s;-W|PREG$5u#F3TPiESW4!bbh1%7{Cfx@VF+$Z~oRSIa>AWs@L33yr5S-%=Ka_EN5GE$FCjD>1k zx^fou;m%&aJGPP2h%kmxXFA4V;uY2Rf|~zmVJo^ROlY|54g&p}ij8=MOnkZ8o6Z>M zWqU0oOPzuw|BO&tzzl}YP->_cr-j>%Q(P&g7abynv`Vm2O>0}hvUA?nza8g3;5ca% z;R_Pt3S#2H^XUK!AaLG0+v{>ahE{=Pw9cLHM5Q~-43tQ%OB{RU8$7n! zg=8(Kc8MYh2bLZJPhv`Qr4Q~y`lpfnT_sgni0)0GcPk#^>D?Og` zBD$c)U>8-3488!!U$an7MG!5|OIc~YpQSw`b{LKpJB&k%ac0y+Z9%WS73yL+Apm^; zCr*c-5CFuaTl?*+49vW%^FV(IGsu_2gG+<$k`1Lksdzw{I`fJ{kS)`Mwh$yK5nzvO zqgmPcWXZ*!zCR7}K1#7LP*0yK1w~-&0j4#b_S_DfZ>QE%uF{tqvVVF}g&kPrt(&Lu zMAm{%)yE zIEp%3m2=yi3>W%=G*GUAc4GTR=L(Y@#D6S!-n><7N(n$?WX`F|4o8=c+#Kk6f|x+fl%vW$+%eGL37M+a$*;W zpD3|+0m~_v6MR`$$VR!JcICl9Q-E~b8MvzR?6yFTS+0>GBYYuh^v0o1enicg!os!S zS7C7}{-$1KFWfxt{t3(T>j}&Awr)0><>?0ADQDplZ?0$2=_x>v+XZGV%25cRn-Lsg zKmzm}e?(Hc{cbI!3Qy2nbEOGvQslqpTBrpMurfx2WG1DmI1bzuKZ`v1P_lZ0HB`Xx z0lfBlU$dmN1!?$WHj$ykz~h=df^JCJFU_R(dARti$?9*;zM4%-f$;PSR`viGV13}V zE@^2kXYMaOl^@n8aBDFgfMq(h!sL-|{k4^sCLH!wg8ulcXV{kYk@dtt=7)AzVOFXt z?qfn}sdvsLaX!JZ1kiHnRd`7xPHKH0qU@?IUipH|zs{P)9oY1nrhWFe)5iP(3FE??0Eqq&WyQce_IDI!XlYwc)Efu8DJ_9@H&!q{MVH|UW5$Hpe4u&pfkaqmPFz!y}e+)(c+_4J_7JD`d-b7HNDR62s%KV!Xs$5k&2MT)%z8~r4! zZ{PyR{}{z>wvy((l4{IdIKlQEwzhOp;Ca_wvg+_v4l941;U|Bu^eunMr6A!FLV3rT zKrEmoO@8h|X&jbaCSQcbvO(UiioVprJF~b7F11tRy)W+Xiete5h#|9iByR0$BGJXX z#7CctQZGxbY61ESnhogvj)19FKmNVnksQ!p=rL^Y3ew=p_rM-0?bl79bjS9OB>IBk z1N3FqEkI)7z1lzfGDC`avSvI(7Ee(Qv%Hb_NCG@Ves1oe8+>I!3q4`tg(A%qdA(PO z3Q}TAs_ALghg*KS#%Ou739ZOXxd--@ERB=}CBWPZfHDMBJl*_6o0P37Fn=w69v}h$ zg$iKjJ-ez~;}ViZ6M194uI_)T7h6S$vONSW`5$o@UZ%^q5$7CHr7TUdQnjAbMAlM*jle3&<#>K*_=vh(^8 z-LpCLPFb!3>(?%$rWkr4ab;h`c%${pgPHWN7&<9JsYJfCKfw2 zI&QiZd<{p_@kWcnd4yMo;dSyDlQ%qskKse3>sb@Blm8KkdwIJ)vX&~TxO+UVI2((> zJvcVD$nsuC4Z6v^VPLzXj0}}qAjaa{PrlEW9>{EZP`;nrM%9NGv*4RmI^hxCXT-dO z3IHme9$L&xoV4u%bU4jEPU%D*7Ffau$iv>gnhnUq7C3!z-g%2$rkpdbvnNEtySZpR}VqMQKWhihNNtKamNe9(c?479J-X`dWKi zm)lhvad(rn*s$PVL`T3wKOpuw<|9hxo{k>n=|39H;xxsY285>qb_;AFHs_ctoAM8l zeB-~p=j(7}zZ4lhZ^2wx=vN-VSpqA4EbBdzM)(2%@ytaGbhamMSr9+}HOnt46t4Ir zz3S%O0QAniB%Ad8ixb;R(qmcPJ2JjK#qZ+t&jjDfHi&P4qL+_N>L7M-L#fD5yW8D8r>TDrf>~B2wRwyA&o3<0%e7UM!iF1+l zw@~jSDSMvA-fsri#o*RruYr9a1S{^%b}Cmuk1Rin8VFvKL(5{e&ONAo&y#z5qJb*% zAg2op=(_;zmw5F!K+8k12sH3`^iF{TIALhw-<=oxH->nzwm|2_vJEccLQvL}r`c|B zMsY!61W;VyMk_Ap=Uyw1o$!|J7Wi@k`v;%E{_i4AVE?LxV+r_nPPSQj&5HaCjy~lKd(Xl{XG#b;dtnfa1b72BZ-UjHz~VekB@u5HkED z6fh?ba!ZNd=4A0LrCxoqOj>wCQo5IL8|b|lr~dA})Cj8?RT?rXa?JcYB6mtpQd?Xt zqLHj5YWUNA*#L?NX{)%t9;fF(p#I~)LRv^ZliQ2=Hi2aR$Q+3%XRsg4+!p1PArq>j%d&DHCy6}>)*@fhAFJawhRn> zt{rK@jy{CaY3yF6B5A~5$U}XnQ)sP_@vrs#0UserOW2_lFGZ>JaZh!Z@Q9@a;$UFP zE#q8t_2)l_r+lveO=(L=V;Zic?WL5$dnPlvoW2$E=v`U6!PB#f3A!%udg78^}?p zo2NY-V|=%;cb8ua1=sLxW7zk1X?|DYop*n1_&b4e1)qwxsd6^AikJ-PKoHsxQ{?sD50#?1^wY zh-d&bp9t27p-BVK+-n|6I-s3%lGo39eq*U!C%L)4z1tXnxY84vHsyy}=S}mknl4)^ ze>x}wve(b*mJ+wS6!PFEaq@F(qMMsVfL`&kVJ-o@evRI@#i z%ZN0c5F)wZyJq3FPGvJ860qmK46G%7$(wSc+Z3< z5OMIO=iYZQSME)S_Y3J=(ovxY9jm*`$qvunSsf=vd-LU&3|v{99Y*CCx$$sL6#f_x z5sUEV$t_`oau|=1=a29e)Jrd$ zw&dmd_zr(L7uD$$nY-KD zeS!VP8h-vkQq4%6U`g0;`fhH%y9r(o_ZMf7As0!mZ;N$bJ%7rCT6>}wgH)NC_JlQW zzFBBZjR(l^`>K6K#UYLK@KKbTnu+J3n=J2Bh17~+i~N@ut!2xu$E&norN$8TqkP7b zOi9^(Wo(khWqmK^AD5BntVAdD7pHC3UQQin%d;)h5;XR3u#jKXS3UWdjPPwYXsm6A3U~O@ z=i3-K)po3nWP}qfc2t~*b-b3eBsW68t*u#%j4~4Vk5;pJlr9U=h}N`G>g*vdHP&EO zc+v`&7mw6=Wcg2e4~~8`TCr->fxU0j+_R3v?%f2w9M|%`{8hGDt-Isa)86S2H6Ocu z0)G>GS^-y03yhVIpFxc+T+(@mmpEnjq>Sg(x_dMZo|WZ$3|xwDfJH~M`PM~RW`B#0 z&i1QozhofPRJ%tb;EGpxDE98{odl{cz&TNbcR?7~7l+8|*WXhYtzQ~~)Q>}+!LDNN zdp2o#v!qf%scQm!q>#DNQA54MJ6`*q9sO5oR$tLM7LjZTY(>2-k-+>C(CdYnvh}3U zdt5WPZuP6U+JSYSeWQ*HBOP!<`rQ9HI$V70?C4Q*!#9bduNiFQP^TqoT-O&iGr78NFH5gsF*?AD%~d#% z7XW+3R)DlZybBQZlPge7qL>I?iqt{DDlt2O6WNk{Y=D9Lu#4RWT1IJy52BE%co~R{ z=a|xEk=kS6il?rcGX=X+oMBWX{B1SibSC@3arMIC>wz_0eSnRtrB)7S=Z9lOn=Lz* z>}=+Z!ZuZn;Uqe!$2iLttvke#ItZrWau_0j`cR6q{Nx3Q#~j)5(v$-(pbWWsh{1*c zPVP~&aI3AiKXVO=p#l6m{h!-0&K`x|vbmKvO8d}%a6k>)WZ&!L_l|>iL2}%NiI*pu z!E~QsbqqW^`g!sH{NxF6wyMW6QilK5S`UfGH-qI(1#aINaJvzT>=km6Yy?$Wc0YX& zlRP1zA~aLh3=Z)dTLxYo9kmrE&2kv_N@26#rKq=TK6Uux#-T?E(QmW;fm=?iZElU^ z-rQ{GIpS-?$yLs;mp42fCr=mM(-+UlsgJGSh7-vg@V`fC9)Tm7?AJLzI)oJNip`AI zze8#M0IQidg3}V-hSnZ_RZ8=u{gmr~Xfc!iK3Aw3Xm$>F)R~Xpfker_Wk3xiM=~jK z@?(IT)*LWuDE~Bd8z}>vhw+x$4>0eMp?2tY;qzz%v*nitC~Vt;y2Q)w2J)b<8=c?h*pi+R9>XCE)=IYhq&Uc;Y9zCSpeeo6sOGMtT3_jv)frtLaRR==IQww3|smO#Lb*39K>`+y5T0d|H3rn~|k zAMxh1mm}{}1@2>8Z$~EGOPY)QB^tR7(Vt30a83LTk2kX!%GrG23ZxUWO)!RX;I}}i zeRjYK=-XlVB>)*gD2+r+qWm1Z*QR}QE#P`1Q>uNEo>Qw~Slf7MDwwXruj;oIpwp7B z!x{~+6nJ4hlK2XEV8oln!^8FiaGGP_t`@+W4>bD*Jn9=>W$mulPg3CCflhmSPTey? z0nbpn)?uh{x4BMlmuHIUmf9Y8cY8cF+|6texFDw0rK3D{SpNCz0`6@*M`HBp3l_NB zsZvh)YI@YTO94yQWI4-E-r-wue(<$C55A$~-Gnk36LW<0o*$JI9jJAu2!@}(%QrJF z(|uv_aa~~rOyS`~sLuV`3F)a7e6wXjJrq;HO7pMRm-D^cwfn*7|Cf$>ALmCCl}&we zi~!D&ewA1G<;vr_NbR++6$UaRSKC8>y$rnAo14w0gwigHNA5N7TYUbb<9*m)9GXjQ z>)0ao5wn_YfoAw-^X*p1iY}$VR#}q`Hp%IiblDWsw5cV-7I}89?U-x_V)mCT{bj{SCXe?)J?3it-}nuOD@BP^0>2PJsR+dA!2F@;fgfNh-+zn;U` z+T`kS(Fk4n9wMO5FDapFcQM+=7dkFBjlYb9v~bDf9bK|X(|!A?0%c{glsb-fi}9Fc zmFM@-PndSvCnc&7ZK;xt`w}Yot@3fl{h3B97-Y*rWt3DpC>ss>^4C1|OYbSQPy-|x zv&7UpIjuttFwU_#7o#UHb@kzhy1ip$>irkFzI6(-SNFzHsTT7~3`+jX<3_am0d{_= ziRGbOM@aD~yydN}ZbBKZV}=*9#G{J~iB|tyibKz{6d7k^OW~dbeR^7SZbdM~n!+-Y zt!*=^N)WuEr?!K#?NED(U~sX(CXN!YE8nDQ*~=*OjY;ZRZMlDO7HzXMj^(@^gJkuv z4=h)`-y21JIPpY@U~`i!S^sSP3~+L?g96Eo6{MY0UY7kB7r0KqM5CLXMQQVFJ5$~e10JtK8jG|Zj+zy z9l!R>9S8s7ELr`|`zuk!dY5Ja|8uKB1H{)c_^KW_a=QZ@0iP-Pi%uF(zs$9SFZg+P z14lJ%7nn!ZUSA=USUGQm>fEWB!wpvTMvX|q^LwR-@Pn15;Rxv+qiI~==m=4_Gc|>a zZK1DX)39wc2OL2SoahgZE&Yld+hXhYN)QcS2q=3iCABv`$ZGLwe_wiTwDF;VoeemG z8*Q|1?~b2yx8~*%@WA6ezPE#lJ?O}$oMm*ea3jW9_=tgN3`+2i`V#qC*r^iITVCkC`gCRtG#ZRGgx#0N*te@R~SO z)q5ab#;I#_IWtn#8}M}k*x*I{Q1pe=5mz?4oZN?_fCEWUh#+>Nr0K}eWiVJ^Sw*g&iS>-_=E81D1SU__3tQH zGCCB5>4I=)DFYcu$=|4osod$S>kVxKPxfu`YK_z`qJ?5Ym|$Os0&+f z7(&|jyDnXY2yqLhwAc(VMc8~`yh5UL@K}x{LX5M`!?RnL?o&BZHHoXl1LdUo@+3{- z#lGs$qJvJBhlafwePj1gGMsT9HSn6FfbNw0O0v=Vw#Op=nh)1H|H%*Ni55R!vS{5s z@wC_ag8`MqwHwG0y)`%BYE@pYKCUCt`FXtf!MEkhus5xfXmgZ-!0yTloa-$xJ1@^BeJr!kIZG4R@yl~QjZ!x=dnPAGpAbjZ1Xr>@s8qq z;hlWL)P!1~#6ak-jqPF5xCsjEm=*5Y-g!N3VYZA8iuS8rgJAvd@JIs`)9QNHpfhk> zsElcY2VJ3fID5eeHB4C9%bC*#_*!iKhtsJ`1RtF;3wQf@)<^9;E_`%C0;@(FsVlm> zhi|1GFP6!^BW>tbh62Y+*Bnc)ryV`$?*7(1L-%R#1MgM;jlOR53sIK8XNJ=9kuONy zqoBhV8Z77-n)n=6_~ZzB%P8e?7vSgCTh$^wmRpPW}Mn@#E3fu#1)S|+P%kphp@fGSA1RVKn0QEsICgcqjW}+n7 zuwO>}Zg;SOkYMsM`aHz_-iIx|9Q_Vzhcl7Pwe5brixohyFj7pR+W{YfXOVLhYsij7 zRun#u3<&p}J@*z$O^zcSH$>&4DG@sacYW9qvDns}bK0Tl&AR0O0; zSE>*obQMK9CFbX;MN$hd}5Mr1yl*dw#yZKi>Z? zm)qOj*_mf|o|)a-PAQnkJ$CFg-&@l!|1I%gB`f88haCMm<#7;pVv+N3Z+1g0CjM+$ z{nfzhMqGPvjeqd|_R(Z;W!)U(GSZhki`Dj>8n2~4^qywie5w2cDC8*{9?|}T2q1>(QNyTLB7HJd6(N8 zGj!>|r=8f^go{yOjjaV=4^CC*kPKNW4Grhf+=1<0n(D8%Z9lfZ+a(~uimQ!_TYAT> z8ONh?pL}qQ+kZ0KT3P=0;gPrSJD<7xNA2Ehh8{M#xt;CqJUJ^~dba@N&Vr7!L94b4 z2X7v*gq8mJe%)`z3Q3+DRCu(67+iz2bAB#AJ-(db-UUik5aMuae6X7Bg7bRi1{R^! z(A*WqDxE6BI#@c-Pe_9i!G|Y3?c5B7!EnFr!}o_5KaOh7PL(u6}>OZ=< zS?$qLu!4enzHJ6e<=$sxpxC&I9k+VW^&nL~wCSWJy-91}EfrXJ4w7+uxp?*qo}*g* zHlK0i*mE`F!jTcUbLFS7TEhF5z;CB)=C;bJNmL$2cDUv6V?vRGuzV{f&KFw)h@As^?nf{Ow zna&q7K@XYU1Ha4`rMIe6QkqT%ScYk{&A^x3)^m_*6ThDq$q{1~r!9vbFO=537{S$} z*u8xuqZqOpx4dr-4|&V|B7BU_Vv_i)95?w&=W`lyy0|0=+Bo=g67KnkBPS^=&Q#^C zx4P?yxWs3uMWD}9P8v8|T%cv>({YJp+TiAP#M*5)(8FZJX`0gxIC!^ub1Lv~v8PvR z_I#`1WS<36Cn*mjLv0{T6ML;@o9LF~vp$oT+a1;{OSJxc?s!yVOU(Oxul60I^J`)l zSBMmX=DcWC=ec7hm7*a(hBhQaIi*7H33SknY11sod#moBjzxa^N zB5i|^P40t;h==bNEyg<#EOJ5(1&n$O+$AcfhjS*xkvrKziF>!9Q?rE+ip~T5)Q>-i zT^tzvf}~`ISY${sn?%>5<)mJH_PVlO&Ihr4hCa;+akyi+*dg*}? zhxX&I*p=AdVh@_r?ez22(1uE@dm}l%@k=N9pH@nQ(8mW0f8`bz_uVmvf-F6ea0zax z>qsVIYg2dUu@Q!d(sKJELM~;2h6P#47d+NuJNJFNeHN5ugJ6%*lG5M>4@+V(0&v^U zz)`ud(AOtRtsRH0y$-M5TIyzJy|vx^3f}Y4G#me??OUQ7wQKR=Jqm$qcS|&&rj4EHu$w}VO`?$>#@nB!_QuOCjhLZI0UnS1AzN`D)l`Adp@aRd1@WkFt@d?NUFC_vgh zB%(qkE7H=Gmr(3`oAaIr_b2Eb5b#PwPIXsSnsG;vk(fOHrHz6#=&X%Cy^>XYiqE{&?A z#6f+j{mHYZ?!YIOIl}vDl`Xl?%<7kBXqQK>quD6PXA2{cD9Lc^s@7;dgmw7!Z`I92i{OW+ zGzN}$QO0iL&U(;ATSw-?_fiLl?<)IqzxuFeUtl%$t(Dh& zBcR0T>MqXEjUq+zWoM4AHru9I;o9ksasp;MtO?$E4ZC3z|;8{17XX%&nSXO1XWyK0WGl2G7FE zExO{T7~yw&u#WdYbl254<Bwhio`3WRoH6y^!EW9tzP%6{#d zbUo6HAk7VFT)k;uR)uw_tGY(di$Z(sRv$=ixc5jWft3m=44Qv|+4w~+><=9z6nKjsks!YlWgCZ#9w3Tf1zWaP20Qj zYx2fLusNM33^>(FKoQm2@!E~S({?7yIK47EkbXA`Y|7MI@`QsSWB-)8uM11-|51sH zgpn-^uX4%$^)bjLbB5^RM4`KQ;G5rg_g_NZBSA^ct!2}H5mwhU zV5|Pk_F-jp$wGB{MhmH&OLr4*xn(!YCtTu8y-~X$m}9plqw4doeu=!y^RR)dtc_V?5U~z}WjlfrrOpU^?2J-V;{=Q@o($z5bwjfFI zmyQXnU*_|@jc468w6$p>~B?2(LLF_zms#DcETnSNb6$F| zqXn8aS|%_yDDc_Q-TkOz|6`^fX1M3Neil_D9k<>(AnrZez&OW7ud~hh`nAQhES8pCC$3uQ555!A|Lz(*PQX@qN-ljmcpH# zTUg=i1CkTiSlC0iCjQL$4th zD~ryZnKEuiyJ43ez3?V$#q$t31rErvB~H@}o&C~?WtN)F{@7hM?R0zJ zI~N_M!{#hs_59Jh=OxLa)z>4RyDv<0wfr*ih&BJ1?e1>BWbUB$w86&t$JA?j$AUjh z4YWV3yyIYgRQ%oTQ{K(L$lKWocYPL!>Mw5pCzXf%D4y?~zrZelCN>Dr%hvp9&HsLw z^l{#1FPk!XQSg@Wf6rAAKf$RAg}-wng=*CFkB>Z;*q%0!2U&H3O+xc|cL8`Xf3px+ z6@PlgdPqe2w^%K~K*M!5JUXBE2cUh=-9Op4cFBY&zWJ7#fAd&_BdY&8l!j#SPl7tx zTM^E;;^_ei`s+vDQ@6+M10G4oTG}T`!{_Dio^ST-u4%?06><0fX;tpVW862t0X(Na zwNOoaYuV4?p!?Mw_~u_Gufxqn`Sa3QopH?n3G#22!|nY>=`Q}x9wzz%UJ0mYrrQ-kOc;#4YD%N3gWIp*byz1&*(P>Or{n`yl z5&U7*1c+I|_ha=hX&nBmFQS9JzfEZo1OPgjrGc`2iBKnTDsK!h`yT#_GzI}ebJxj-@wG)A)4N)6sXK7qd1QSjap2HV^D^no*LP%H>-E}^%@4AC$U!) z?s)rQW1`fV%IFb!k9uZP?U_C6gd|p}@*cVK=TbXleH4UlOa{Nq`{0bx6m}0xh^nwo zQe5&Nas{a$GWWPJE(vew-Ni;Rb?VV~M=H2_Dr&YN@XT<3BgWeSj zez_Lq{y&I&DX+Aflc3a#QZrHDq8Hscr1#an<(HPMwsJs97wLhQAU5LhM$;aXs~vU~ z_*GXs7M!qSQ8N*biB^+TT165mdAcghc6~GQpY!D{&$*2yMkPGsVYJd@z`GW(V{Wsap6E^xx>sr=|~ zf~ysa-eSwifVJ8nv*~RqOATw|wn3v$|D)x9qdDu%=u_6-B@& zxgv7q6CNPgZ zO!Y&3ec<@**`T-^T3@~ugqzW+Hqg*#?eU(wi$Yolu4e3uIgPnO6ym+x zqn>LwwL1bwcV*X~4@>n_#z&mEF*l=x=?W%xK}qHOd|VydRiW!({U`fbKKk{vU@qTowT$EUwl zZVj78eE;9_&nFuI^R~%%>_ATa*uV9kJ=#d$GZ&xC`qtlmmGu#i`4wG+ThAvjJv7B< z6wx62cQ5uE`A+mote5s3wf(iHT}Em`qO6zOAL9a%HnBDH?VfUzl{a8MJ zsAl1kiXpI(I=uXo7W!hK)$?%ou{*=bSvOLv$J=#u`o{Ey`=v%tNuS$wuJ(88`V}B* z9ZSJ7sF~6d^4>G&LzuL!`v{a-TSL#UAdFDx1;y#-P~ogLH7xu`3YYC4&+07U zP0SeJ!f-PT>eSYk{d}y}Q4vRz>$+bPuLU=rk}*t}zQ*sqNQ{MNnXC!RuYCTI3=3ZS zXp`I*8`N0-84F4r&GHIf8$dd-zto4r zS)$23uFmSDR6>+JM#zY;R$6E-IkwL+@gl-G1v;Z4NQYw8_FxqGVzNKZk?3245nfK^ zK;QLnK9+O;n6NR_>VVZ;Q1aljaD!-&`%kX*>zKfW&fFy=HkT&1h{|8wpzr1&RrOi- z*F)3u74=r*Kd9H7PDefVUD%`f%)j<$GQJK)`*{x|n|D4hn<%QM_H=jTURIBNB8S=r zb02P;itBHY@DeD^o*J`c`cs5K_t3)XwKl!>m{5<5gk$FM)M>%_z!C_1Vv$+NgHwPp z&J!@vI2!i882TWV4kos53#x7-G-M>xcO|VvPwo79;|S<1fWG9s|^aAASp8TPM-S zrXgb!1^%%0jY>oDAY&!#B$G;!h7Yn)^O>usg`v2Ngh{I}fAuJoFPTY=4 zVK2Hp!E>`$ajJHV4^x(AG#`d#q-;XLFZ?&I>~X+IX@&z~67( zy*-S`=ekRLHkpdqKN40{ag)`TnV7-6f`qibY4`Gr2PY(G$OxhKmLe|b7Ai0(i_TUh zBC{cXf9z_XL*i5Mw}-4>gCI=DfbG>mA5;G=Gx?nm8xXEd(KOD~ky=XXh;8bx9rE_h zWDlZ2>1pB$3zwLY8&|#uF4SUF{$SqE4APh+B)nF>XC6(c0gf2l@_%ZU=_V*Gz;C8s zC@6J&A_dAy*W0`u;=X>&?)o+2_QqS-i|3x=^Fy~aS{XJ}1X@Vswl2ZmGW>Ou8#nPv zV%Vp)-@BBf+fCWGE=|^!&$;lQ($tuGJXdQe#}vx32TXi^>22zfZpyR0!@RW$KX1@q zO1}oZ5XrtZI6J4aG`(GijcEw}p&QO&iWhMnF+T6wdB(-1!9NQs1*fA_r6V+%k+e`l z9)F+5yr1I7z4hF-E5@zsZKjJb0L`0vgP6eePeK1>Gnt)H^H>pH*nLK(BOP#9Z!Z=^*bssz|+KB6_v<)7IKc*n!=5aQK)jq_Z=17?qW z8d}PLK|Xt9wXLA}6DId~y&L_gvyeB~tnXhgrJ zatdY4p!W`ixP2wOS>>P?WBcHqM&L>iJq_%S)rW_wM)4E4dqr=7X)3Ov>;~)&Hqms6 z>&0&2e1G-o3L+^-(d92k7bT=Rwg+|apKIJC<}TBfvlyjiC5ic|eCUes7@&*~R7uAt z*(o(t%TmRP$2~?nG%X2_L%QU|snxrk&@`r(o;C|%z3=p2--s;z^)cKf^Ngsv;lnF} zs+wLIn6|iEBtc7-HhhsS(4!OV74g0{`K&`_0<)I)d9NC~SG~w5nQjN(#yJ~3i^co6 ztzF=-6m@m;o*06-xdsg3RO z%%tAl^b@d2CuKLYtgW%0Q3M?fnyL`Lzl4wR?-`fP<}{bhZsvqDX}Bgsp>|1?ZlWC* zQDARMl3?5mo{gBGFuJWSMmOb4T<$Fe|IPsBn0Rv;0K13f#R!{HC&3Zn2Wc&~SQUfreW|sM8xX#l*U0NCV$n!!;Aj6uQz$!lg0A0seOrYo%;Y)B*2T zt5&;w+tYY9J{F&&xqvD1l@TsSfc43HQ{-cF6FQa|*>7bH^_YiFmC&RDCE3|Q#kp+g zp^$bBMGx+HPdvey*KI6^%~HJC+nL3hTf^$|D74P3h9XODqR~}F8N^|+?pI53{0zzA z<@KNd=t(3>H_fN?@hg&xWk{foYaS|>LA+T42fF7u-_gKn5%MaXI54TzR0~p~qsN}_ z#ap*KsExo>rb>SX5$H1SA?4Jg@LF7TYA%KKMo{SB$vZx7s-t*HnZ z6f1@~-WZpb=8G?lsD6Ex?w&_~)1hOu-lzH6Q}EEqug0<>f7pS_rCOGfl;k2mhKF4f zY*wah)8b&P*|<0S`{F@Y;lP^Q26Eko>LiL4x1dbCNyw9;tU@9wE+%a4_mCIBAQf4LgrZ_x2_pf+t(Ok6(SjLR{9)#qsAb57A~xIH zmP>$0rAPf9@>~jG3N5LqG5%ehT>r=6S z=1J#;5pb}E-%cOswnQN5Uo_Mo=CBsP8P zBFhXwF5LQ6#;~NRCT)MbSDlsy@e}|7y|Yn3t!C*l`E{udPSZAoq6i|3S6HmOmfgdQ zvE?9(@4_tBb(M55>2JLXb@n1afeN&n>2f?fw+3{Xild0{4`0sDm%1=Y71!bkc(>c{ zH0@-RT}NS^Vh!oSKXtJo(fxR1V8X)aOIfLucKGq;|o-d~$L zq+*}ReC^7c+tD0ET}l}wRS;H>C)Aj{qu*L3rr$R6V)&$%LSKrXqLv%Lc(^HL|1GDK zMNUvioO?bDw0`t&g;L_`(-{-{1r-(hM#r0{C>xp-oM~B7>#=kJl*TW|F_Kz8J0&ulZYvt4 zLn}SDiK6Xc=V9a;qzGxIu2H0v?suYx`bLZ_K5wQ5O!~FdyVS_ij0++zA;Ur;f{&F@ zN_Cf=h8-@rR8>*xy(48VsF|^Bv{2XZeMo&T5P03s{cPu|^@S6AV`rbtToAKtb4lv< z!1c_r2}dK@W{4O2%q?yi_*~$0DnM0Vcd~ z^OMO;6^1JSz(dH*+Y4ONoWN!3qLao2Gq;!B|CR@D1T8fARbGziQ>io??9P<)T)tD~ z)_nP3(NBT=@Bc{S6URBJlMGPH8r38_n*DgUN2AMi7rzBHes z=B7D1v!tH3d@-+;`X!v&f`-2vIwtX6nB5vxNe}Zz)ab+PjJaf+*M8Y}M_MR&m1ruv zgmCNT3l%9NRE&DETc{6YKvNGB#z4j0)MGAg7t%xB>x4*?B_{oH+8vIPeUE9uLEZ!`ymax*I%=tfnd?$CObb8S1EhQFl zv9Jc7bcJOmWeM@+0G4>07nobp7Kcbvgg9@df0Oz`b-F8j0%g;*38Q32o*KWtm@3Bc zPa88I2Q$?CE18R44;}Lxe6BVHOy&~&&oht|*KyrT5WO>VnphWIF*2=8%OyY^EwJGW zS^lIXpo-z#X0a00Xp`aQASM7NkujDb+PvT+9mb8YS^$XrT0nSBl=c#%MTp|}N&$Gn zo6d&cnn0yW1z{TKrH+Q1Kr6vZlUABN>CT>%#c$z^GpapK=-IgJu8TDzy~-il0xB2R z7Fs{dbS^XM#V)L6bepz6^%q1Q{PL8DON@F!>`heGjyc6gvT`-Msu-TvA#uXb{amV` z_p-?eGHZc%ltLDT0+StZ`c;nz+TXLgF4T+^iG_$%ezD_r1Br&{XSjM6I*9D~nNgT1 zwrGmBQXLH81;qsM$ShPPMR8R^b&_IWDMgS+CMVi*UiDiu6)*`2ZY{bocC&JYQ7;7< zBl9F_;dGRA*66ORVMWiRZcAqvg^I)XW0~4!%7dS#BzvK*9VJotTQ<`?9mP7k2fs^*->Pgpb^#l)ipU(()9ewUv~x7@H7E z*gHy?K855F<(bMQ>gLZ-89XI*GZQsn+aBc+(F9hBsH-8)lZ101fH!l+&}b;FM-DWQ z=1JmdXgMdh;YmeGiS!;!H{yE}=bU0)i_zOVw8zsC%Q~lGuK7{+4hVSEC#*_Vy*#+`+ zB5|BlcW&mDv(eOb`|**wCloj@L_!awJF=h$A_Tumb5PfXq6Y)Qp;`T!u*$g0&k=R= z5gXfvnHPaQ%^{FT9F;kE=InS*NipqfOFEQ}Je>kTSd4pkc^4VQD~s8;Xa;0Vcx^tT z_+j0m25lC*lWUNH{@l`hW&&trpuGSvZI7Kh=?51ejvk_3T~s4ARl2R6AwLO$pI8jW zMvQ-F`YsOlI=9Sx=m@5XKOQl!Iaf&=iaTPYWsq4gcZ$jxs&?qmT)7C|?=@4~01CUF zA$9mOoY7(Ak^H}@0`sM}=^Uln=-|-M!;eu;|F=oYQ&clV@B8W4&@cN@3~WVkU8mf;|<&{pVHRZ zaOQbcJ#Cv4M#$}`z;NNze6?z%scU?^czJBuool2?NWZ4%gAajTJ!Icqy>vujj?kqS zOILaps8pa*0Y(OjFWpmmP3V%2b zRni8eZ}?i$@=vmz?|G)e1pnK3_Vrr=k$e87&BrEgJGo-^KU(P#0>EqT_s74u=^?~6)g;mD$*ah-aRZbG ztBseOO=5$VO*{LZdkY1RtHPfd7n=$Bp66?wRYVe6eZ9|AKafj~7W9!Cn}%6qCGUkd zr_0O8?w*2)mpVJd>w^`kKK6j_l)1Ud+P)`m&YM;aWktb5VaS0L9ooaG$ z-ke_GK)fj?m-Grd^{S<_W<)Q3!azBG~uL}utQuV=`xr2!_ zH_10u3ObFG5sXV5_k`@>=i^s5|5-m4ubm6b+BK=d4AdYydLiINH`@QaR-+tMlXvwJAOk(G*GSJ|7?baLBe3L5VmP*H zNT0<+VK>vGlPwBZHoi3i0(7EH?`V=@y+uXbLY^vQYWObiJ>_fMre+1KP$Uyk_FQJANEUvew5IU~UFNtxw?t7Kta8ZkJL( zP{-3%7KIAb4fyeuRR93eUY<)yh-Ju|tODu2vtTchXkqZH%q1<^FoIwB{w5ttCxa(d z@*WhowFZ*g?S&6$cbRQ`n`${Saaln!R4VTGn!W^d5I33Uj%_(2|8&e@r6AZcL5=uz z=@45QvQIDvktpb*J4lG!8=+bhjQ(RpxBAMc%Y7>GN)E$XBB(HUIJe1<+l;mP^P0({ ze=Q$78ih`5K3N4?qMx;;I&S3U<9ltSN%{AMB&xJLP3M(d2 zcG_Wpozz#7-AgOt}UXoe)rESd1YSshl>ycU)-eN2apmiz24bX@ibGJVO4@?*H{i zV~_WX;<63U#vft(1T#afhdTBXe`4Q8pr@K#TcCe#Dpq+RZq0frPSyP4CGpyw>%?5H zk#JKg=$KVbT-VHF1CQUp=U&(&(u~o!($2@699jB;on*z!s1@%O##7 zukT*xPfEs|t#aR7S9fy#z zN13J{5AAJ~t4H2kzHZmeuNjSGM?xjHmOtQP1+J}_FoPTs*U{iBevo=+=(Rk_M3?Ed z;hp+q+~M^ghVtqSxt3ewtRDhDJenvR6iOcgp%}%a#vvJU6Jhr49(?+yY8v*tg*7iD zf80))cCej(VX5g+HXihO=sT~aDa61+RQl(L=Y@PfNH2|&fg)r4{28g7K9cgb9bGe}G7 z+Nsm1$;Xe~HCGpW3cV=Q$OJu_HdKtJKlay;7U(J^z@jru!8{7vMFvZj8*92c{e*}I z_W8w%O??x~qjckpx1C-S7Doy=6;d)L@z6I!^SlMyZ!n)f-jIrwLl6UjM<3pTkH32X z{u@YSW%^}6@7VN+Npx!WE3UGHD+^K#mThyYYsu76?$(;M) zdl=EH?j~K&gE>k+$nZb#H|;e1{EqWmDgu4>NrpeTF1)SUPJ+q<6dB1$@$$bRsrzJ_ z$dXbokK?H{begg9txX!8G8`{vky*RiLDV>U=1XGsZ@4}RdO67Xy|+KU;9~JuO=M-4 zvl;A~76=pX8|$I$UvG{l_$fy1<+6%{^lEykyD)deGp2Y95b)g7e_Ee zFcFDA2|CDT*eTkO%MkL!VP!VAxMt%9h3XTu0J^6w%Sb8Pt_p;ff~X(YM-46Zq7*^v z7cmW)WE3fguI{aa50Rs;?umb}ab%YrO3^FI^?@zEOF5`r1OaW_-)}gd%Jsr-U?RtQ z&4NBbh^NFY*QF7zCbX~TPt4R?tU|wvDQEX%sjvz`TWIg0DHIQ6`}J;M!rCY~z}IG= zWj4^wdmc-$HS(L0?cf-4g$O)5=WHPV{_0mR7B6Lu)SWe~g(jym_$d>lDtBBhK~JD# zg|PleuJs4tYXg5h87T)d*m##@yMI=~^+QTn`IMDJa=ejA$E9<_2?modiHJh}4JBOt zM5&LLsCDLH?el9gH4G?>7?DBP!sUZbjr+k&$6daFz`8`m=zIL1+T8|jLXMAA7)t`K zDZ!Iges^V{6+G=S(KlA^qohx}=GP~RdCB2vI~CQN%1hgTHLVcV%&-YLQW*ta`d~nU%c1L{ie)m z%Hlu3cl1zIQ>2TJZY7bcbfD`1tI66WwL29hWF?SP^a)hJZ8b$Pp7J2WYutRh?d1qt zl`7`VE@$HsVZ68c$w0+N%aAO{`fgU?wZ(7mG-MyH^*u~uN-vuZ%&iX6Ph^dYN`jQx z0IMXab?RO(_nE=M*ZCL-@s4kdqkkK} zsJF|?6-d3*kn}~PN{=Wgn~g65PEFWVia<74<@it*@f$Gxwsdq>BQVjacTIXXs+9Pq zWE;w9arF(|FVIL$mYf}qyUyy~nC| zx{1M&H78gXkJeo}r^V{+MVWcKfb!#+lJkW;!a z{EZpSn$Uf^V11&w=9GD5TX#gD-818>o{l(p!BDhv*}Nsl-2G|4b|2o7qOn zi5RQv@}h;lP$^CW%yO!cmp)NVjo*H^t$IZxRCHsi4l@of&<-dN-vpfoA**$aliZLTK> zWW5o9a|?ov!`2@IDNQI=L}k}jmFfAn#bBS+-a_yn7TT)WX!8z;*r~Q#y@54{Blo|$ z>syxHQgt{}jj1|UXvm!Hg2JZE=@B3D$I9{*CNN}l^o!KP%&LK3rx(eG#Y`S1h3s9a zQ-0T|A&nAPsadAoLdH)~9{?X<1NjVu+y0%NCUmZ3-gh_#8N<^T)S~1lU4>@m& zVde#chLY&j4ku(58aUxMG(KMpns2K8p9yq88f6A89+My!AdNzLK0J<$1l|Sfk!YB5 zsLbMx@wv_-deCjy$DQJxixu{)$vO#8y!q?Y!$#Wmwh(V>xUpteC`i$n_td$j$mo4oQpv&)R%_)ZKBzb1)_pZ3Hl`>5 zRrVwaZ^K3>@{b>QjzN*hORpE}FqXW@gKJ{+g#r3$&IT-PmE>zA9pGV)wuH>%9EF#M zjdH!&kypT~i`I((MUc{Axsf-SG20Jyaa!8p_;?)tc8$zw+^A}(h}yP~Xr1H$iv05% z?p6H$-A(>!DoD<@crZBgLT>B|0+zsvjd||>@{p9{EzaFT-1ZQEu+gxvP3939t7^2}s#`Lh`U)v+I?=g?=O8dS%+_4LffAiuR0oa+Jv^lRS z)@Bi2aF5Hl5n!$cB9%+4`_l>o=0}Vh@!3z(LcBgNSgD=Xd_vg@@8x7D&H^hOk1FRM za^MdeMo(0$^aFaT9&C#>_mFKAEQ9CFpT)H`3>WN11~xTOaWN>0&U4VZTO>SvW7jMKuBA4@>qXc&LnBF7B&Ijo0LA?v5f3+x+1fEmIxyzE z=d@r}6HX!VYCY0D$+()?Tf-nZfLnLv z+hZ&8y3YHQO=n1bKQd6AQO57Eqo^SuMN>%d;aXdD_IIIVKzbGY-q^6Wz+*rNGM1VE z+~>Vn?l(8#IVBj`LqLb8Y_`6+_IEb^g*|_dP5|n2Vd2%|8_gIK7!j$g;W%*)3$4~n zL;z`u81TdscxXBK;r(4;t!cTM-Ci7}z4V%hbd|kum0t=I05F0B@NoF`UZ@kXPUjU5 z{ca8FGH9A57oC7*BRGa50N>R@2adpxDgT=s+rUU}qjt}N5};_iU?bB&c_dOi-i8QJ zeX~x`%1jP$gUYhR^5{jyI0fOY? zwMiLF0JpyIIs%gkKu{y3V*(*i2DSLtWda7Qm~vcX5G4qjF0DkkduL|fSKN?+tH}XD zC-Ujrkp03I9_2(`r$}^JZa%Mv-|mp!l4dJ|8?Oa$W)KoP@E`-4l%ynEIfx#A=!$n> zV1hKhH&o0J;Wue5(=>>=q?W&0+Nj9LNO1=E}7{%WEy8uZNxZ2l6NKo?%SI_#Lml0cwdFfXC zLi+x0Qrh_PFNRCzvera+i&A1zTLu&;DcuuGa3~FX92N%nsY1gzj8{O#{oQrF^*8tm z&csDy7+3ub6C9y!*5>0HIw8wd^7!yCI+~_>9U=zH=`~Qh!vwTLQGmNz?iW$;) zl4^6W4U>Yne@hIIrmhqH>ASJlz)+^K3Mtd0b72Kt7$6InxJn->>A5@g-RSuP@wvjk z^!pcVy?{{$G9m;kgIsccT>&B_hr}YDh9rd7`V8^-enwT;c53xTe_p3XGUAX(k7lxF zp;f0-eDxdQJ{8yKAnQ4b7`9(xud3SJ$L^W?JiV+qooJt3#i>&LZsD8EUOk!_c}V2! z>a%}!qBwR4r0czt&bHa~!46|b;nR~D!U|*mQ1V@cyn`MpB4bkB^GW!3*;~%n9_12f91j8%w3Q;D8Cwl7 zFzPoA%97wzTcx|hUyg{AKW46x75aZ;P5f4nKGK&zP6R0_=z2HWI4i!&;-sN29cJ)u zJo#!Pc&v=0XY(IBRLLAt6-;6eq$%AEZ2z<*I3FMA(hqb~wt9D8Af8d)L^3oA*dv0C zlGaCLd}6X*f{(jADDR)qvU_%e7O%2jl;F(c*6t9J1=w~1^Hx(?}uc^@zHpmIn@qLZ--pEwWNP5?s zjsdXI_1K*gxv&KY?~qy4)xu!x7<6zbj0>Pk_Es!f`x`0v;8jyumiv__$2D$jlEB;A zmQ`L{Rk>I*X8!u%aEGrV0yDPprRL&;=|72DI=N#vl7UMTj2z8ux%+ogS@6yMSGH6#JYUq1K9D78C~Lx$ zuFHE~4|FvU2$~EOg~6YjVgcDIRHFt~WW8Gg@hyF1^YJwqo9qZ^f1Ie(2C=lckKFE8 z1qlJXiSZgs37@9nm8TWSZ)6rWc%o@pfXK3*+giBIiSso`YH7X~KvyN{UrR=K6@^1d{53lWWi#I}tyFWoX+lLhNSid1DPtI?6!6_Q^13G)AD zCeg2{oi~QeAosMSM5e{Kz5)4X%yquWjAianl~;%v99@=2)j({ouaCX5xnHIn3yTJI>-40=M8aH z+VpeYc3RigO91uONy~@XtoNO*wBd_~(6NdW!m2z-Xrq9(_j^JQ7+kiWSB$B)*95&H z6%_Ca0hG46RQ%L&>GWUM)Ad=`qn5|lr0qLZnu;AZLG}}lvazh9uM%8DH;kuy$5%GH zL7sS#gfF+;B?{{g$)$j$)yKw+~{|`}I{R}k^J_J(jppIWDLzDN#TuJ^J zQ|+jSE%AhynpYyk;+J45vEPf>-MtC^#nX~xQ$g2^Ys4#4gV^-*_XJQbVu+uX*V z4-K6~sy#b#dIk@eOP^d2ouckd6upECS^*i3{*R+Fn2v3@68q!@AGx-(v1>$FzQ6k2)!nL+ta-z&PhZkiB^=*u=KUuIT zv#Tn|yI|$cR2H{xIGw+#9~h02ojx*{c6!}!uu&|Yuc5`9c4YjT=cmIaC6q0sss8el zl?gfq`M5e4;Ct+PB}fkR`kJ@j<|kJB$5EAIi=G~~-#dZ~qLR^q`Is17TjVw?5QoHn z@m8??Q#A*8Z)?h8ZQs8%Oe0L?dF1!SCJ3|wHS$+IY!iqoh1@BQ8zeh@$D>Q3JGa7J zME2*2fbX0M_|A=PSfD7wdU7})SG^k1Iz!3XaBi^SrJ%J&;lVSG0?)!ht?)BG|j zE^qz`Z6_i(UKD2YIs#dm$5q^OZsUWdrehe*K*ceNDsa|hfk08h&oen|noV`@J*kPl z4b0|&6+es7uYhlq!eHE=p7uLZfphD zcdWA-Dh1z0IyNZ5Ye(rk{`qx0<7=Ij^omC^WeR?}xxJ4f!{u3|@(3?Ytndy0I4U5a z4m9O{8@cm;92M*T$5AzWI2%7vLam=}X>u>;$$*EHL^TDT5#{fzqqcH;&kd)A^R6h}Y%s zDMS?>Zzwh#!p$@l+1xn3Vr*NnQ-+>59a0*SO#htAObuqP#oKBw@oy08FbaPO!echz zpGs)d*f{rhVbHPRI*)p;oIzZ3alY_>+%LgYw5*~!tl>FwQfzsG4+pBiJGW@C;FRP~ zVJv2r+YrqHH{ZE*%%u7V!h}6yk=Hg&(Y{q^j{L-exFVcs$NhJyfTtpC3=%Lyq$JFHh2^7l*SaOg_G{L%Z9Td03uo87n(bksZS>l7A!CyG*1$ESl-tFL}+o7G%Jy)Zyyhj#uo&Rp%N4Ob~OXJ@U>ZPRl8`(|f z#;rom&%@7NnqRsZEkCPqqnz7Q2~X(WcVjh3Fio&@gK zi*rXfGG6McYT#}t!~cN6mSEg*Q)B-{r!{T4MlMRuvLur$sM^_>8Esl8QZ%bkURZx& zGRcRu9^+EbEDr&AFu|gwPTBgRcRyrdl($8lBB#J&FO4;yTc~lA&#_>8{GN7?H`S6% z(lQ~D(uUi{xItS&+Er2Gf^>zVddJ_z&-`Gl&BTE^Rda{~S4$YlVlACeX@jiUWnoQ$nD<}(+q4vYOLTOCl zg~UwvdpC!QylA?+uGT1mvKutEx6oOZI)j~i@|2$e*?@glh&AxO95Oe7&^I_{RuY;l zY*)fulhqff)s|bQb^qd0nyU&{$WBg!uJF<&KF7V;Qi;iIb$klks~51mSg05P z^T>AZJ-{w1O#{Nr9IxL^w$l|v;86Yp~6En>juzN`# zuL3;+#3GZOVLL8y3NB;BpOB6dw2m)?#^YjS?11@Rb0Nf@l^qzk<(f~m2V4<{fk?;6 zGz;2U-`Bvyya8?!kmcuH?OI5iY~q2Hc1YddNo3}6xiEB~Ph*xx8a=pI1gv1-ePH)v z=1Q9N0j=?Hr*WH|uGZnWA7fgC%;9kl(e?Nz;n0?n2Kz;{zeHXZhd7W9sV>%d0f*W> zTk0IU;2BqsfvH%U_is>>e)eH;WH~2CNwXJa^21cns9m<=Y8P+?8ZC{%sar|`<;fh+ z(iqpQT6Y8+hRgBtM80(kG8=`GA<@XFQ_Z*c$l6vM6`lU7`l)GkiJF=$*8*LCbn} z!~)D{prlhRdJOjn^;_VPc9-w;Qw%RKTbGI~*|5zS`y*;p)sFXuKsCNW_AfP*bh}D8 zDlA>$B=$X=G_HyV{boU+E)5Wo*G?wqR$r%I68FuetTlQImfG1J4>_1nru-=hjuM)9c7b=_TK7$u>Z0G;p+4oQMd^amEYS<}RZ=4;Y_+VL}=+ z=|NY91p@N&%^ay0rzTS^b!Uj52vs`FxI8YvJp*qz zSLJ{((@8gqsvF0>0CGOj{5MjfcNSqXh<5lJO*=^h=t&>d8 zj;F}WNtq8gLn)Rc7L1)?O=_a}t;Pn(+DV`^yGvPLz=Wb{tpx{rUYC#lFbwRpY4B!S z{mZIAe2$ytf8EY(zZLc{Inj| zH2hPjs7_;6O_%2dcFWsfHeO@M1#8oBYMGWx8`Gx9$kHB6<8dY_NrH%BBNyuURNySm zde6Ar4)8@>puws!!^<5-lU{;Q(NG(Z#_bLqz&7zlSm_CU>*H-vh+Rz@)i#eEE2@m; zH~RR)a=XBG7^%~{ZMze@;lOCuOi474ax0O><95cOsODlj6ZJrt$Ci~*rKW9&&D!Dk z?s?>5`iF@nCeg-Y>fzn)8 zak`9>C)MzCe-dM?y;3-Qe=_v=Fe%DNbjsa^0SIDmB+jnVx-WP-v7cp2h$38%KTua( z6O^8D@Xe$^hCTsoQov#hY5$xXrUc{ACs(8YtUAuy&ML+CfV7T?phAbv}z$ zZC4UGohU-)z!HDk(-h^reUXiuc`;T4fqYM#-G{DFWJ{DJ$BS&_9xTn7dOrvtzWIcQ ziVBN;thZk_+u#9DG!HW}!Vo{OPxwjn34W%D=4R2;39cdjV9Z=Pm~hX&re8d*9=nEk z&bMpTbinqgsZgf0aMAg6;_bucQ(t%XRFiD$rOhls-hMxlqQ!%ce%0E6es(QW0yx#= zN8Fk!r`QBOhl()jGS2C09^@GPi*)Y=D@uUNy!HEzN21n(B_-43+{tWni{aoL;`=J# zIZ@d14siRZg0W?%G^8Z`A`sc~N6 z%T%NNSAw;hA;X9xU)2|G@U8`dOb6SLReASBHf*Zktcb|pIxfE4ffrwTZ=5Qk+NgS{ zT=m&%_Rf`f$LVr&>>m=gz|g@$K}9-GmBKy53_-b!&W)y)EYhDieZnp&=STKw_iwvhp_W9h^W!1z7HYGH=6#C=L}iCy zX#pBEcy>cA)#hj{)ar4AL=x^dSP>Lk<)a57=EfNzndL>+-;$4D*WTW2cKfvLCX2R- z*OZaw(Y;ZW7(7H#8FM3|+oG}@@jxpuxb&Df$YV;K^KZ?&Hc2p*^oBX=^Q@!h(hLRY zm`R$H9rA{g%AoM(T%}1hUg*?YYp-Hul%HUp0y?hsj-J++0;~G5iJ&w26+>A zL0R)f@f)RWie8CWfksZtnT$0B6B}R$nOJOg{=QbgTRwhhQ8m}Kox8jzy|P~nZc%j5 zsxr>KS1Fz$LjIX2N$%x1da$skv?(}}d@O^i-!zMPUkWnW&aLf3{~m~UrO@bzHW4%R z4WsmBQARv+U*o7ryEdQO02?9|K+B%mwQZAVoT)TNVWCzb86k=YL;?9!k#QoQfj zs@7l<1LL^xDyi`uq%|>Fbf}2z<784H_XBUF*~Y)SYkj(b!M#rB-Gj5togO~)%-Hr4 zdja1~nwCJ@!y3kJO{ap-OIO|;t-bR_&%xymavayq#qHL5R6_^-0!BkRNjd++HSp1b z5u?p4u7>1d%^HY(O$*)RD&q-?pAKIp`)iAxKLs>1>M?QrIl@arqiQ-p@N^Ln@MY#yw%7Z%gEjOV~YNjK%c3tJZ>Kktp8vzW3*)0 zXxz!+sM|)m(01%M z1@~4%qcTYE0I`GEm%^(8w1svIUN$_aYkLv7Mqj*vu5O_`xa%{o$|s5mDf85RpA!Rn zNo2h|xiOjJ*4!UYaFduJp5|_4!#e))Y28q!=l#w7k>z#AMx2^Qn#c(6ecnuq|J}gH zv^3!J9oiwTKbZLMuX`9&`R^~*?|f1htpIP7B=H&#*5TKAu)DJ5lv=)zk4+*ty&3qZlT>g^kVvw9N+Ei7c@H_cT%XLQc}LD!;$t&u9*8d+@B#-8a1Pd`Li`3yf`%maVC$!K|1)tC)SKi?^I9 z-`YSC$6Ys?=k=jX4$&IzwaU}l7!k3is~xk8(Wsf_dYhYitu~$e=4PFSnC3>1xodT@ zC&+hXa5;1g1i3vwV7!-YaeuOWKaz9>LGu3mF|DVkZjM3zYI-8+*-F)xe9PVE!?lZ_ z=hu6)MBbM@LYy8hEv=EN!368Wr_A&f%bsfa*L$yiTzgy$?3nH6g`?f{?7JidRP`I} zIlmUKd^Vqvmy)rg!(n1jcHmW3stvln!w{wo0~eW?<&)({W4wQ>^tceRAD z`bU5-EyRY!N_!LI_L}n8UCR%NptpE1gX0fXi*oOtvpPjIJ)@3b1ZzP&PUmX3AZFch^wf*3L69N}nEnRaZtG#6oLmT{3)B zK2udT@8tFyHbY^o*Law(+5M# z=5(Se+RJRiOXa_89i6O=@76qacCEqGZc+qMAuBPr#t)o;o- z#SdDHm+BETSiupN9pHYiH@k0}t@{*1H#=k}vr99}V~y ziuGSC5`3r)9vBAi)E9sGiQ@DU;c%^r %X`0IW2?2?{3@!5P&&zD2oq|kW8Zx2~* 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 z z_oQZ)IXq7&919qFAgQ%uPBpN(d;1NWZnY)uDqgqdfn$t5fYM5}!D!S?omTKWm>_z) zLu<6b@>k}shBuMRCg-T5NB9DUiLY`0Tm*^Ni~^!5JO}CNef!hX+mmlqFTQBYbl$!S zYk668Z1{U!PlO7oh`*&sSRw1w>>+MEF0#*!%`)E*`siA6n8lm~ajgtpVnAW?nM5df zq03XS_xwbIipN*tBK6g2HfdnmL!trq53?9I}F+&+6H&9w*_qZpcp!rT{ z6gNjGO1Y8e2>`V8)g{TW#GY!tTn-=dr!Gsa$C8sQDp-cUj&n#e@gZjJD1L(x;xi#^E4jeO4ea!)3JcjRhi2uLsUj2 z+85Dzy-My{>u_nWT9yyU1PXd2m+3x7?XF&TmDrf&=dk?{Od@F449z|a#^>czH=SvouiRv7M2!yIJkOX z#?z>}*x@?E%VF)63>*5h)I!|RT90Be1$Y3d6+M1f`~&l4IoCO;NYTFE_$lt$)GN8E zd+rEJY(yj|q3aagG0^SIKZRLxU*e}XIgMv)V%EH}TN@!`<0B+fm}?43Yk(>(37I|> zx%@H#h*MG;lU-$J2A0W@)%7sBOok+0)a8eoCr6%@=t2W>GSdV%O)nY$Sz6x7u)C=o zd96UPDN^UgLI$;xw178@fP?2P5n~;dX|&e_>MQGLb!V?}z54+qWT2)#2?R{*kXjy4 zE=J0oYkU#9S-QBsh@w@LU@$%k=0;7TTWN`epT-$RHFi5vRD-xha(HlJAqRFK;~kZm zErBY;ndxbvqklf8SGA<3FZMsM*nkVV6%^NOeyFCpOfy7P4N80wtzpb(M(zHtr`NYL zL?I&J6Gl@%`HMJ+n3Nrd#k%8D=yO~6I`bp!8*-kPdm=BRjf02g@c>W4kygiDz%pa> zFEDn;hr2bVynHkgLZ|iy=5=M<${*XK7)*Yn<=oJ%WYD=hg)B>JyvPoM@nRqtKO0H( zp_9lqJPe8_(9a7P#Iol2&`74(&xt~kWjl8E9WM%;$(F%z} zs)0AtD8Y`;$(%4J`WK#wlU9f812tLqy%DLiZei+;a&H^!a1P)cOiLAyGkB*uZ` zzwD5$Mecn&ggRzeuOHn!Bv#gU0>cX}Csj^tA)?4*AlrIWu}X%xT!(jQz-zd9?*WaaRZba##w)NKrC! zfeohKGO;)Phni@EC@Q<|DResQcT_Op;iu=PaJJ-oAuv+=^%Jp%C)GMgfKZXv@34}P z!dA0IT--D0SMMgZ5}x1>6h;3*K5-DMzTXwWCAHDfajuZRd6?5s!zI?5qo?ZGFKAtgL5I#Wp(p{rNNfWZjIaWAs$S9g6+0NA40LOn z8L)ndtysJACp;Td!(Rl{RzHlB_E%Zd>NAe@oaA3QXr$lxb7nsf1zz23dmBHoW7>TX z)=vdteSOY#Eizy%yCQq(UzW&H#wf5vg61LC0dG%O$GAQDizp}lBFfBwC|gE7r8`7x zo(3a`&-l(|(6mYHMKPa=zr=n?%cb(#ALaS@oYaO4;+-Qj zjj(qDS_6BV46~0T6J(GYWiA=PltILxIb{4cmVFUiPFq0;{}G8I!z|j+;txM3!ClI% zh9{BvYVGm`On))u+bl+~2f$Q5qFg(7@z%R#$pQZS+f@$im<&^Uw9q!S6<&R z!~MLFOtO^qGnzgtHrT+cQ!4`Rf5p0hK94iZ1b!*$89Jk)gqNn8C((y1f9Ws|m?Z^; zcfPn!G(Tr*b=WYv4s@8NQBDjIq#@d5uwm4qBobLsahrZKdmSmn7-U!zT^GG_V6-)a zN2(9E#G}WnAC+Kkej{=h;Lq)ookjtS1O*BJNU1V58TPrrLv*}$2<_g=Cu3;-52CyU zR*3HRlk>V3X5UN_nze3Fs!S~;`QjkOY?SH51}I}ax*%|S$4m5r2@B2Ml#%N#xjk*E` z%ppC_4S8%#|Ei6k*MEvYZQSFIpu(gGu=Y0a%JhuNAJEL+`hqC}*6+hQapz$YxaQ+A4SIj9cG6c8iH)fm zZfPFLO?vqsVxNAZILG%tB7KYA)FPf~$@C#l{PawgaFE>6AB>Q7Os4z6qw5zEf4J%Nz?}rsircO~7-%NYCQGyK`p2wXmRJhoN z1GI`cJsj!P(I?0zjEidnXuig-AM@Sl528$PV~e27#*$vtca@SX(BZ-w3q0wr72^d# zYjnbK5R&$sgk2WxFxG-S5D-R7lRXZa$S^Mrd#q@YwdC5`AL0IrMzx#{I3y(wcbw=UjTgL0!vRx(T)esEt)#;Cc z=J8Tk`m?5;_jkqbVkD4fv}U zy{hR-WmB_3F?*Qa_<%3BX2!8vc;4}sr)<3MDM#c1PgxgWGwRGt)w738hRCqOms?wW zsCThOTFJ9!NTMWhhLk|m-$FOe3^RDB`p-U^8a{?k$T@!$m-RRs$_mZCwgk5$+bFwt z#gjh^v>qS6lY*IR=hh^t&*EGy5%m`?9|+jYY(cee3m`(N#|qdE^ffXPxAdL=k{cyJ zSJ`)z9duJJ+|RX_-mgn6PUw&1V1i9X!pJm+0$+rkSVfAGy~1C(oE{3BI|r$-Z1G1- zWV$D|JwW>$`HMK;me?4SNr;bPz3i!*Wq!sNQUA*|;E>q3;d_~r%|)@o7lY#%|4o{gc{z-(5!!SN`cMBMIYv(h@eb$XYStc+v6+1lr7AV=tAo4ijs_Nt@!%%N ztQWN1M~4Kh;Nxrx(?q0?O%Ji@<8x4PRUnAP8n&T0M-~N+D#~h7+e&=W98Xw3CbpnQ zZFe_t*cq?tU$F&F!;I0P3A%{VoD%msOX6`WkDuIbhZDM7_n^iRDIFe_w0HI;ZBj*J z##i&-DuGXeeQ)kG0wA?(KRKUk;U&##p%v?T<;oLP!iC&t;fmBzh`uuZ9=t#In`XAm zo`y!A!0lGvm0WdOKfr6#?rp(Yj+<@lh=3QcX|S%@I{>^qEd&PTEi$$aq?d=;Uj%J8 zP{Hjhsjf{8_qE7$CnC@M*x-$Z{_b@XxGo9++ZK9dP_O$r8=sj@IQ1NZ(}GaQ6F1T& z;ZV9y7G5XBy?A4@+Mkf8Wy0)?#LT3J+YGCo2lZL>U}PDht1F!WKO?K(PA!pvR!3ul zs6czLt%NLs4&Jbz?^pYU*tTjRab%Z2NgGGn>$7)CMMEF4 zOZb(nKWoSj>mqQ%lD@fH!6CURPEUuVykv_r8f*~C%Tfd|!bU*j!;!8!bvL3;7W z+TVTc0#(vIY{;Ffg@=TR8#)k6nk|$S2VND?RhCoCiN|qfCgdsrjMnv=PUAw zGY^sBHP%gPJ0|Rw6?ulRnU5cGH^bJI9%hI^f!OsNO?e<915dMwcj7a7N%515@WdTD z#sRFGUYTj_$)SkbT;*vJyGk8z7kBOIYyAc5*Yt-O+(?#EnG4qvPcfys2$HPPDS*yz z*L6t&z3$e?4E9!GM#e!cdtk5Ny+kCrHBT6}{;i9PE8TJq{%0j8V=Sd>k+8Wb25Mhgx zwVIyumlIR;_BfZ@(WD44q`;w+>*9669~(5?mYWy-*wifAV!iH~`86azIynbcGNt?6 z$&hFx8 z@#jbb@{aiPw35>riUAk6oe@x#xm65JRm@0z=ONja$?H*Y9*)>N>dGVSwOcB0@M| zef;!BO5Am8S>y4n+w2VCWYmyiRr`0jtIxjQ{$4T`=BLQFK)@0yj=k;uz0Z$P_*;9y z2Q(VbHat0pXwG4#JWWCr7?p?Does~@q^&bBMX${mW*xoqJGo-nI(m7VEcoj4QXY3+ zdctpQIH*@K=c$;S-t8*~w^O()RnQ%+<*g$T_IRbP-d8qyJrjfR&A)_#)Rzm^s6P1y zpAa|gM;EO!xQKI-Y@|6x#g&T`bj9zmJismpihU&=?d)vsQ^6Y!LS+Te9Lx%~-;12f ze=KrBw6)4yr%AI+GX23(qIHWVvPT}eMPetwD|4PRCwH|~v^u3{r)g~LNv%!9pkKq8 zv{OErI%{F9e4B1igCs$Iam+eE%r3S$Ev(b-S1m-H{*#vW2&=1W2&F4mzrj=oZ@W5vh)tInV3bR zxUDcg+DG0XV^COKL3toIO7mY^d&Vd^wsH^iCrJiuMvJM#m6nI*V5zR6*e+IMmHW`~ zjc*1&N>dT924KF4@IO+vNr}8)b(T?U(R?IFO`fuz@)GSBp5;YCc5_mNk6c z)mPYKyI@R66eo4nKzhsJZ@_i_H6DF3! z^f_|hXwDoxPoY4Gb3b9^F{xhODY8e8@zuql;4k30Ay9fFVYc{i?Q>mWxLf|Ze_JI) zz$!7n!>oFTDoY^K1g9nW;CzBNNQM^TB`a8F+I}gJocwgvV1oQJ!<+WX{H7NlRBl!oFT3Ce1mi2 zHV=P>Qx9f68^_1VFzw?UlG)u9qN+%x(&dv@$EYxs_YE`J61qUt<(Rxe`CDOqlH7K& zzw!#@mzw9rW(N5;j}i!){ZQ(Vgf=(Jw<`~T`9}P?>p~BRJAZk_W&XufBj3Y$d?fG% zETp!&mIn*tJ`+3-L&|aJAnI)Ao~Ry@%t2zJzIMMjMD(DNtUx90V%(?W@pCh-x+~kd zpGk#OilHw&$Djn6)DD!%NQBw`Sog5vWT3?Y1))lJ2-X?Q$G3@%l&HZ_HjzVK@DmlsCX z_!wVHTpd(WzG34{w{UmPAb3Q8S;g9dqyu@j#noNWUn-1xJ5}FhhA3h?b0dvx*-Eur zG{4i%?{Dr(I)27%%CqW01a)T=$Qu~j&ZZZ!!*CkYK%RmubP9)qr2I^h!LfKeOkxEo} zy#ik6!@30KC3;Vax0yztg>?pQzhJN;ImdG935T^Ng-!F?iQ_D#ycj;5Y6W`!um_|0hENYM63l|J(qpMb?v zyNg~#>sY&a0x#Sh-^AnHHNG|Y-tcNd=^DnjSi=0IV$_Q_G0)E8!}OE4cr^yW=H|V{ z$a|bY@zOUJbBJH|hM+XxM9+SQn0e{0s+Zb!{>qTaH%s<%IWGeN4vfs{RKF$!p;G!9 zoJ(~ClW*T5sX$-O-VO}06K01mCd8d3RI!3+nDC)Z@qa-H1yZ9}F4@$#CDmow=u^QE zxOw&1Z-<08(VcotL4?XqfGE*HY6&wlM*mnW#&ljbj&>-Pkm7)tzr*XLO~@;~6PqO7k@SYw^imMET=(*l z|0SFU>-kTXSvB({NR+I|J2>JsH)370;>4l;6s!~Dx;tG zWKt+Z>|OSEHW~Yc%!sFh5&kOhY^DtK(a4{4Sfn7{az`|OiYZ0oys+7UGZF-x5k<)Q zZvXI(Q*2EH>F*FBBry~+&=B}LvS7nw`j;;fxIl5&V59T2#d2dp|AhgaV|PWqA`b70 zxWI@gJ0n_JC$MDDB@TxOeSd@qiE!9f4akNdgG`4G&D1Zz-RvMi%2UBz{`;u~MDCB& zLi6v`LO-X*R%zHOzfQp@2>l-h;vJoD0y+XrbUV~MhhrKUiYgQIrL7hCt76JZp>x^^F1(Gh&!9ow@`68_Me0R;gpsdX2npI?fb%WtFYByDz@1HrH6597ZLSF<)Peek*2UX@~~{mlQgvp86K`rI55gS%x;m8qg@==`O={K)fLWsJ_NTzp#kA?!z@A024$ z43uDlxLp96XE2YJK0YUy)RJNo`Im$(81>AZ2WoOv^e_xp`6A811!ACHkI&Kj zG_o6O7QdOjQ**6)?4&Bn1K^Q<1HxE4i*2H528|BWnPnesiHLvX2kqc&u&(}y?;6M* zqy>D{4&;@E1Zs7~dOWzq=jQCYMpd_8f(h@mFM?5d>IKg)MQ?kqVSdadVLR8)_vUI_S zVMKHOUuZ0$5KuKd_rp(#Y3GK#)9(0Man=yajR9Q!}?E z{S9KX{CXk-wZ_{EwL9zQ`4DJouTd{$Ai0JbUTKzMIALx!EW@re=9Mly07|wb*b0PIg)xQu43lJ^<|bqk zz_h*4W`Td1wDr~%F62h}DR?f^cH$tFS{Sx!Mib9;VZAiu=^2GTBMVX3gbVj99BGMv za|z)HQYNRg>qh~3GJ6!E(n^H3)mb3zL?*&va?kZ-<)-sR558Aos9^ZOxz(WKrV_s+ z=dcm!UwY-i$!95U=d_`8tiCQ72B7Vq3=okTmOeJhrZ z<eZ{W&#QEmyuK&xZ5a3DMHWRM39`3#Y^?nRW}1a)qt_^A z(k+U+NdmKOKBL{NW>@n^~U|g&3ek4`07_pHsU_BIFfdLWt`*+ ze}}d(oyrKWSm)H-MMd0wd&M|wC}}@D2qr~0wTRVo!A!*@=V411^dro*%dTXfK1`2A zMKGoybBQw`_^*!s{l@PrlV8^-lN`(g{R7W5>I4Kb@~zFQc(}8DMLYefne-8Iee*;b zobTHKAgfF+Oyt)=K4cD2ewAsn8erlREw*+H?o zcK7fVwGO7s3m`ujmrZO+ps4jLsIbh-#6#16p>JE%Sok1hec8@qW0)ZQctj3LWseAx zxJ6bV%};jB>XVK6+rPpJ!+TeEvzYwjw~lAWV974*iIMuITfN*G72UVJ9w zyPSV<<651{^zT74F)>y+)`!*V74>C74}}8m|U1?J!&m;MOWx=+jyHOgcBYc>mO3D z{3?U5Q?osRFwCamF2ENQ{L5XY9Q@@je^wc2vi^pn@IeSyfaYT85}&wdk{Bf$+=KF0G_*QiMxWzo_-o_IWS2zb092m~ zPS~h@=htyTe7NcoZok{4*AYkLlEelSEvBet5pDBGvR^m|?2r=vX^Ai?1bx%_a46Q# z#5=P&1Un+exB~Y3A(&qGywH69KVto0#V+;6`oj_1DUIV}{W5nb+)lCdad+k&O%fuP zgQpwm&n{)(1u>V63wUt(=Z#V(U;_`&)E6H-93cvun)ot`zrqU8W|bSYd{9Dz93ukc z0=w87kbHyBQ)D%0iqYCmEE-kQmvi$_VAto8zPlW&5|`SuP1rfL?^IS%(6t44NKAx zIqZnfttZA85&1{04|038M0%w4u~0KHA19)E<@xcTOd|4ncLH-s`7kJx=OQkj3h=D8 zq7Mjf0y-bAC48|4{R!C8RdTN?LR?O(Q{T07sTpcwS1W_1U75AQ#z_KULeJ6i&uZ;q zqCxf$@e9v>k9$_gz!kA89DMB8@@9Ouun)FEh20@U{%RM?w0iB3y65^h4@PhYb*DJ< zq)kZoKPd8n^+90Pw0pumDCM7!oD!FnAE(J6@)tpN5#_!t)Ky>CdO!7lA#xqt^@tGp zRGWtW!I6xy-JPdi`ZxOtI>*>Aia+SsgYh6VAVc5`B4(P^Ihb+O;LERcxQArxf|T8L zp{Tw)T=ZrOlJEbC$))Os+--bZaw@G5!U#BRlEO^(?XZ?Y;pRqPnEec>FZP|Gbn zPXawb@|KqFWE}p|XzQzK>xfvDhBNgu*9}<8#Z=61tYo|wv$OQVdkjWLCF-ZfBYm}| z5M|2VlrFNw(_t6VMvJNjD!PCr&1Nmu}D|G-+%G!?C5u*jOM$P}h zk=KZF3x*yRKsONB2#;chpG)8EmP|txAupdLtp@dljYwf0fn{$dU%FxLD6~J3IV9y` zLL7v7CwldFgb?W2NAuQxVItn_FYC^5KW59vt!0Qq-U)Ga!>s%wP(4QZlf?+|>5n|G zj(^m+OH)y`Z8nISc=P{?5SsTQMnJ@WEWFrAYo`6IuWIT) zm~y>lrO}mb-#F>aR<+nnv@NuRR66l(~=D6|5c|02y)Hi>Gc$ES6_sPrQUdtgch3f(l=k0!+3m3Vq+=toDIl{ zl^qHYBF`%1(?ig<@QaT``@vZSDuBoG)&hql>o2@{!IW7J0Xmd_?!F6$V~fQ9NtS_k zENozDOnl5q1zFYE1)@4f?EpP~))U`?I5Ad0C$An0Ox}KpwiV-x2x=3TwiMAkPPJay zr4J`y*_`z*dk)s!jclU562Kqs`qV4rJq0~C%~7uNeVwn7v))mb4BLnaEdFR5H~4sf zv3dyQ=j{k*1MpQh@v5$r8(16z#$d^=mptm^Gu@dnP)!PrkPszsH~M2ueFlj2H=&Js zI`af0_@)_nxBQ#!GTqq(4`m0}&FZGd@D)MkW%hR#H4T|XedVh_Xi>Nsleaqw7ANTt45`c98qiMU$o5fyZMpbhbr>-z`;-g)?xF zTMES$h#4y(AG7oz3FBF#f01JlL9p1URgc#!ql|~nAz~0o#S9lckmo93%O5lE9 z@HDJTVln;Js;Pih4M{lVUh`)HL1qryc~tA}PV~yJo)tCSTJAI5@^z!rpN#0xl|fZk zxW&1MB?+VU`LG3cm|olGFQ;IO%StE~w>;6nb45}eT)LfdWy^mW@ka17dowK>lbL=a z>6w!O=k&yH0`~mgu>G`icy-_?)cyiI=IP@2`MKni%AOgsdc=|#&-0m-zuG#~tcRI7 zhDFpq8z3EtHMf8L1|rFq8_~|*DlQtjybRpsuV{BvDEB%wpZUGk>lO&SzFD*IUr20% znI;kuqucUzvoq%(SX_Ivf-Bwidhwt()6E=O)X3ME>fZ2n&E2#L+4$>s-!{3dJr#s; znz&x)_z#B673}=p&e~}h0`|b-;U`0f#?i$^)YJoT?MP} z)M!_|;&=P!QjOhpaXRuC^y$!?2GCA}XzQcu!m@e+s^Q8wgVqs7zEpxsf%9QHXZxM8 z{*tR>59I0(Dh0I9C(Xm3be^;p>7ZM*@WK@L?(Is-;bmNrtBQjdDP1!zE|UG)X8#Ez z-_Tn<6q%QKX~}d+d#=HcD$S*~BXWr+7ds&8|1DVO>yOr;7cbLQckJ)iY5&@bAX1N00 zYiFA6dW~Y#*01G;4_`NWLF%1z zIzYVPtUSeWfx$E@xc6EFWl8;pk5)gX(|4(VO4b@Fh2&(uwT|q8hnAvLOfyB*3`!yq zY@zcCAKMB7{tEJgy=pVWJ3i=g0)RnXoaaYic+MB`&Ig=afUVnM50~z~{X5Aoq9ozC z)Y4IS2!}zCe@hwNwdM_vb*7%gU;0kv zcKcRWv2-Q$7Wp5}vD&WWMxn5n3D^)mDpXrr!3%`gwnl6NY{OV|5BtVnvl2bdM#d0W zDn_Fn!D61*MjxGm&j_ym;elA4m{t&GKZM5b*iu;+?uq;*Re#J*h+j)7zsSfw@Snsu ztrWHl@i%H*@Y9spxmJ`Rb`x(E=RNYg6Y2fnl86(=JqDG13>ar(XZQs6zH+wd+Y?v5BwGr53w2Gfy)J$$rA;x_0?ukfyPP_4hcwrmzznCL$9`3fr!DV1}* zq3%EIVCd`&b0R4KSpzfbd>h3!}xBUl1`hEYv81h-1-D* zu|{T5YIXr7sy&q}N+VdvpzFi^?77rE9HoU{gs$>53+_=B_WL4@=&s=OGZ zly5}Me7Y|cWmoGn#`#-OY^P8GSe}&2ws0+YH&RZ~J8Y$*ig@)tr3l*nntN)V-t(xVEL6?mEz~{N0)G_VE@6A*FRnN-KFbJDWgDM|5dd-{`xO{!2Z^|+uF7C z8*-}szP|XrzBScjll|N%`h9<;x$;~3O+qLw{zsr|bXP^Eb_rs7ypf#nXy8oo*^+k= zq=y1s+!wZenb>|^2XT&Vk6!KAK{e89qOmqn%VaSz(E>_9<8)jg2=NHh@;iWmiU<0^5D3c{@Yes;6 zu>U^BOUTZ8CSXD5@mPb=@92W!!|9gfn5Lr_r&Skv+?s21IbS=>P6S;KNoD0!9V1ru za0fJOyEQtqoy9uQG;K+n-dv^s4DW=KkBtiP#mDEA#FYWBd2HCW?G%}hHzqGVV?Mi3 z?q8yLzUPGba~pXj;*6$*9-|g%kuPP1me)6N>&@@w(q;y2?^fx^@ZMSyd`^bE3%rg7 zGpLai`H~-vYs+NCSfv$-JiHmC6Ay5BX-ReI~4 zo1t>+SEuxEC0L(5dkdUA@?72FQzYaIH;YG}oA!e9bc@?Slu#d|D z(K->4Cz91PB?|Q7`319PT+Nd_vu~=r_j+Ibe9OItYi=q*JCe8?O0&A2B45~~DbH{- z0E+hLCq?UbcpFd8QBzE!K`N6u{1r>Qi{o@SnoMT}qcjfv9mQ~NLuz8(lgqyHSkIyQ zOWsdhoXgPOp~~^N6VyRz0|xlcBK*9*SlK+{NmK9-ESeT=l9ZWzm^XNLkEut7nU(-U zBqIWNvhnL##8szQ%Vc3G1M-wRrlsEOsLmY>w*$P`2bisQ1QAUgGLVmR58ge!)TAum zo~NP_@gS6c*Y+|A*EuVoK$!7Z=V~Cs{PV`=(uRX}#TYfuh^EAKD38z!kt8I)0H1PJ z&1~?lykYT^LAzA>TD}g4fKM-sUJF}iD5;MGc;$m6{}Z*;eCyO_IzqKeQJ-5wi8Oc_ zhEQ)l$9~=8lP$qTZkP!M7>I;uNCY%&evRBs`&m7Au{gUwp`uUwg;31J&Z>*1?Y+}a z9oJOa`y=@uR=c6gsn~c#e>L&E;OBJ#DhDpF8aCKY1-@p*e%I29mA1jCAYM}VVp2)? zp)Gh1rH2+({4Z98*_>S>Vc`fFkJb$Ji`0+rhSG!5r(gUa#K(B$OT3T~y-ZN`dxj=7 zVgigS7sJ7G7sh(mK13SIKvehUl$?sgD>`LTx`TZF8wdXn)?OTjgAIbL(j<*o{`p{S zpl6hUMIqWTvF_5}Vg4_t8_1i418Z}yXw0r-D69HDm3U3`9EAB#@d+_DN5Eb)#4q zyBYrtXf1cCS}R>u8yj--i>nB8nL_`Mudj}aYI*-hkdjhS5D^e1qy?l)Md?sd8U*E1 zOG&dVD2OPXlB?1nA+;>9EZwklF5R6=EzAB6-ut=t6W`bGzd5sK=ggV&#LP3#yx;Uy zxzDY3Br$h2^XQ1z)YGSuvu~6uJ1YLo%k(j)b&W2$sEx@lVT1|4voT$GqaE9eVrdqD zLH(e(5I=ET>zOl>kp^lr%JhO){`vyxNl}Ed=P}g!CZTjg3PWUkMVF#^gi!aoE`k3f zNu)W0tGU=HIA}5^68!c`!f-Pr-OX~qJJaKjNJBXSUU{kvl3ZxasrpGQz(s_v+yYbCr^=bzO7+-}nj#643gc#ewakz=h|_HtosS){zcawn0V~ zqaRC}nd-l#O#9oEhdLf&*)u0K&(Gs8`#HrJ2DM_?BY$benT+s>%z*zLd%D}5c|YRb zKFMFuZ+r!nwWT+eJC3jXvq5af)vI@f7W9?R+|6r)Iv`ae#wC9_e$0v zJD8jH_p^I;=@c;6E7OCo-M-AZ-(&rUW)@(WQWx?dc^Xy5?OUDn_$6h)U&IBjS(Bx) zZ;nCN6Ed{_*jVk2)(ZhVbV$F*6ZLN#K3Xw?w3t|190y0##3v*DPFLLVkUaP#fhUBd ziz)cv2aw(W+fhHoP5C){W~iI+bzXkQc$cvE0#o6L|IVQH=P%9r^F1m#>uk;hwzy@M zZ@`%_e{T^Y%+6=_HOI*t;Ehfk&CC%lYeriV=HzG-Q zgeQYI`t=8$$O{;Yj9Vq@&fHuifsz!rs&N5o#wo8Ezt0oz9 zzC8fcCxtADJ~3;o|HW;`B$=P*&Fbkch|exqdrb_r94ke9kegq{;_XoL;t|v zrUXmNy^?bz-3gaI>UYB^W4H<=1d|HXP^?DH4v%@3lFlGRz-9S!xb*Sp?{>o*=>Ae$qO7SpDL7>a-`IG^Lqzmd(8fVG9`K7gv~`1iq0 ziSBAw+Gt>-cl{r63Q${})iB)upG?)G1LOO-FDN%&)3x{f$ZqD1Kz$oIr#?4o{EI$~ zi2|c6vPH``=*sR9R96%c`-t00<%(7F)q=Y`fM6N?TK1JvHdS!s$`mm9Y0rY$V8dN! z<%+xk(3WOA);eV40`mL6778Nx+!VN6riF$FqA93M?tOMn^>$aLUJLMsC?dpAH~xr; zK8iS>CiMb}n}~aFdTWR}YMP(ziC-k%8@sAMKi>XunK+|)C{w4z zIfl^>!TIWf_m$U@dV{38sMsfIb0d2iUZ&CXF5YacwtxS>C?Nt>pg^)~geUpnhj>PR z(p=L_tl%1r5=2OiiD=N_MPslPfSN0{Q=1oae6=+_f}#~Z@BTq2p+BxZw62osZ{BKg zfmBKl9kMb46Ka>y}03`%TF1yw3R8Ib}OcG!4|9IwR0FSW5N30$qRi(_7 z11x`)>7bKrH!@oO3jt}h?N0*YHYNT*KwGQjgu#BxrGR zT}Ia%uYX6~ub_=97`!-RC#hw6yXTlj@Go~9AoBlr$6f*2Ay!`*#6S^FeE-SG^zZP% z*kkenTHMd7EU(6bH*Z%S{@h?Z4!x`WGx; z+Ss!S@X@PP%w%zhXW-^PWDsC`|0R*g+w@yGhh!6fgCA`JS^xH1V_bV+wSR#G1KY^} z;8St%TZR9jN_>I(HfGx%memU<{`{om*NQS%=ZIqO7YNa5!8PI)U~BmsL_1=L@AE`R zAbPtVTa6NfK?H{ajcK1Q>GfV#E^2_~liz5*`j_1lTppKEy|9~2zC1ea>v_P5go~B) zyML{md!HkQnxD&*m_5|{?T?@RuRm^*N5n0@j)V`JIsb?8#1_ABboR0UZPfXsvQa-S zz@HIa&@;U#di#yJkvC;O%p+gbs#gY9BBzY8nQR2>Hd}Yo#Cm%=tt+v5*amgTdcG!6mZPN#uIVO00-^ zS!a&izPAY~ECO##?h?4e2`>R#dSw32`v>B=7Ir!&Dvr-g2uJcnm8m3|U()AZRSRK~${G&aXU5@y4zD)Yj8 zs_bu0h(=Ka2l7Q~>JlnH^CZAC|L>5DgSUDdUB1gNe%<^l6Ynhl1p*ld)Pos<+AGvi z56A!Bm@5mT>Xi-_4_E@~{@Iu-Yg$U1NQ^rY?E7c6ydKD4XHfI$KaWPePByjdRPARk znU)^0=kXp(y1F9v^u{-U&CcIXs$wtkzRjt}#Loe5`{1)o z`h;?akgu4s)q{8Y#v%sY%-3v7#FU<>Ukt6wD-niL^`cBZz3M3J`!*4 z!M~?>qKNpC1Dl(N$<4L~9N#7guK8ckdRKW^B%4yS&%G1(ChFJc-3zvC~N?)L;lTo<3)4(>+QJOe)of6=|-lCoh}6E4|p=mm1?7JI+__Z&hOO-I%k3mp1$@|FJzzZj(e$qWDPh3|7o zTj=u+gS*`RK~Q*{l+69VCpT{#9W2G%=X&QJ^25ryZ{T%&t97p(gcM(3L3{?7texrb zpwo=oMaG$_}zh{emP814_f2h zGr!R*l*=!`D3l{v7LZeZr$d$QLS2cMZ1PkYwU@?kRbbN0>p?_H#i0_#j2pELTQ(J? zz&=U8q`>NjmT-i=_vB@OwzE!X@Ud;=sYLE{tmbNRLIu5IR;?#L>PY-q9oF-FMh@+J zyc|*w+m<`q9l%2TPWHIe@V8NT{cRw(4kPyt@`;Aa|BfwpHl!9;*HxW{I=Roo4J#>7 zHcT>2JR^PWe+zrBMTDiRwRKG_h_$`jJNA65(fWPXf#bK;jo5D)@I?i#Cj=z^V^<#< zJr0uVEqNsLA;9juFXQb)-Ww-N*UD{8R4c{o8py9oU-IiAKV|`f3ht+*ORPByeyH%V z%oY_B@yp_5wlod+7T0@;Zq%}8r{^Qne(-Ae8-=*?i#bPFMEKOa|Y2Ad}ThyHgL(lf|-F0~Dy(#l~eb{K=wzR`qjrs~mohyN?sR zr)vnv2?+g1$?yK*D@abFM%J{r^tH0|RkBXR!8(442eeSH$TFv55ZvHyrYbBbr+iUcb>&)JciO}kta>lhW;u@{e zTrS--4uS1e!aRR&Y(@tiL)dg}@vVL)c)^Y^Lv)bP^c&%d+xLczWx+HokdwXjqHRYx z{9$JT@^<`7>QoaNE`!^lC^OtL zeko-vqX@rm!@lg`tERpa?ti5E427|Mpi$CiuZ+6i)#r0d7JPCxK;xk*jgq7bOyyYE?7c zq-%>4yjhpPkGm+$Lz~P3aKy@Pq67xQQ6l@zQ77e?UD>3$3{#5=`gSbgPuCjH)5!ve zi}2081G9BnZB}hVS$Jq|~oP6z0muHV^6#mAws@toS{kKcbHEQ1?R)VWRdYd`OUVY zx(C2pb_cXQG9_M1no>+@EwY;~W4{|jRFP+!@CRET(u=x}C!0y4j{6WgOZ*G(7jWng zn#&6cAXVK+l{pz)eZl$Y@U6%DUdANPa(#h)fx336%bxPnh}2pdEpo&@${xch>ONJS z9Ept3VvtEWGFV1vD$OY7K4b2|dN0eUw*lodrq^eyoXA#kuCoVm9rB?_VxsZDJASbp zYftvAQ_rftr7_Jb=9V!(f@JQSrrhTs_U)$cTA!_nfFA9mq*=pQh)ccRLSEY~%V@UE zbGDz4V~c47&&y(2-+mNqWdG z+_|{@;=Az4Lbj5I?8s;C&dj|R-%DkIffB>M|CzS;!E8P7L&VQC%s^UW=s>u)^klY7 zOrGlDjkEXO()-zn$UCxPzqA+Db}t%1)1ovFn`_&2m%cx>b|6gQyVi&|<9K{3sf_98#7E_1UDo~5NRx$U6J@n0e=H@(JDKBmPzdZ(X1OYbiux}B=>v`(ZT zTh|_k^q|u&Ay+` zxbBVebIwOrh+K(WW|Ae&aPfJ8Gf;$jn#yQ2dSg+%aT6cbirl6U`?Ps(N#-D$WpIPn zQFyF5$svmOYp*bt)<|mm^4Zxwe_V5?tZ&#!WGB@9Kv{+ZzoN>1kcOMngE-jTSfMpN zsL}y#AE?i)XiA*&X^5X{!T;6)T&RS%2{$ZwUv{+yJJX8tNl;k<`s^`f?P>llmv;)> z75q6Bt|+HjIpdKVI8|zfUMq44C9IFC@&%=W5;``YV62&N3^5mvpvgl{d1=yeSi9Gw z0YwVkXKp)_J}d>(tF0vBLJCrkM5ltaQ_X{>s#%!(t3T}lf2_Ki#`G3q0hPF#gk8FtwO+8@ zd5yIuw+sAqi>X|c|=z9QMgf0`)dgqK9Knd9+wC~=9 zW#d+s$x)unaGCvOoUw_RZ$3>i=YAO%xl~E<68Pt z%@eO}i>J<@XF+MWebW}s<>3e8;4c^7AE}lz8uDWj2E0oGVLhB&=J*<1W>XOvLDN?N zlz@(_uhgmo?*g9s@MV7fpr@Hxe0vz>liUkVo&npftc;M;pIzRbka<~$CHKGuwtII( z)E+IoM}bR}zy7qw*H~)-whOGY0@xUvh635|Pf_PyoC;hUu+z)iM)HbCK1C?b9y$ZA z=DZRp&YA$7z4)@h55HqY>#@V`(e`{prklDm-;{HHmzxa;L)LQa8I4(sw^#{Y9|I&;K_o<0cBLpDR z%iv+Jq6IxvymxLOAk?+q6}iU(BDPHZ<)wYqA+$ z*1if#ld2Y(A_Xfgp(L>q8ee}HHRWN_a0_}6klmd>XnkEizrt^>rq|6vU5?i;r>EQ- z_V+nYEjVv!(eT}MJ8RPaMQxmNtjt+kDLdQrrF>?tsmNnaI1$>3yPo%oW(zzM+>iqAapVCMr1Q$BjjEG{Fi#awpBX~-ikq>WR2Ry73Sh zaya)x1@h*~J2{IUQ+a{Hz4YnHKnWizL?z&S(jGczf2Y^SUf7$hM+bA`fGv3H21@uj zBp-LaQ98|WV@Ih#&R9u@_6q*94rwQf3X+vSqO%0@?< z9HK(+KymvTBmypONC}-aKyu$al>#Yd0(!}O<|(!XuhM_G0<{$9#2s!7Aj6`5`Hs|a-b*MS%K2@NZsndK zpqYhI7F_5$ebgqjA;-#ZMDaV8<7qfrDEioHbLnM%_IcC5uuqno z!hX)sM16?nyzXiD7ho`5thZ)0ooigOz53o7>umk(36L~}4@kTCj-zC~+LwD~{$Q4n z-Cvf$lE+Cg$9Z?4e6l_qj0MPYV>X~3ujAW>j|i-dFbgm5wq~Dgz{p(>jGl!9W&=fAwSVvTI6jg!E`6@EcHt*{ zE0)GAG=F~&bo#WC95a@lUZnZ?Vo%47m4L398EQ-AuVvY1D@PA4NEDkgfG&d@C~@&G zavEZj)p=_JNFW{xJq;r7=KFTHUX@VgQ zv%pz;P{VA(zeLO}ch=iC8H`QvH_t7TwZQvdosM*)x1 zz{k&%f!8gSBz;@CY_)J)2E_>hy;2AV3^k44Qx8*x%(T7z^CqESoN&6b}e{^+zEd$JA>%;FX+26DPQy)>QDZUN774XSY zoTk`ifcFr_ZY+}{B%b%n62(d7yWWK}+==`-(|BQQuz}H&_Y5ljRQ>@#q23$HY;wvr zlLu81mwQWz?}nv#9wyw4>+F>M=3;$1TePs_YPS7F$8`Hd6NFh7Z3)=mRGY}xlBgX} z3@DYG->}wPvMqHMh?|$fcj^5(PySl2pXuT&zFpb_OfD_+RTeQ$QzKH_86q)|sZ1BI zqbC>BC%EwD3Jj1?UGDrp%`Id4;}BXPxT)hulP9;jlJKyerdlQQ=-cUf>XFd*quMKP zkDR8mQ;yJ_DIWEqf6i!&K<_z0wE2Us%M&Z|@9D?R46KowE8V%Tb$w93WlMxQgS@a( z{U^=Q!ONK)l=zv5Msc&l>#)k@>9I9Od%!S~Z+oc!q^0Nd8xASzB$`Txj{%?bmmXk! zhctZm7eJ`D$X5av2Dd*Io{jVpvWzgQ8fdC=hT@m>AdYryZNf@-ha)I9p>C(`ma=Bp z=G!jcaqFqavaF~P_I+RRU2P5D`-@T=MyXaVs0~N^jiw`U*7OnLb<7lQN90VtSZ;Oa z=pie7gxKyV?d(qn@pbpdH1Ybe(_wZB?&;bAoF2#js^-G#x=oe3(sHc1>ujvbZf8Ti z-g_x1HUnlitv_&|e>~!gBo3J4MH4c+KjRz^2d>Jw9#`)rPE}5RXVk~`Wv3o*q(^{^ z_m?M0T_!2e`{5wt#pOxtVohrsF0n5Rm{}$4K0r#f+sX{CqGYkOzQ3wtc+v8y=WBP! zXr)W4V}8#5DMX&%rcWfmG_(w&eil? zi{CG#NT7)^!60WM)!dXOPHNrt?&TQw7-F!@o_+Aw`v?YJEED{f;WJkfvKBzy?mBQ9N`g!!H||& zl+_j?V1=iEH}GYrkwPbf9~Y#Z(rR+>7SoP;MH3Iw9a82K$LhU%0I_S_dW%)gpiI6XJQEO{q}}eg^#Y z&-llFL_F?<@${ro4zvxKGy@Jm(c@!$KWF1}@P4O|ljUGDP}bRUjU4zs($DKy#Wf2* zQskF0hLfSkV-EK>1w2^r6O%Y?{5)VZC2odlvYj6+j+jl$ozo*vLq_xpA#<7}Omc^fH8{ouZ$}Bpz;bqd ztF#&=J@VKN*#v_eA1v-`%Axt>+6JI2>muFdn~uN{P%Dw2sr}G14W5HQ z(Mipz(|#vACnG@IHjd)7);|rK$~h)zuPKV#7EQ@n``Nt+;$D3}lV=@W@Yyeb#r1Ie z-69tG_2IX9)=H@dH;v`;Wh2q`P{`623p`C)RJRsPnz{Am(Ob`MP|ugEOMmF9v7MkM z(YlS6`zkjFt}_?M*@k(JhHEq{MXPL7V?Msz8s@%fbNv$>V!$nS?So6$=cXJ9S2-ka zTm>XDGx*t3r%|r@H!b51OeJAlCciey*3IMo%a9vL&n+pP_$qaiQ8!xdxVKjRrGpN( zan*H5G#Xgpnk(efs+M6&HWye0ajJTTJ4Z*!~X$}k8>Jv74M!lP?f+q(O$ z`fRa93`rx%SI1nK|EE|Qe`bmt0qd$v|K_U4{V|1J@J@5N+E5LyYQ zR6AX>W^}Vs24L}BM?#J{g&*aF*Tj^{6SZ@uU|<-$}wP?%10vAXT&h4~YTU>sk` zk{g=W_KpBPFM74zy5g}nh#m&P?KfI)6_UD?&zOefAJ8t9Iza69?1yFMDO@Akm52`$ z_}qMqDk{^?J+(zJBgtq>KNt73y`?RhB|rM;baTjnR{eMo6~0>ieE3@FN#W9BiGF32 zLYxY&##uib{pkE?f(FVmPl;+4ST(kq=3%2~Pm@Rw3uXje55?o|h(S)?2@k*0zn%C; z;wZHIT@K85*zv4)*>4xW4FLSo`0a)bDp`T3(^YDRq9#-Knpw{M~Rss)RR+p9Xjyt`S;y;(K_#FnVi!%CveBu?qyWA5*8MLKR@43F!N)k ztdjcm;V8UwjT^EJXLghGI~2g-&X#$MzE2;}n33+JoUb0CfCR&Xlf$K8;9s)|yDVoA z8T=rA@k|xZlFj1H8!^=$`UsWAp_^$2<3>j|+$Ue}*a(4T8USct5)pGkQ!6xLpI zc&nH?x4-+`u45Ex`yk_TFv3gAb95s6wh~g;s&zxlz+YE($P5HQU?Yr{Ms5#8Us~pP zd75Nu?dZ#s?D>TSy}Vo4Q9CE!=sqFsMEdznO==a(4)wuq=dxU_?pA1WNSDx?#6x^KObD1et2S55THa)wM}n7{taQ@DpX z-f)QbovW1NzvAxo_)*Tb09H9&wRs)u)1Q+|3o)q>S6XcU*?s_pdC1|Uw6ke*324G` zn_s$p5IF-0ze@GvYR@}`<%N+ooC@x&1_`|3zI*fG%{E0EPF;B1w7TEjDoqP~QK!el z*rvk1K4z0c?1W0hP1oqrn6sth#QOeVqtp^tJ9wy>gl)@yQ0BGs-5UZ>shHststoPm zm@CwFnFUrGCUI(xU`}pLc{0_-kJ*zPi>cD?PXGBorpsov_E?kaffO3FpyZolmE% zg*tZ cge`Erlj!Uv*t4IjR^1PRBIaa-8ZJ+JQzH!D&OHLg%qpK56Os54K(ZyjnG z#EaApM716)DF?_F4Q`hCXnCagT&l)*hCJ_c>VCR!b(eh`yjs>BO+#^LN0-D29C&49 z3M4Z1=FqQ7y=U1^GcgLSwn|#-cU!)0dwBX@_HwCGku2J^LL+Ok*y>ls9^1aQOXlxtf22=MJ{@0kbY8r06sGkcsk$Z_yljOE-QFC>HmWHl_T;um#`s6MYy{an+saMPwBf z7?Q`IB0MkAkV1AkYLRy1ByAHGwO66{Y1e6v!?e*>f^TBcAx!dvmFP3JWxKAWLpIuv z0i7!Bn3)ZKuB2Pw%z5`$xdj~bTratozwddAmrTrCQfO8?+&lT@1vbjhh>ygIUdwC% zxndj&qC0s9{Ey0@9NZCZbd}}(?cyK0&NJA-cV5hh9uSG`5$U@hmuhG)q(r*LKe-~M z+bd)9aek>a-CUw2{7SIouUr*-Kk}?MH|Q%E`*ylWBJ5M_- z;YGJjUK~CWdJd9_R2--SQLE(B{Xm)zz{TRyj2DNQR;^VwqNmEz$k$(_e3XRcL+cx6 znwWXwhrLq2#?+))!A@pB!WVP-1yZ_Zy*S5=j%FN|iX^`JZzfumkBS6&HJ1&u=Z$G} z9j1iTbHQRoDcqTn{R197FzMW%#R*Dn-NYUr)wlDHqulR`t;PYi_(V8OM*f&N5~nefj8ZB zr&5)Tn4B9|V|!A;50-LpH#Pk<=0lY|jdPoP732uwy+(}90-&U*10c*s;g`sSkh)Zu+YjNVAQ_Cuei&w_Qg z^AD5Mx?hjb9ex0+A!+oYlI_Kfc}L9-9PTn35jXS@5M=8@Kke7#jmb*_GBI|OHTNSV z15$I=ir0n=R+r>&^P@4;dI*6{7v_q!-=z(~_87r0qMEF+#O*IiX2Yr~UB&L0A{v80 zY4JQz#VjGn6;F&|uB%i~h1DN2)vB<@{1KNpBhI*%T<2-_D%PT@;$QlXm_)VEF#Em_ z`T|nQo~Oi0s=P72Q}y{rt69ZKqcAq_bz8oe{pOGnm{lYN zJqwyj{_2-G@2%7wHRf@hrf5ok%biVxdt*{G3O8EQ(5){ynovEmvxcikebeBclp`~2 zFtbDK#zPU{YJ5|US#a~$(P1+%C-jpurz z@hn|R_Afy(x9jFZ`DIOf$D*clbml|YetwT=|Aj4~pWbHUR`(>}?Z>YV4;Vuy*s)~!Q`Xhv@h08&p+Jv^uSe~O}P%x<>rDoUC`z6HGBwzCFyPR3pyi}YPQ_BP$Zm+{=G6{vfysouts zV*AeC^RCSE0Gvf*p+{xI{$&@T??Ezw4~iT|e4?a%hSu7jr}Z@xd;W5@8!xr8JKdl5 zc=%fW`*OJ^Yh>U}pHJ!~3*+lB_sy`}t0SgcyF4X@2u+&d=Ek>DKAxvH+e!(=aJp7t zpZ0K7>+7U*a5aU3QXi7fA%kDS2_$1$?i4<0f+aqx5;Lv`(JO8RqZLzKaw?qNZC>!& zNPjVU27RX%N7DSXV|)~Aa}V~t^wER2lI+n^qEiVNQ^a^Q_kpbuNMc$w|QZZ!L z=B-lwAbDa4*H7a%a5*Wzg!X>(f-~21OV!&XH>!Js$dS|IuKRsmnHly!fTldGRz#{_ zmlk5to?)UsV23-i20!A$jnhQhgP)5?GoqKIYrFHi!^LuMw?~bWxkn=sSICBb&8AUa z-rXoVeX%7X^yW!>RGEso{vW#SR|@pi2q(%_P=(~S@8%Nb>DYC0718=#CqAmc&cQc3 z=%vkbOF8%9I8&Y_t6u{twCx&HSxPk-V{s4EOBVOW;8pJi?Kvs6*--E7A#EH%$Yn9lVZ7{`wf6k#NmhP#ip<$u5_?px>@@|JFJwt4V`_3q`S}tJ8Jv(i;kmDhrgxND zBAqGXrLtZlTwtzWizhgu?a; z>^Mq&@$pQl-64vR@JnNHF0?!l=A5H6;-tvCFK<-&{FMoJ+jN|V758QHjrTDARmsAN zDZZhnymgfr5R++5(S%)pZ>PGcTc>G_e9>x{-nD&q0r6a^9)$lSe(}Ie$dKRgk2j-p zkHp&(f|zdbJrYU`CZC+4_FPUhUX3?oo0jw_R&eT>5e?AC=h&jg2dnmb7;Cw0rHqd%FgxgzZ_o8Nvb)`wIhPg+aVbRYJ>*L- zl%u%xk81`qSFqY{vngXeH`4q9c7darpFZ3vrDr)=nVeyJv-G3u0i`BTT2xjK-w*3Yim zcpqA?$ZoqymvGewZQT-Hxib^S1rw|I#l1}-iknX#z6|@`TTH9Z^WGfX;>R7L;e&XVf_~rQ$TWY? zr=VhvZ=}*#g;tE}YQ{`)(RSJO>GxgTv!v~&-+g58}jYe zfE#c3RjdST0Lb4D!x+PbQ+N*R-|BsUnaAYG3aW43zKNwYou}<=uG@NeO(`& zP*r)ji=~FIXVQ?Cmavob3!uWq^}5_lUMFwbZ?1~n&9HzRyvMcYOFC$9OYw%Ny?=mS z`&L%*W&h&?1_5c_<;Yc|S=MBZXog8ntdt^<%Fu%E?Czegm71!xMzZz8y|URPc1+DD zI8StF(8K#N-lSU<_ht4@sj}~1ue|0ZspD;B1!LqYS~Lxc3GrU)rjS)-y=XaOiDZHAlv=rr`pykAvbP6o z1`xcn^O@FCRwVK8TY**h3HEu$dERR4*HJ{sRZdq9P9FLt4ADX24cjRtK&z_pgiTwr zx>~!wA zN#n_oWPHic@CQ{V+Ri3EE&JUn^}7&pA3kmd3qv=ys79)H9Z5wR3eD+~doJBKBkr9n z?K+u1+7LFA%DYd@kf!?cb;GOzu=4u)$!?$VioIX3>SG?J*Nm0Ir}FU?Cy3bQn!q$f z9%kWsZ~vzchAta+Ay)L*QmDtHxANpG<(dHt<+Ru!xuV05f}BN&@>xeJt4KPZHT$S4 zb`x=f1nT6?8*{5-uWXI3hy}gMxO?o|7&gc@tn|LRsUU(UnxTlIe^2^ru};)0OVc}Y zqm7(jte!|rPDv0E!Q)@-==(D0ooqqR33G?L(C2e!(Zm*;0+2+W&YDtdEZtOPAJ(r2T{QXObw`gx+B5MOTwB`ZY$| z0Ko@+{m?l5412}E^O&EO5Z&n0^4;4iGlgKXFrA+_+%?<^Mm|e~Y!syWPe{DkKvpYlAeh9xz_*r^dkookwPe4Ifv^M4?PV^OS_&V774XR_!uKYz0nG|?>oUHQZ z=|aoLWb=X+zr4?eA#8jtHTusvzkcg8!VTx$XMf%WOI`WX?nOWS(skMSUGyYvQvUR9 z2LfwI?t8Z+dXqFtJ;6s>8SNXNK7pFU$&z&`!(v;7x1;-5cJ_qfrv-g$Vinh%-t{Zg zC75bkTt2IURxZzy|L7}igQ(mEf4sKSIZ+e)!3lekF7{Hq;B})^s!R*UH01n+ zhS*b#V`|Me641co1D=GuMl#QbnkG{46J7U@)()KgfXQROFnNZdLy1M5eFYdRLC$2v zuWL?6VQM&YZF+^eqN$z7Jbv(+eV(N%{$Jhh6%|k^x?1qT#`NQ2{gc!u_h*>fV}wVj z7VZ0dZ^ed=Fr^*(!V^lTnQFN1n@_{U2)DSxmgV1HT!;Y|xlspX2@{uAqx2m;-RHwa z1@Can2$f9uoz%eFk>)>=y!O3OY04JlrIP$4#{>e{#CXR9pD@bcJl!;-oiSPlwk;yD zIHnn*pUACJxdN<}Y7iF-@R-9(TS23`B@}D-eErSf6IOI&SX;*MRU$OcFWPxS?q)KU z8T~EM#L4t#-+9s`!36PcDHeROYrAPiA-`g=zMBiLmTQ|MJ zD8V`(!Di~S5aU&);!A$b3JDKu`+$N?f-)VaQ%Ibe_|zYxJ4-2MWdNjjvN@5oF~PXc zz0%KP$^~SM=Gw&H5Qoq8qb-9wi!X_q5scg2r@M~cMG7XBTsj0>GR`a!{z@aWCl920 zDEGnhoT^RaBbGVUoaoG6pJzAs^)|P?|8&WGQ^98}St{=s0k*cB%E{GP!Ngd!&$)1Z z_$zwHs&+qAj|f{}QHs+FY(ubE(Q-u-be+@#94~IEc#i(y_FIA zCWJr=#xGb;^vY2Ly(-3``8aK|3CimQwEc_J$#pE|9iJ4*d(xeCU}2kLwcd73#$VG% zaf*)!w!+>>bgb)>s>~6^l*ckiR0)5&kq58$2q4}0GNE>72p&O6%v>k1DYU6Lt1z|b z?*WDDI%TuGe|Ph=#bJ(jhd|GeXvBD*)}MrCMt?)trh0BmSlZugeDN_O1AM~%hwnvD zZP;Y%d2Jn`XBpwvfqbtGMG$Vak#O|IB{Y|;YlhcPr-1}wy1I(a>7-7uSN^BCRIPHW zOB>i0y1H(uB%?)9QJq%=rKKOIq6BfqwE3?rE}gy8ZfA2ox2B?)fo+I$rOueri)r6ih3fF)kN znDOLg#o2puFx&twjL|GQ-Pgt~?Z-&E9l~gc%(WLCWurabw`o|2-XcgA@ZXOLB@8_a zjN>AjsVKPQv>&GivBdVd-y%SIHzpgs3&%xy+#-muvRkz}ZmaF7BRC!_ygvP*%^t5o zO;YDL;TkP&Jazq zVdu4&U_1~fNdT6sYv2>4`00eB#GZ}CEn(n)=(j?xG0Bg1Noy$7`SFxx z=>z*jqR05P0=zVC;2x842Jtbz_I0}Qvv!0t2~e!;%;<{uStaM_0>#>kCyqA^tr1|S zXZKJ8a@T5|f>}6dux8qe(0bZ0Ep1FkNzxmT?gR*lnbOHsm=M30(IL{o4m%y$*w5aR z`Zkhq1EP5S)0n`GF0_DL-TBdKA)Vo3`v$Mlr9-6Sakx~jg4K2<7k0V=j&ppFq15TR zdQJTxdA;(H-fR3iJepw^kL{S`D568NfgVL&AFJgp49DWL$nevEu3M{Q{qe)tz*^V% z0qq$?+aF&vXIuH=(|X2okH1EJEZ%Wq9541r@w&&xH`;R~uvm)zVX@xEii61Ks~+4M zo4pSVPWi~2ngr?Q^iw>^_+$&1TzLl%tn)i}D4Swu@IaVFU#KTI`Mxq~4YsTB{d!2{ z6&Ir>?f3Yi;oFrflfYg3P5t)?9Gsx@$Fhz1qh=G15ibzAvCvD|0;|UMve&3hDb0rj z%!L783Tbme8;&d_by+Gik~Z`qAz%Uv0(%5O;ecpE7r5Y4)}Qhu814B%ih}>mErQa4 zkJ)Da8Gpc^A2X2DX^NGrJ@D%U)TJ@pT8J>1XMQa9w?K-gHBQb>sEP`TsJ6NZ-W2)} zk*v|>MBujwib)jSuvZd|q8h6?<$H@nBjK9O40LtV6~YU%o4gzy(QbOkW=@df#w9Wa z=DN?F({u2AKd)&^Gjnw>f{_9lf6J{h$2bZxPXZ*UNcnv%<6MHgH$iK3dmAT6Sr0IU z>xbT~&NEBDI$i?zGQnKb0Gn7ex-4Cb+PTnb<*}P$I71rGlSJclI-W$nb|leFPlELV zh@DMHGyHKraFZ8Q*v4n+w{4ty`;-^dW~#2E0fe|Kd`Hm52 z3c$rU{dz%R?oQ+wKwNxsy>cM?ah@I_*4?&)uo7f{Ddi5+X+5~FsF=VH^AY>-`%FOt zq32zLWN8L?!YJ|*uRnCt)@X}=Bljv59iZ0x&xOa_f`{UXohGLU#fc5Q+Hivo1_UGB zeE!K)bS%k*Fm)s{xW>WqlNWa+qOmKf`C@n;i+G*e?(2$i}YcNxV zye>BiSab#GEQyKc%@X`Xt_TyKDm1zKfGY0zuMbn#arNhEg8IKTUOFzXR?liLP5*8w zNs#@FW4h$aHK{xPfOe~*d(wo)Xx0f*TyC=z49*gqeFihL2#x`TInjjO&(VH$`MnEs zsMz+ngM&BD5OQ%~FwfP3LIo_(8^-D{9g8rk3vHvrJ`(MyR;RR6ioYc{cIVi*P~zP4 z1v=;(Qi>Tsi)qb25j!pSgl-iRi0YnuUFlcqX7Tx<77UE&9_krs@iX^QJ=mK|#(>+< z2s75dzc0ut^$M_#SB*G|vNs-HrmNHRD31~I1DT2f^+=1>5F^eJq6bpibaig76f@er zsS#=IM#=CXVw@dFwU4c;w`T%#jz-*Wkl5gyCMBhsuX-*}C&;A0B0e*JEy+4n4 z3ka?1>lxCGFg_P44QG@3N?^zT$>+6LYlM_~A|Q?G{-xRBarTwLjj~+HT!w+OQxzt3q&ecXuhKY(&@+rVw2d+Cm7`T|QoPU>0~w_V8j3llz_Nh@XM_ zLLA8w!*Hr~mtWa2pb@)G#h{Cu!5net_Ot%vJ722RvMXF*W6y}oqp3JQz`p)J zuD&{;$*%ohMMOkEMMPR!7$pcus~{ap!|2Y@UD5*5CH;UP5~E>^7~Lh!U@*G7VFJG! zpXYhs_xt;A=j@JaSA4EG*Ull{BgxEf;OZ|x_i9eIj~eOcql`d-%s6x9RakaA zl{N|FSPXA&HCmQj2L6^4$N}bz5x48G*#W&#_0*9*>WXxY+_kuP{ zYHz45!?Ft!FtT;ubxrP_%hDLRZr9P%6T5DQpGRF?5S-zQ z9{DR`qV~SjB+o=HgK+}@&B`;!B6e4^WD-`#Jrm`8ZVe*Fo_@QvS%P65H5p*4=A7ob z%??hzl|&{zIw=29?c1$J7Z^!UGPgr8oyx zZl-2e7dlT#8JjpD+@!C%e>C6TeP6LDN?t|0B$VgL$0O+f~h2ZuPe+)ekN{)rfuw!YPH``6bce`{Cp}1Q=Wb zgIQ5J4EFb_gInxi&s*w>+U2w`+A`p-7k(PT-Oo$Wj$}fgGj}Xs5G5e763B%&Bm@Iy8!LOAhUpIt z-FLuzFDL|f>mRRj?QDLsx4T8f4qX4JNd>@0U{tMgTYWG&nL(^sZucn;j{f4Y?Xh-K zMb3H6G0RLmmK}2Hc8$_1!Omp)!u+j1MRFGh-+5jS5<(pP+Wh|Z{el5t`gbrTp)5su zjr%j(p4&CnJGW3?&s}e^&$j(yC7x(sq3dQUKYl{cRD!bMGLOA>Pwfh}*1a6}0_z4( z-U|6+#tlWNQuc2*W#P+lAxbo9%{e_Gp?>?aZGQ}z@(F9r0^pBV0e=ks%ZRCl3Dk6x zn#iXt)-Y%@Pz+<$w3lvCy53R11rTLMH;zl*6yty^d3+1f9g)Ms+&|Bs2*^oj8tq&-x2yeHr`mZ)s1<4`m-791_hx{wf!Q2$JwWL_fk$g zt`H|m7?I&k6JRRk`~8ufj|p@2FZjgReIk8jV!OQO5#Med+7566c^}pUZQ1Rp zPz!%me`cb&`Z8R*!k9Esh(Axu-7~rrF>yk`bUigB^A1emeO-IHi;d~r|wcdT{tt<`?{&tTw$zo5Epsi=CN)=k>@jEEz# zTuBL+RJplD;CwJ~{==2yjF}iGB6U6@q0dQ|NA_MolwBwUpR0&_*OY#V*K}v{Ez&HC z{-J|)ZmG%bG{DL26vvv{Kz?Nc3DndKBT|3I@uR>GY`fD?xwR$68ZOowi_T$-)CtNY zw7QKFqbRxRD}UC6#5o+x%=2d4PDObGU>rW3*4Zn1c)R3%T(79-Ue50k`wDe;a=f`+ zzlw>lSel&nH(Qpv4}gbN4CM%g*A2xIQk~*30*BqZYsG|?-d<;NaYc1r)(`n~ zsYhqrl)+$Ve*YGoEt4~|_Pixd{eynsD&wU(SMAc#s!WQK+h!$-kw#KY0hhZ z-nYOa_f{g{YEFPsf)r9=FDX}b82LPR+7Zd-k5$X(V@9JLDonROM)JMKe&0aUR7y^f zY789*g#>MDLCr|+^H@GwL%LJtGtH<+-u0603%-+Om3b$b<0&$i#kq>GJq9!sT%QS&Sr1#!PU`+-1h_bOfY{vgs8=BKK z?rcB9U|7>E5jwY|qHJQHxBYO@_T7wlLwQem4Uv$!9tfiZY}KqV7bl?h$n_$|!jZMoLQv6GKr46UUDyy#(9jvN;=}0(0b@PCCH`vZQ50X^0(Jb zjvmwQrC2ynp1BJYPqVJ{Q8RJ1>nPdDoAbgMzAqaFzwflOgJ~Y58<4a=T#a!J*tQ;{ z+}q)X5$qfZx(TRe@_T$2Smy`&w_u38eqHofh?^R>JHN>l!UtMZXE5{A#4Xz7cwtw% zI>b2LHF+iWBL^ah&Md@Z z>USG1Wm59%B6yo~cC(!Hw9$PvX;8p1PFq)~+xeY})N_OUvwr2?vX*Kgnl~Ux4^jf|7jp z%R5R~2pd(;oWzfl{s}o#meSn<`vjKbJW|;+v4fGMn4>RCZR5nwoF`{Zv0R#Aagmdbk5#BO?w*3;eYnLzf^)I_`n?dx=>>^RBEDWJPcEZSNeoz8w% z9gdYw+HMQgiS*4UOFZ6hm{iH`NeYbV58ub#jAp8tcMAItZuSh2ihMekPt2a(b`E-6rod1HUDWGX(K#YIb(I+NJH zA`yrb-#=J6PN#{!@Y=!VmTmW8a+)sKedt$jUk*F`nA`2RDHy;6=RO%R)!LU{X=%K; zK>k^mm?ibfrZU|kFI>W`{Qk?)C=X3ECH0A|j^>r@jCm#{;WTsdBdNP>$LCPZ4R%jp zVPZMmPYq^g<1<(hu$PW7EIAB37+`hA=q(CTGE?J*_8F|qE`*PMSfyF@80TDEPN&J; zXGy2!&$1*`6`)z(2Yd3*jhQ((n@Rb3ZAappth-C2(eCU+rX>t?VnV(4_1XP5M4A>k!@esSWqvq5s_s*q ze`_&fWUXtOv#zI9dKo-^rXZOyzUa=fYmO@xSGy);d_Ca%YG<9?`$fV53g~XtpA^Fu zJIeVw;>c5Y1A6cyHV;V=*J@S$II5(h%iPr`kduoHk-L>^9osK2wD?_HTOQA34{Fb^ zfe?(yr;$=}z_wzxGvfV~vG`GoKM<5Z5Ushkubh-}bSJa&onkIPvqh(@V{x)*+GCT@ zAiR1;&DyI1iesx*o_K@~<`Eg?MF+v?gh$c0*v?3B>P5$>)LvhItyBK=(CO+%i!^rz zkDPO;=%nzGPMGiD$+XluxG$$6PUp**dY^+Phj(~#O?tV!ciqzOi1VXa)F@w~xX!j) z-E3MYTtfg7&cIP=nuy@RQAVpnTu6(#tq1;8gkc&}d-3HfIsUeexwd6aqKI@xnONsU zMEiSLbdBmK9S1oP8T36_v|*MaG7=m*J7JlcM&tz9UMC++hoCoJPnNT4{4Dz(OKUmR zLHT1WP2WSpejR+6LlK^=VWIGV0CS;`$}~ID$DXi4FUX{lgm4xWvWL4j)AoD2U34hO zF2kqm4fz859|S88IY?;I2D>I!`@sDSBtEJ2iYdtjxmdt#^pW#Hage=C>BJ zYh7&&%B|b!u=L2=K1sU!^{MWabsTt1-8Zo!l4dp zTWp0zTZ5w=0I_Q2O6KTFxuxKVccp^JzjAFK(08`5&0611MA%O5S9^7Y;y+PNMA&=E zqMwFpJBW?x_YCtvAnU1y>gs)O4xw0K5b9Y$x}_je&S6NJ8pH zcPgFok%ENl#j%L^ib0jJ42Ijs6foV?#`=19NwQ^^STK`!Qasv0=WUjCVV1BF)1<8y~xmSE|7} zQ1c{u#%Wdyb80FaT-q2=`RP}+c=hCQBEqszaL}i>RVW~Lw-?wg6dDKi&)t=+)5a~S zd1cHsZ}i=$brAdAcUw~2M8x7)I!~O)!(zCBZ0S*z%1p8hz3WPgLQeDWgqyP&i=Ws1 zgi9^s8#dUirwYg$IgSJXcm2*WIF5hijP+{O5WeA!o(P3<;AD!GDqAFG`KrIc+w9wg z&$I&9T2g9fFQa9w^Ekppa(f5qn)*;(uf5$C8S_ASuo%DRhqm|Pcrk+immdpCMc%LQ zhEHF=8Yyo@1Cvh=(j88Vo5oIo>JwKeN=S{rpwKpwUV8~qOj2`!sPAuG`3eQT&ea)k zntSaEB&tB2=`xYdU3)J9Jo|BOqp<3N%}h~O;9H|@P~k4PyG>3+nY_bF@1rXi-fss*W2!xM;CZ1|JADsENA6n zgn^YhTKh|afaf?ksE|X{N`ovJ+UJePw>$PO&#$BlYrOf?8_6M%ffR)FjPY6TYYg^B z^JV)eDv-k(D}Vs3C!1^A9_PQ&RIIdC3h?bhtsY#QOXD~)*?&Xt!dz>=5d1f{k2IrEf?R6f&T^&~LJw6 zS6lA18*Uvqb@Vp{W6gS-lDP3|aV~!&RtBD?ZsTXhB(!*ixIKUXO82-256#d?F3CC8 zlccHoEqxO0!Rk{9?GZ?pN-QnGj1R*Y`WQoGr*xe8JhSM+7?! z3@HvL_^E=J@wdO@g-?mOQr74u?7Vn%-WMw!q?BeR|Wrz~NIE^G(Q3 zkCisfyU~Wp-AzBBMO?FdU;#$fuhUap_gQXpn1kl14EG1nEnfRT>A+NCv7GQ$SNQ?}A7>J_A>gH&D8BZszk` z(B(DR-sFRw*hCVb7Vjyxx7qzEJWU-WJHnOpw=q5ajEnT&#;qH^0rg|u-{bXq5VUo4 z6B1CsdwhUL2Nr^!HS#1SAu-~v>KDf$m^TWj%Mg_itafFZd&{sCtZ{IQDK@O;Rz{nTb%5w248dr$S6*Z)0yVI z__SoF0orW@LuGMKPbLXfQ-t7%ir6I{^ifqaQr*$dEO!8roci4MhQ4utzLCeDP%UtR z8{Y9G5A_W69Ek~FTvkJ!aYzU#Z?xWO;iR9yEplUPnlc%uQ#SMIs(8A0EBvCx&2QBr zH8g%t;c{u_`q*v0Cvnsg~(@XgTkcLsL^tLzPlOtH++ zvUA8n6-D;FE%rFR!xo>pSZl?b;!}{-%f0#wn&@d!&-?Ct%UeJP^T~G1jsS;=vtjYi zirqLz=lL8`MY4|9TPVj1Y=Hcv%fta{f;M~R=smww`+Y_(c7Z#qO!&U2E+n<(%d;*> z+?3s*yyKae^Vf>a&mOcyCX;&AOM;R40)J&l2S<_{xe+nrr#rtDj`6S?EK++pP;#~w zAn+ILx=Zmv7IIRn5NtJo-DB(R*JH!4)t3Ps`GFU_D_Bs{!s^u#yXI8GM|*l{eio1Y&rr|Sb-5MBbTzCcC9MY!)wM$yo(%d`@BV!bN4$N+lXMK(;1|b3K56L**|zzs=Lr z*|U{+0i4J{l>ug`d)hG_Wqb9z^VO6M5HIn zt!%ivY`ex%`8jvL-t?T>Iu`c+VwOyRzmQQ`<**a%OsBkwwIdSV$e0XVGQ0e?mKgad z`cDL*K*cQtdo5seZ(M(S`aH?5ZK=|Ms6(?>=2ENU33sX6Z8G^CPP6!oJFkJ7$4v>U zK6nZSl%Ob`sNp6W7SPTxe)lbb)sF{<0X(dA15Ukyuhcg@{>hll@U1kc)}Nd*(8%6M z2%PU-m@daS_royUEfGkVqd8ktw!tw&(@N}7)nVC{bWJCM=Xy-Fmb1I_dV!dZ)LV8#mQY1Z8a6E5Zkwu{S`4^Qz; z4Npz(MOWVT<-a4oK8@FC&!{LG>D||cVa&Ui-m1GBz>KxqwUyS@P^t!0pC}WaI&%?( z`4&Er8(d@aK8#E>ci1#6d`jVRoPOb0#HF3B$pB`0orG}D{F24)dU`kf_37M|TVua* z@k7_tcIxL}lQ`Y3+nl58`hjihLt zPx*3_X5AC?n3Jf}I=Kg*Yi@gTe|mk>HL)Fwk(wefF{D$zSW(VCiQ4*R@ptKIQnY*| z>B{=(oDCiaU+-nntn+EUiUG2`NOfl%TFW!l%L=nu5XL1$AIQ-OmJ4WUvlZ1 zuUXMo6u=en<+;LTVXl#C9YfyNNvWxwHm>zHwmHwj)9=Kjd5QW?Fp;VdYX1VKMa%4V zeF2syLK)t`Dzm6r=(x&}CP-_D(6Ia{yRGi*I+&7UcT1^E&+P+6c0v6J3^$Gzlf@FZ zn&|3b>9#}(vxk= z77c`$MndN$7ew4$@_Vh%rlUL-cVEA8;9t;U@Qx$!%H!DL$+?o2nNN3?bd8&gTXP|ODX;+81?jGqY8U0VrJ38iB5}Qft>;L6 z<|IRez6X;q$2vxE5PNE?%GmgeS=Pf4}~ zHN#V;-&-snlr7s`cOhqf{V+eqHidFf+7yPEh%?&{$mME{?lNv@y9#FLZSCF}n5*7Q z1)m4YWl)_bi4#E=1=vHAoo|2A0*-UvG2f@n$T?`SqDAd zb>CYLZc_2i;U%Y*71_2EKYz?(x;rk2<&Xbj^a?!YbTv6o!QQTQsC3?pIfj z95UXTH?@*>_}<}UZo4x~PFF@aS8RXS-Sz`SnHdseUAJJ$h|Atk;x*ZJo{C|MmKzn} z-L(wwj**{7nXx4}fHy6}Lq{c$@Q_f5QM!)Js}%6sWVYX4v*GOr=^y~ zT?d6?con~`T)J1b0~lJaP1gar2vSf?@shR=zb#$-^gAq{ZRLGRP)&uk=7Wcx9@369 zAGFy0E9RaDuKcJTF~b0>T8Wzts1T4XYp8YbyvXwLJ#uT8mrrX0125wV&!F7!Lbhj9 zEU|FCbj_*w)9Gm?jRVBSDbyPo-*cJG1{#~d50_xrvC+0*w_Ea_XXcwiwX)@q5HosOsM}igetAurRb4&x?5k%nIAd^=H?uX`wTME;T$ZRVimzk~w?}^L7t&>&=S7lr zj2@5Xx|X5ByoV9r>?F7Q3d+*bk9>EN%GDt!fUi_kSq)_4jmIeo?hJlclkH=`A``fk43?2z+OkPJN^>JVbzrx>?fP^iGRH&2D3`MRSO3!*bv+?KYS3 z73xbo$Cnl}F-4o7(%qD4Q(fSnX6M>4!^(_7?;x%U0Ytm9iphNg6?KkNw?(}fPn~{< z^Gb`3p3Pp#HifEND4VfB&VL&e-UA-*Gmvrj$tizp=xJ_KiEteTcWfjrWI!Vy)4ujd)w5L+{%V}R+js1-+Ymmr8&$i&Zpji@X?(>0pmud!$ zeZ*OOcex_uUc6kT7|4B&o@C*f+ep@LGh=~ih38CM{XWNZMQ&_W)yGm=LKHAVQs8yN zyVnZNj$o!bU)s9wf?DMZHss*_#E)GAoDd$K=CIR*sMHiQJABIb{=^&=?4BN1ivuGx z&0$F*BTG!$-Z$@@4~?sO9h%C{psZGJ;|ZFL-8if9<}zuY=7lY=B^U3nh#Y@a>e{4! zWB+h&W$yfAZgflt<;Gbn@6h*pcOtW_0D2TA^C4(9q*I#Ly^MM_>mq8^#XfN~Nr`zP zjL%qOpJiv6H8c_>2)TaC3p}!f{Zg1s3tko4^g2V8z)#^EfmRF<*pORoNf6f$%^Ay0Nq!+rR zw!7i2rOn1x=oj|WRRDK-2a~nK%UkaQHwZ787-lv^XQyyx-xzw&Km!A`bb-=#W2-Vf zx#3-5Q`p2uWwZRz^?(NBzna2MbJ5r7D?bL5)-QNndcm*$CLB7;W)!kzsTu?@Q_Icc zs&|IMGu&q;gqTA#pb!x&gO>zgU+#wwJ=(&WDV^*#V`9)VD)*@dMYpLCG6FN$_2{Dx z*BaGs47u{QC{Oe|eTd$BZs1Q#$SY;2#a? z?E_QrFhjnGnRc=)nt{R$28ToXS32DsnP7F!N@5$O^IDwF- zece309X$RkT*-Zgc_K>ZmyxI!ii#fY4Mbq!yO*tF)ipediQzcxC&FIN0LoJ4PjHK# ze&^mQ6m$rfz4M6^66l%Fky_!Beodt4`y8VDM%Z|Gx5v9HmJe6ZT-n@=?;ViRpqotC%xYR*ABR~iR?*=rA|2fiK~9~NHW;I$ z+~0B=(%_4rlK8)^eNj7Tnm$`PTlY;3!YQtULEFX8h9~uY4hyew=*sVE<}tylc{ZL= zfWWHbIyUWnBflnH))`*Rw3ofYe9G2amoQZ57Z?nc^x@|uS?Fs5LOsRoym!a)(WD%Y zO=DN=VOr^{4eD+e5-C$!G!QG){^|4aLJLw`OF>~i7H7wQcwJ*G7`F;3i7?2$-Ng@IDV4>T`~5W}EQV6y z?%^@q%G3M#*p|vg85|F4e+jYNgmfF;aikEDVCLLfXV^9-^qKR){m{&Oe@x!SY0a;9 zn0~?&9-eNK7a~;e$@JrRh0L1wY`xRJnI-oVz6YTd4B-J0#7PvyMM=jBiFrghKU z>lAZB)5uLhsuSCm5_ztJ)&>%EM|gzE?31gpEXn490Q)heVv=$p2N^Nz7Mmi&@^R@s3Z01UR~!@RTUX8We1`Q4O7$bYt%`lF zZ(^Q2xTZ|J>OxSWL@(FdPhDt9u8uDzI8Y%e(nh$jhpD;he~AjItWO-S68bh=FUOYz zj)b)J?_U4DS~(nBUuuk4{w5qVw9p~{>hQvdC~9`u?CNl;J}~{0$T{^ccekP*aN0*} z|JSo~Tk5L|-%Q^f-wRR2#uHySrYuCMJ44E-!WC7|m`WD4=jd;%Wa~Z{YMhAb9b}#H zeIKydzmNrO{C(6X?aL4Q4w6kW)ytx@b>C$|&Je~E;MrRnyM8kxq8t>ktYTnO8c;oO z`1xZsCPZHCgPmwVBH;?DJSC7!d0Rhu)32%+qt)*6r&mA{mxi9LD%+Z1yD8X z6y>nV$;~mrq^>T(Q}!P{-kw5X1$pmGFY0!Ww&+OxS9QzO;atBCN^?bTHD)5xuNr#^ zhemKUToCma9;Meu^CNlGKA6kEzQe{9+w0%UtDB9Ny&;35m-{fnOwqKq;|;Oj)5oi# zzL;sWt%%cN^2LsD01YFJO%`h&10iUq0aI zkcsQ!>ysp4L%gul>&-^Y{3RxJkgu`P_j=dtwOaC44D+wZ9pn zr_gxNDC%vLam8nHdUe&h+?Bx7z*(31#>Ub=j{{xQ>VYxjDUI#V>`n%w)$ z>B`sW^ved^;=-J%Am+T^- zK{P`sRH)}J}rKRW1Sq#S;#-I2xK4s8q zPU4s{OxLdj^C8OYEgqOnm4srBYG)`Rg9Wf{#QXS$=Ll&XuJ=NbPbp-E3l1szfelQi zI|C{=%ww`xpaR(UlQZWD6kXsp22zCt~_;kt^9(hR)~|(m|(0L@IMsV^}$jVVo|=ROc_9ul&Vi zwGxD4@ORF@NewcR#uUuJJ*v!#YaJVPb!w7YRo-6a(uGP)7Q}~BoctEl#cmf^Tn=fR zL$UhHlfl^Z{OhvEn6=)3_5W3h?giWHHTsKZ5G3Op_3=CzB4@je)Z_LxZF-P zrN2Yk+^<-lg!jex$+E7oasPRrR*-ef>bP&*^h}k&aKZK>K$B{BzW|IJ#Q$F^RY5WM zE~-|pVjEw+ZkvdG&>Hjl7Ol3uqeW>kcCw$v0JTIaN)_fn#>Lp5|0Q6UX5L*&23IvB zDXt%dUhvKPx$&FVul3Y26f(XpX)hpB4c&&oOF<4VpyNiE%hD`-Bmh_toT3(J4)XM+v}>R1WQbmw2V?sj!lN0G51HNtwCWDOyc zGVk^-C{rBLfL8_Ns&xWKQ+riKPQFpGUh9Ez#YB9AKQ3?ebXiiHmi&^4Vu8J;fjvQ3 zhWJp>2~;krF${D;153sqlZS-i>%dhl4BkVk{(E&n2ZPik?8`ey+T{!(j7Jw0MgdZ& zG}d&M!Ip)jTuQsW&?O+_sO2hoW@fDGP`If20l&O#`@4iJ@Ay<8xb3CY7=iR3HEb5p zdEY7DoQ)!LXGIBU8L!Dy3)mnR7{Q+)CPL33l)NJGIjTeLxX^>goAZw;>ZA*^H;FD5 z>Bd{>xLlIeJ}ABp$W${B7FsZZStQufLl+wv@>BJ_nlYREmy`s3I z2Y;x%;pb1O+V@OVMQstJ-J32vuL8uaG2ez_zqD5d;$KgF94`R0@9T~BwJQvBK)gZS zy18^*kxxl$m7v_aA)8 zh98qkhCS4=P=%Ph*Q%J`8+ji6b-Qap8kqsde!ki~2_(gEpqdFa+ zt?j|ZUWGArk6kF=;IW4RGm8>{Knq3?tdLxg5wlRXktAGo*TmmJpIOMzC=agcaI_iV z8S<^{Db?e0G>Qc-VsOUUt5a$8c#&pNTskqqi;=7)U8K)pakJoGs*;m{BMxBYOX79e z|Dowl47pFPEM$^0_K&^#f8aB?^QsrW;=Ae<0AV0xm_-M1_SUF?)-oX}0AB@5QXF<> z!BWj4Zg)Fd3VvjjcJzS%wQnnOI$3PU1wJP1g!*=(tQXnRw)Dy(ixljFLaD4rADh6Pz(7RiCU<-8VErPfR}eonrV%3Tky=g z7>)glg@6hoALAP6k*hU#JF^-J8K%ALE-mjhc^}O1rn=Yyn{L6xQ)ejJ)kG2O1z#>= zah@(_wTzCiq2|#lf0ZfC+rj3b+RStCD}GTtB$0x(Mu-N7NSi8ZSt}$QU+4T;y2|P* z*gt%sOnbBDaW(@ijQgUTC9#E0z$G5sF2^cS1FE_i@}8uC8Av)E3xjj_zC=^5s;wq4 zw1&&3j((^k#7})rNcvK1xM=IpEoCeRf^3W+6z}^)C!v0j&>I-u#^`)m%npf;wV~$I zQYv2vRV0L=#&UM%6#ed~@+&x*celz&6CH5oV~$JS`TY$MH3dxSq1uB$@`pqi1ipYx ziM$73AtABu29CT1j}|`;Wih}k5prG7oSlgnFy$*=r)4#0bfNgp8^gF-Ye|Un+Wnze zuydnVb_LFpx>0Y8jo;~s;$**D(c7U|)8pZeks@}Fv8$INk6uYeJXh^jw-;BR41%(I zV3#oeO{)w*YnQ9+d}3Yg9Gj5J@|&S7dP0y$%auuT3+-1O{Pw_`VYMIZ{6xHO6q$X3-_3jC-&bN z7o5N7;TefBcK3Gn9bMU1Oj7|KsQb(wYTcTN9@L!%^p!j*!DVdSk1l<3_#9z{q z59%NcZ%|h|A$5L_wZBrZe5}mTd=&$FyrY^;LSf_kg!;?3?-E~&mp~_^L2S+22etp< zp=@_Vp7A@o)xQPJKq%||9uB(Cp3?cG_y*&?f|QZ^#kU6D+2sl)+EMb|s3V-?U2IJz z!|mS1$CQFS(4Mbk>P-i3Z5_Ifg9+ZP^MR?ZnISwd5-aPXGCIrk+UIp4?^bYiCaj)AFpU2 zT(>X8`T$)*$4fv=UdvTH%Vex=ACk1)1+9*H!~j=y9Cb*l3j{qt!^A`*A5+RW6s}xw zIVK?A(RelfalJo#pechyYPUN7ht17w;Q=)wqx=sDV6Erd(SF$s{SQn~u>z9KLoPZQ zwqL$&1J$Sl;+eav882&ebk$KW7^X!al{v;STMovqt{kNB_=7a-{7H8CrJ*M-W5v;1={=+c`8uSJ#g79WY?%5B05QFan30mI&gD<(P z-|Mz`q4aL(Nau)B| z2_}5Ii!-0~k0pSJI;3Og;spg(2}y3)CRx0*<&d<;2~0$h-WZ>5Pt8|j)+kA*EhgB; zz$xy#vQ~GOwvLmYEE?EGv4RFwX4#D>(Ws51%X!AGFLQQ+<2+PcH@cPQs$Xve3I{~_ zU!t0cuCaHXN|yBDPhr`>ySOhWgQx=fR8}^D+Sn==LH$s5aRbZ}2<`x;nrOim z*x#`Ew{B}pxOLsYTLLFt{}T$EiK?HEA6GO~{**$ogaJ|3|%sci3Il?(d`l z+QkIKTn5fEa9O*d8|7xdK{cD3;eT}<3PfZ80YhcqQ3ZweU{ld1Mb znM-&7m{eCch;see^D0|Rmg?Eh$5?_d@8+R~__FJUsqJSPpy^V0!_A%|OkFy#Xzp(k*8pBT_C8o>c5*ZD02JqF(9d6yz9 zA>+Tyr7O6Oy%u#Dc!vsIe-N2iTB9DSV^^s&ku4$KcQTw!bAC`9ZR=9}$vLUkU!CM{bz)#n zKFvY3>$Z$xyAFt{MiNnK9dPO~$-!NlKO6#<_J>{Aja!Na9P=Cgpyjf_zg_!-O8Ia~ zdVrX<$xjgCRwb;JiJE_uiY3wH(<2N^nUT8?t#Kz@l~$c$>)9E*Gn&ewxwb>>2I)bc z9I;)zq;#r$$^V0*p0Qr9N}hzr{g*aC)fv%j+TF|w8_%wuzWfIoiURkyncJmjN__Dj zv~^?|im7*~Zk#SI`3tsdad z+W;j1S8>w8V*l&js{|H_bT$x|)lHrlCP1ueH)8eBc*f%(SRF>xVCnnxUs4O>28niR zp@*@f0d4q7<=cxA(lXDqpYQIl=?pf7c509LPS151dYFy zXus~+?!qvNC6j5%$i(`hPTX*~|5BAu;PM;bO{AMP5?qYl=*YDaxR$hKp-@ zr(NkaraQmH-USIbgtSnpe;p>-i;gx53;||5rfS<8G`|j?Zhwh1`Vdllw|DTTRlCkC zg06W=L;{GxosQBo^>HH+K-H*tE*u9%=qKk(?BtWt}bFSPf-FCyouM(|B5Zit!o~Y3>yW)ouMB*UqqD*U#>XJKY3W?_=R1N*{2Lzvj(mv%_lXOH!3#}r`9{L&WjC;8xhy0B?t`a!=0o{+;tyt^?qb7* z@re9SAbMaE^SIhZF)_^{ga<`K_dzy;csLN+r0LM6lgvzEXzJWo@=V+{d&+bCHk>qd$o#@e}$jLL%09 zz`MVMZ9pW_t$;(q{_ziEp`nU%?80msFQe`w?IB~JeX?bjHuYvd*CIQ>MZA=*C_fYz zuc2O31q3>B@Gm6yM6%+UGU=%vk^So>;&Y6VF<_z-RYT(XkbfP8h+K_K(SIF9FNrA4 z;?#eEgm`UuqznJaKa@Q%20ajkwY>jZ%|31hqAdT7>;Qc{vVRX@;9ri!jtl{8(p@db z>O~D3SRN1~azmo6?_?vJ_BzaXomueOQVF*AfDXqUc@p!TfkT!iYSl#EfmHY(yOhn9 zm+GMB`(?y5v7aplbnwpvg4!A3R)AayC~gpdVl(hA9(egNm8VRpgCo%sR_g?Sae%Cr zdIB@`4gQfJ($u4d4uPxNXymu}3ec)z)r&xUW_i0&o#}tc!74OpNi!t*Kf+@p;=Si; zz~Q#`$HTLaqXHvXbnFf&XO3=CQGRvVC97OJI&rrqV5alyjU5&eS?W^aE&mCxYcn4| z6-=|2w6-pxU~wqS09FHhgz}v80*IWDwhs)&Ha=#JgRtc!w-y0?nR(XC|^#E6QX8tp!B?W*H{h83f5dePV3; zf6_aI0uT&+{1XhZ$Z2$_Qa&^;o!(xD4KWb(esj8!($jl`6V#orJyz z9+jc@S!UX?hQvWM{(4!=mdn?cPa^&Dey`@yM6cugUAJF}?m?%IC_03T5TJM#;8kH? zs7VN1#|M`(rIK$B?)w!TzKqhOdS=`*cmO2@ICF>u5x6wZ?TRF)@h0oy=JOh=e|#Po zm7^EMu1vhQ#dLO&@s>n9&kxI|B=&8lNt;Ts`5jhp0OgHs?u&C=-m(ErH8&*lm7dvG zu{Ix9!YqK_ZA7*^b(De=UT&@h{{8B?9WK==Pb`G->FK+#$VaK4NP39Zp1ku3ID8p- zy{aq&u?s5dcQ3&s(Iyt>#Sg8Gt4fUW_A1Q$x6Smjla`U$pIk5Fn>S^GUW`We{Q`>0 z6|{oXqiZ|*emavzf+RK3Z|r&?dW4^Z#PQRea+3^16WFR&*WYKUXsXY9-=audjRfL6 zr*=dvVg9*dN^$eLH3MS3hR65fmRXO8dxQf)__?|f(4qM`SG3Z!)N zpjt$-^8IUGy(M|Tj95Z2ZBIIH{O!uzvo`apyK4Y<;#==cX&9Y;#y3?$?|A1I|GI|v z$Dyme^`d^eirMhp0-}GkPf1HZZ^x+m09BlyU_-fcbjG(bN67!%Mr6!d@7hUY`h6#Q zw#x#6iC;bR@vhv&)&s=q4`lqOuXSR1GxQ4q=*!e^fmd<#eC!wSeJid#5L&{d&)+)R zhQ#6~WCIA{^D3EIwReiDdjn8#daI=@Z|NY-b=x6|X&tG4t1J~thY{6$^K*a@s@_q5 zyRzM{k8GX(bkFMC$Q#P*W;B#HH$6Mx9(|XTyfYAOp8&gT_A9vt`~qjMC-UMmm4Mr? zX8~9P^?g?8p@94G7H+tG<@9R zf!-AOo8YxU_b5u97x-bPAkxUeA^c>?-I#a>?^fd)rhaRd>r@l_oC}vu>pge+&kEB% z@gBxc^aRnKcHxC<_y2~UvF$GkJ1MK>XR}YM+Cy0i?+773-F-+=Cq55!b;esuA7UdE ze75?-l5I+Qc~d>9wG&a4!}1+6F)6LM-Z6>wkMkRPt9!ZPzNG|I{FUVTbu!P~rn*40 zzj!t6a`lT8Cr6f^GX{Mq_|K;-nE;7iz5$Rh7`IXQF$yLj0GY!_FQBA8Havj;O!8J( z)lXSJAyOw;t&XgX*D1_IqLj9dTX&A$iAC^i`Z*IPHzA8sCAoTk1N>uB_p=-B$M-mT zUg2pG=WF2u1&wMBP;XV z;R_^b8`!4m_m8xyJ(o>-`yLZxQGJ}5?uXya2`c_-Bj{y>MYMBK)kYHb)uRA*i(T>H zrOT%kXw?CIwQ<`!0fk96nfsvjksrm;%kT#)DrKh!pbz@J-!|@HR#8+PT$L+*qS%XV z?i$JEdh#cC&RJrRFzBmu7JKnx)`bbc^RA&rGsZ6B<}Z5oDX+Cg0cq-FGd-fd$)nmK*`K7I@^F z|H1>9?>|`3@FgHmsyc9;zuIP`HIlmRsjpw$fjclN$iG)Xxa+BhM&Qze(DThpXn-eL zm-vlTlb(Mt$az7;^#>^Q#lAqP0mVZ70)>pwy4syKiSL>RFoj~-GuXI)qh_=M(r`a0 zHSaacg8ChMyz>^#5(n|pe)nh=rP{T~UQ^_P%32R1qcSN5c(DzGj^5GpEEZe*SS;@< z-nKz1shM`VupeUb-KF6MO~Yy|Mf}i@tC-qLt7CQR5eE{ANYUsCMbR`>-9vZkH~zuS z6ry#Y#hmSIH4E78Fv01y4zy~#de@~@XN?#%@CdI{vQEm4-q!?tswarYh*v!FjV43x1LY2H{1>g?ciyv0xTZdn}Jfc3b& zxj1ILzPM?c=u?`zVSUw1d=_!hlBONe?!pwpM={t3^J3b&yWwf5sTOSA0`}64_w8G6 zh2w+NH}TqG>_=U-=o4FM-sjiaE(pmZj}Zq{p5@Q_t1Ek65aGr)?XP~B=2}}l>fbA8 zl66@MJu2eAUfUWNZ<+PDD&cAoShmh>0o|?%dYvC`obFMrI8fnu=~6n@(buqSbIERM z%`Kf=Xq~bh?3}+kKZP28^{J_kPEjDhXN>)sjN90g$})z~(FsGTeD$TBYz0fjlh5Op zIgBWcR$WY%=^$S}TF0`=>n+X)R^C@$M;kRQnx0>-J9g4!FPt3D_C7Sv+%y2`7snfC zO^+?b35h2v?GU`Xu|}8;X>I04WNdr_e2OlM%}*3l$bH5gTxcRcR(c@Wv_Kb(p0u7u z^9Tx0f2m4-8$X_Q`{n$~+u^$9YGeZmxX~#R5Q}lWoxAyReA&OzbK`P7ZOxVD{rqO& zrf=i?diwIMt@dd4>d-{*OeJt@4_^rAiL;jLo2~w_6U;5--l$KKc0HP#-2oGQsMnT6 zCIe4>T6J=6JgyG=TK3y{pN8fg*~#w?P%8I_IeS4ZTxlO2=N^@ueiTeP7xr?Oa65aN zaZIxb-SirBB(Kwaw*+;>ves5xpZ-K-sydHC0M*yoTHd{)NpeXfE(QD_=TUZ z^;#j@ENtM~FaCz?pwA2c)v>+P`Ma5UDxx(TIlp3`7J)h3&<2U2` z`!cPwzRsr+CmVfhXSR`QR>5^2!g=ypx=RE>2rsh*Gxa{CesVr48UHA6 zscQ;z1~P<|kyIbB3e3Ir${jC5@GkehxvFWvUZ`nFxtY6lJ#%~Ge(|Z_#=H48P220b zCrEqE;Y{GNgjc%&?pkX1#%)@1-Rd%Z)|+3T`HV~O_RzGuWpf~TPF8T~e9q4E0<96T zdOEJ%<)*yB+wSnTezeB*Mf`!HR$`j~*;Wj@2NJSv9oP{_)Lv#2{fpuhGCvqpUt~L&Q^DVxK~)K^j52R+4H@g8W^SH2U16*NegH*8xLJ zhsXmfunaz42nl+-duS&UH#u&gID@vuvg+;e<$6ib`{rtl5$9+(=294Te5&oZQh*7XP(Z#w2Vr{>Z+JWmVH6UeH3$;6i47w*;=Y5TX_ zIvkyuQ_@3h$gjl(HyD7gT!AlI&q!S#&BXY?&X=LOG%{ne+{gEx)wuPCN3tvHw5s1x zbY55)#z2b%BTsk&Aw$n;ow2nxwE_uU`+&u>YD`TBBB7Ls^4*j$7g(^kQ5nB;?vuH; z$MQlDzzZ0KNExBwZq7O%CLMso0}r{NpamPCfr3*Qz2xAIIbSF#~?pz zuGm74wp5WT;gEE@8304@DQ8Rfm^M90X{ocmxiX8ayqdw%#D$Ws8JNHBUn|^dNeC-2 zcpS77KfJ<;%z^_g>-%(mRA07f328!lamd^6?za!UF7}U@ z_Pm=HUV)vy?w!>z!Wx@N(smQ{(oDHrPb(22C%QNfxH!2OA*#^cL(TQ>Ppgqz-o-@a zd!YakHapzHIVQX8i{2P(BM{Y9oaj0SEqY#Zu#asZZI>v?5>~fuQDS|J88!dWPMmG7V5vzj zj+3l)?IfGP`75tmn+tE}t(O~1Pi)Y~f)G5JEe?mxNrdyHE6#Vbq+Hi9v+KZ?y4S(N z==d<0i?Np=-wISQC2~8ftDPy1mp^kgOF$B;Ef)q~aC%bu5M_6DZ!AhwA*JpngHJ;6 zvS;JGLK%C1j!~u6+b{^?)^b|ikjpg8>Y0WlS%*D|O_%8Kd^`=~J^W-O{|Rb7jLs+7 z`U4aXrW7N(SMn}I!_m~kvrcsv)nO0cevytOdLQwmqc-ud-LjjWhUtUiq`rCd?2@$- z7Ig@+{3C_e4-i81dM2&o97fXP`?XEtiF zefrcc^|OEN5;Wl_*k{4e^M!&KKHhL8AJNB-%9VN9Y6hKKw4#W@YC=$$wI(xKzsx*O zqQvIUFS9?ZcgcUE{48neF~mgCw!F?+YNN4SZMXpqPeUa#8+9xGzKS<>>va433Ap|~ zMJ4!PDf@g1l=M17ai7%>D9}lJDXRvIq2}ka9S^H{d{)zWOi+@hvt1q7Oc-ZH;F9oP zK$#S8%cs{tCk^b2$$e^&3}MtLzvRdb(Xu&#I(sz_1yXgQwwViib^Y$ssVnDcZ(ThS zUO@Lu`*yZw)GRSYB)afxzc;{IE_c3(Iipv@y{5G_HQf$QotY%t;fJR2eQm;ro&}{? zPDSI&?7l`LfzT%=vHWQ+@Z^K~+AaTiE?qB7SXvOq+XMl049E~$SLv-n{WF7v3Xf)4 zcIQ6lN2_?lfhV-mIyK1dX4y{rrB}=9{EkRG-cY?ZH-VhDPH!oT!55t~LU0S%>7s;eDpeCE z!J3z7*_0JJaaKtvt#{S62J0DM7+`yR>*^MsxYZX@CZ4N9j6 z&GrrJ{-cT&eVlR;1&s48n(usWf%m_`=aPzu39RbwqKLlFa6<^258VT~2vJtn%lz_H zx$q+krTQ_g;S7co6OC~GsJETF_oD53+G|jj#SRjQ1tW=KjW*C%0*vEQH8u_69duQP zKHIOmDX67Wa|%I=DmYP7hmcepOANQMOUV_Z%}{IT_fT_`m!{$nw9?No4*8hsJa45J zu$&zo#Wyuu496D9pN6+ctp0c(OnWi|?8-kO`>gyUekqr9&q>IYPNTAe&jIkEyZ6TF zXBy;ZksJ1&0OgjDJ^iEHia!p^!6KpCAiHb+QETQ8a$WtJ7=da6O4+2@KFPgid3C$& zU1fwN%GVP&>@eK4?cvfDf$+347zlIYKDiAj19 zGDT}4a5R(X8N?L8i)nb?y$(yvPP>UFd`(`?#Q2%c`WmjnA(Z%VDDi7)>2}c1z$)r} z01fz6Y6ZY=bNWD)ssnp%S2H2oeeN2v2>;BCr%0(2JpTj|EK9|SI?_#`;+Q{l%_D7Q zq_95B1o%z8iqV%U+<#AM6`o|HIGu8Y%6sZtfav29OV&**YBrZZ^{d{ z1bnElt*$SvA}W$u)6rXTsb?%v&@UkGDydkPcxx%$KRqHKZ0fX~Az8|jNrV;T;vsrL%N|Q#LHnxu6L~wpL%s#Pa4;7$apdQkR-d zv5J9t0F8A&Vj*GI+;K1P!AONcq96!UPbbkT<$+Hluyqdks->-cKa$v72A3<ft>ZJ(Hl5^A}~@Hp9#&_;KMavbR+Lm6VO(6KS|YWt}B~I!|9RzpvHBE&{4`r zV?#FXto=BCyyvz9SU>PM0XvuU5pL>+XydCt%V{xjm+nM50+cvL&-3g!E0Mxujmf8l zBM0mTSpF~5EV5~%^ACr(XU0pvWWD(K8C@dgad@iGQ=|-pq|9ykK@9h}nwUz%m@Wgnv*mE1%+=?TdAg<{UD~HJJ&_L_;A{OEarrPD zdS&^hdmf<%&adCgSYqU7*w^tX0FRUBXbSQxz^xfFk4ZY~rZ_si-SkA{cHh^EsevLN zh3P~QH4@JQ%HpxI8=I!$ID@j2hJik*vXT{UmH27bQUgY2!KwT`WwIc@yaJ4|B9RzV z7o0a_p0}@>rk|GY5d{VfN;n4j$>Q-~I1ERIE|EW4uIEm@-F<}2rixVf#Z0M|8^Uyu z@H)uv)WT9`lFNGQV{;3Bb`(Ix%=0d68F$4h$}{e4 zb7S1g&;Y*j%2Y}4xR^LneM&$Dcpdpe{Aui=9r9$-iSuM=;udxBgSgr-9@uFwH{^C3oXho`-{*3b!xVUCK|^I)AKs7 zI$}&Uk~$I<&2UFPGOtNWNiEK~RCS8$;FFE`Ydvv-5RXV|!yrEqwa7dgs}7R;RlL`z zpv*K*E+*C}s)1phjWj|JW5Ylo_68H=G zsiT88902wA3fbfuQ@Wy0 zzjXq%5`UK1THlvS@pwEF{)ROW>2*{9iiN!eb4QTDsk9H@{7t)T$)xEyT-Q=L>ZJV{ ziF1Bpi_~Rgn=QTzSWoN&1cLEC+nZ%4hXCHk_B4!Rnc%Qe9R^_Sz%y_)Y)c+69r1GB zAhc*@F2RzKXVp)jtrj%QDi+wz&yNDIseLp{g}{MJjlf)#e9*7blGSuMq&=t9j2Z(I z(6f?FuNmcgy)c;N)PUNHxZF+IMa%_MRNdq!%^NNK*>n+g+TmJaiu%!DccP&zf|C6v zNN`0@O1OJaCJf+Hk~-~}Pt_q?F%HqL7NG<`( z3&T)CcgV-_Nm>9!BeY(SaC9Ep6XtZM)WJ*8V!r;aIqA@cTD;lZmsa~_dKoJ8efc)0 z7Xw)AgZ{~`VN~G7&PDLUGx>e+*(`aa|RzMeRFh+^A6y%Ac#buuF$5vX?k-F=X zo2bw(>NpSZGhB&eo8{Pp{MmkCtnsi@JE+tt^Za2o?{_YTpX2)6>DXl!VHv%@D;e&Q zy?-QFKX6UhYlMy(C%?gslRDsmcJOJ-_AI#ITt5(i>rM%cnnX+1| zNV*XTcSrB|ztcP13fTw>CT#37+i&3eWsE1~Y9!VGGB8{?L;)bfA>du5x^D=jG_2?n zx;LnjN>p_r8jy*>w*jmzb;oYrD2t?(UD{a_9CFJhMG-F|0wb;hKH})sWKOOcKM^y? zviTL)iF^M2BDVg4+h9Oh7);=>dX&0HfK~hNIBATiKUe8x(;Shz7oYU8zO)eur{)o? z4!}EnY@2Y1aNe6`(?4JZ`O>#U_|g*-z`?fr+8`f2BZ8HI(zletZn6f2V=`5ZZr6S8 zG5&+k)kqI~<#PegbKFn6rT@X_E`IVkG#Wk8UF8=se-b*UJ3?m~PiUUrKs~V~HvaE? zjzdcB6Vp=rN6aTf@ zp;`fM4t9%Uv_ZqoMUtyk@*cHYT@)6l1kedrUj4&QsVkqx_MQ-r{AqV98=&fUOF#?Feq&s(zgTW{pUu56K=e+k($2g<3ie4M6Tm5Jdl(>`|@72ZKFj z#LJ0Quq6LG`Cyf>>WXWwmz)iIK>2tOL`*JZ57cr$!=Oiqn%iMOLUzTP@^#WvQKktr zzsn~!5W9eotF`W-_f#~#6sb5~W_uuSDAnuM{lcbp20fdY3fSj7WotHk5-Nc$k`Sib zx|bH`CmQ!jDBMXgvP32Uau*aE%~EmvTHKTFKWLpmc4OsBBhLQuLT29?m`E@u;4LSb z5P{dox*qwf@g{$!!?YDLy9NWx2UZ|UYku4}_!%~(@l1-!4K47&a zLRb4L4j>osV9Fn&@WSPQdh;xeV>HbQCu=s&j|{Qld^C%Nz<~A#p#x%UlEE9tQ;nCr zGM%Ige>)nobl=f;YT^YB@M9tw>72C4=1lNIaenN@VgX4 zuN6!a9x7-j1a8p8AZKNi?tp)`-*8iVPE5lo4lM!fQt=Ryo@0rrHYaK8tUeAgt6*s} zD_sGWi57jgN;-j7c4mh8gxMM^iw|q(prFbWK90D55WCbAbt7MNcRT6wk3_o&ETz&l zpHPGVQ3`f`{XEB5RlI?=CXHIcu`tl_Y#(eEAackqTPM;3#SFnN^C-8Jwc8K?*Sin~ zpT&adficF&GUQTTMDky`>;GM+O&gnnf7fiv*Qv*)MGSLjhg|IV~6Y^0?gNJ|ue=g-yjh4`AfBdNoU2d|yI9np| zLwO~1k{+b;AO=9Max8Lb)PsA1=yL2ZG6@o|6-YUn00GOd^(MCuQO?nDY~ zfB$eJcMDEqIad+pU;XjQN@5^=#LUXJEDpgpC0FVbrht`UT?5qh>A-w5$9Dy6ZB|+@ zYRoqjF>Snmcb57@TbkxznKNz%Gm*j)VUGF_zeW3--;$qltgBM}TAY{su_Q4C-T)MU z%G(l>-S0+1BSND^iX%q>uSL+yQI_h~fnw4pV<}P(qr%uvPl&|=Cl_0e)57SKKO#=F43G;{qIC|<+gjT3T`C{Mm99DVsYadqvsbA;#_s|6D7!-*y_ zu<14@w&D$nXws0iiyf8x-gk(7eLlAM4q)BDRlpe!J@EB?mmog(a2zFTSDzU1D-aWF zbnt)fd4%4E_Cb;T?3H_uT6SEL!1%=%=`rZ5no!JrV9&RDFU4)R4wrtettBtl>$k@y zQ2ifR{8($5TB(>oqE3I|m!Buua2$NtUMa=Y=4vN^R`;PiRd_t~1B7T9I4yMuum=>7 z60_x^QHs^vBwi(C+dnWY7=7RFre_0I;m{xgnd55;UU6LR`t)fA3Ny$~KBhjUHO{n; z0DK?#Vy%LKYHl>H`CX;se${__E7z~zq08ZLj%VX3>&96j!t2xk#Ac>}Rf>rtnoePN z!rH%y5$F?ul`?OsYhdwW)m3frUM+Sk@@YK)xy3i~>F2Yiv+Ynxd-}+4Qr{zi1zg(MC2@bdK1rRciHrI4nc-O&DTl&YZ=s-x*881x*VmAlLzNI1=3* zr6$I}@VJm%)eiIH98P^I9ch+<+zY?gfMbxgT&l=w5;xoXkkiSvutatC;=a)a)}!UO zZ0?lQFc=*#)!eAY2NT_qXZ{3Y)QaOL&xP7ov`p$vkd|S?#yPjF*d@$1*(GAG-F4!+Q`}XX%AlozuP2}=&G|K_WTD7 ztHj3_)b067Ipr4_&E>2O#A_0RIn_ac%R5oS`PeobbDC7(n(;{!cvDv$kL6S;^w!f-92>ta0Nq#L8?G(f|ZU|CLhD8W}7zQIvhDVp&nlDGJVHom` z)P-+&9(Cs^nNEFrTjH#Ujq!}bGLZ}nAm!j+dTgXiXqe7E1@jhiPPB0pABmbgR2+>ITOMj64wK_{(C!R-`wU1$T#y*95whsyFqZ#~wS? z*4US-*S{Q=8mXhjJHzfD4vW?Z*?_|;p1~gZf8sC|Uheqv%Txm=Ozq*U$hTC37{Yme zIY7~{ccrfEkXzzjKMZ!9+#{lGI3zcXffMje%@aUBhH@*X5;(VU>~aX9$!2(}4njq5 z$&BRZdQXvw8((J}zcNo)dnT~kdk`rbe`g6|>jr>=5c0%Mcn zj$xR|iH)=8@yS9}UJ%c6@Z^z|1VvAh&1k)_24Rsp-AQ2}c9JU?L{1T{L zX2re`16mPBc>gH;gXiA=M zoN3PjAJz3VO|h~<)$ojZ4$Ys#G>D&!<39_m?D3Oq+%pQADaGh+%>20Q*DG~Z^h}17 zeoTbak-Kbe43Kd&}rrr=tgjBK#(*tAVne%^1HSSzL_2&(&0q} z8X=&U?}i*v%d4R0lAsO1mk)7n{{YyR$VXZ&v!rS7ZMBf8e|(UGESgI#|01w_~zg|{%$g?A~hPD z_U)fZkQbuTUS5g}v)%{nLj`xrb@*cgIX70Lyjj+RSGr8Y!E`DOURP#$vbP74?ci^F zNcyRb2B7+Vj3$_sta)NiI4x33o>@XPA~S#A(Aa^S3_;niURvf6j?=D!ja|TlDFF*4 z-;|o+mIUq4jBZ_M&_+HjFCZynIkR|mDwlg3cfTR%)uW~3KEU=~N2yO{QL^S>T6%6F zd_vAq>}Z;c%WVaTIuA@ae3#sK9x~@B<8Q<*gqvo2hME4HatvQ^n=nmCYENy--NJ%c zLq`iL)~1Qm3LAwWwxglZ(gCOdTMFEC9R?e(ZC1);dbOp5maRe*v4MEpP1&7(XWld^ zm>RoFgjB!IvK6H@z|UJ^bPiXXRr|8&3$gJK9Rm&_Ygpbhvz-}vOg-2@N>s<0p~z(6 z1i{ufZ$bxC1n_Q%X#3f_8j!K)&T45O&LSad{pz2&WUU}l z*V$hs*T9bI<(J`xWlaXvkNg;d9eA@r5JZ12PJuHvA1;I5_+Xb2I8XugFm=$F8*ZX@pMA3H4R2;R5~%RFWRtcdk6a)|!&V@HTL>>8Y^eX}F1Pp9oM? zB1?(sRD&@B8@&k`ZV|R>BUqDXICr&`6}YMWy|(W6zx=eFn2tM$gdeym;HH=NY4tp0 zjPlMs1hWRzLZh>8-mI{?RWd&QxH+c14`3UD6#%P{r!^qo^a+A@F1RMmZvWunEh$G; z?6tti^#H?<5FB7=A&G1f<5&#p7-t&y~;K<)fQRES|oz6P-B6 zck-BvcE^HAVkj<}y;xkA#_;@;rgT(xW5s?KB=oQ+CG|ZF@$8HXkpNx1g0qP}JGu5b zj;73jak@_EOg(?)dzb*Q=i#s_rDYLn2%l)NvM3FJ=$!KJ2cC55+y-tA6(56*v{w3L zxXm@THKev?A0LuJ!>Yb7^whgrXLocbJ7~~oi^V2 zrHvgogp5_Y3tjL@OswvqrPl%bb`{IyVUK*1Vn=&x^U-Sp2DjmlhbMT)lPzF3pA#Uy z+%-_^9(hki|4V7%ljj?;@76Yhvkd=I$B>|}>Nt7>3e(+3`R|T3j~6qe1{CB<~?sg)#3aD)h$mEWELF^2>4N+d$1>mIalh-5W?-#gHIj7SzQo z0A8q?7CWtOJ}|nlCbTsTn_l8n_%nh#4^rp{`7utKnp|?PcG_G-B6Q-_+oa$WEW71U zX)9tQcn@-18}MK-W|#wOr&(c{H$IaE(`-BB(AS?}y?yxB0H0f%og}lK#fh3zSOh3n z(t_c)8_~^H`4t_kTX?2I2irw((K82MI0N3%KEyB>d!IpENNeawH@U1vl#0PNF3O_6 zMw?@BdpnJZE}0*y90bAqS`jF%*G^Xi#uB6>11t?V*r9#|bxquhQi=;}a9NMskBJbb zD#|1b&ys7Ljq06~%@rrJif>A%2Oz{ypvCeMfYR+kS!i^Prd6f%xPDiwf$$+a1!$AKWj8pp$p_In=bE$6sjot!@lcSv38fG)_ z3pWe$>Heg^=mVp-{rJ>JB$ip1K|kiXCv#uDq1$se(%N~r%PyKXJrtGXwZj` zGT%KwK&x^NCdF#|d3R*U60kaTk z9t`RX6JVW1+4OVx&F`6~CLT(Vv+c~x12_IrNEClejhVSAe-$84%ZKq|_|4lj`Zj`_ zXr#Wty!D9(;r}uexd{1Osewqjd+)in!h^KrOsxCueIS3Kd|r%Nu2=5XT5=eans}by zGcmfmGS;SvS+796&$NFGMZ7PDK9zKpjHlfsTt|CxUz^`FdJ;M_nN2)Uq}NB=hP`BB z60f~XGd=+W-I2U%HvGM_FE&z~p8q-)SxkDT3FxKMe;JA_{v3*=B|Od%O?cwaCV|X; z!S=yA@#eiSY%>pM`hqa4JLTX52XEc{@$E(rs3p_MnZ3jsci<1NHJ`sk3ZHI;|}R zIIz5iP0JJs)?nZZbvKRGc`mq=-0vmffA+SeIo~IZ@)bhFmK4cK+Em>IY1NFUw01fd zCkspyU~R4UJHZ^CksiT(<9;+u?kOI|HBOR=S_`4D2w9iX^2F4G&k-ttC_G(GEtFm! z4w|Y)*1JvDMF@qmHrkhWLRYC8J+^3csRQ^8(yPgnYu&{#*Zb&izT)e?3#ME_L#P)~ zIp8>rv>y9yeE+#N&5V~f*U6K~T-G)rm2JT?+6jXwkaPRH9AI6p~Do+g(j36GX+8o#H zg}j>+bIp6&hFM&mmtpj>!shTf?%U+T{Gxxa1{-VP*@L2fPDPxPV!F{!GdWr!W_|<@ zoJ><^^f=cOi%;4@Ywr84!jOO`0Zq}w%6HYd&<#e@z!QmFX03)=G8{|5)aYRD9C6{xuJgBfwRbu>cH2`sH30fGrp$O=KtlaVi`--N)6Ewj znlPQB(D*+sN*D4}|FnT;FRq7PTJx(fPOW?WPB=}&bMv_V8jrNcX5VWB;I&^A5;!+#Jz$FIasKB(<|(XC7VSdab% zL{nKX%lciw#ad}fx=WHYMt@sqh|NszeDupaNP8+{G`1O-E)_w#~Q@6oX?;Y zfckzJLLz)3vDwC{wC9=sx{T_R-#>X@HNgAeDrr0Wr~OAcpikx1SK)ksu?N@<3(}bX zUf(kty{DdCih{(}vEPgC61WH?OdIuUegcw?MeXu4I6qjBVICpG>-_sX5zZtnC5kU(=8bH|}dxsiaTV3L4Ip z>xLbVTj$`Og5BlPu6A$=gn|9m z_unc?_)rR8p-@AkMEN6l!3jE89^e|Jy9o%NJVadgpqiC`iHX?2#x5aaY3M!R;C%sk zrzASW8bYA!{dbL!#)Ms$C*F6}j@Du!jae>%695F)MuVvbw!2ai5uLg@f`#G7TBjfzyG4xSzYpLHn*l&Ts}yLt5lreW4~O5XprA@d-Y1fjhUY zcV-oM>6FCo!~2e@?7n9{=t&Z36@ts}VEjswZ&ymOGMoGroua0sT62XpdDcgfUy8(p z0eVVO7h+(Hue;J?7s_iq`gIw-+;83PgHvXCteZ!zo}`#!}hq77C~?}o@m`u7|fgs0G_`Ex4_GR;Fco& znv=Xr!Y4n#kG=qe316>;Esbljr3>a?vUpGB1PQOWTT%rCTivA; z`&Gs)wj5!%&f$G;lUy9?Gns8EFW>L5xp*I)Z(cCvq`okmU2l7MvI8mhw+VBK)JSF8 zw|*wEA+04VpS9vgg=7pN0K8mrT$viu)t+zSmT<-fuBA<~$; z_VcTMQ_3Ijlrk4|jgpebl8RDRPPLV-*JUp7OOt=QFmk@fJ6}5Qy65NY6r=fCWPYE! zh+z2E3b(g3U4T-&6)tDj8B5O3h@d185p2>q46u5t!&NL^#OvOSd|3AZk-U{rjTjtw zB|NiLo)#6d&8sabQp?jT*5>~qmVK=t4e6r)=%4vO|IEAVpUb^=!}7IHyDUW!OH^MX zigdvg64L_zUxCFS@1cZ1ZQv%=>3w0x-R4G0j`pufQ~4iBQ~4&#+40N|mdkM|b@`1Sm;J17Rw0cS64c>A2CaJ%XI8`!yFOb27 z?{D)ZaC2Lahu-D4fZzpu=;w<+VED}=`+vdU55YL|Pj-P@Htw1X^#um_wA}w04OIFX z4U`vH5ewXmEu^A*j@1t4Z2i-=2H*W^TT7(K%GHN;V@qy+r( znemXvjA@a8>lw3>MFLe^`|fWe4{*7R^I^y31ulW#e4Y3}^0kb%=i~*ZVhMrpRjPH~ z?lsWOqIkV*bCDbWLFnwm5XUC_Wwicbxd8vMr}>>aqD3iCNvY{5F6w&U*>f?{nEhcQ zDAdjs8ByzJa2ae8u3tY*$o|>>kA~%*>#F9&w{K4Khv#D1-ps-DmuV~qxJAa!dD-jj zRSAdDZ$;&j)S9*YA71{}uljKc2ENj|RADm1v`!#w+V^MJ)E=g`;x24TZeT~FG3iEX zn)r`NNM%@WZb_6og+w9^xvnUQt5u|w2pgmQ0ApX9fX$ve$o+`bmpR|edyn{&|1*-% z2r_&YErZU&fnj8gr&PYf~^eJ z0Vikics&RTpo6WfV?Ji-7c>QPN>76;d>+n|&t55Foq{gAi2pYP8@RS!w}Wc*HOz!I zhGqW>Bz&yIj1IGxInMl74A#Ie6YGykPLuk-A-I^yaO3SktS1}Y|A64p;L8ttb`CSH^%luCnTw`TJ+dM{L zTk^lhAX@Qd^PM^WC-_onHQ^JYgadOBubEhW0A=s8fY?3nIn#*fNTLoAoDsO&9kBi& zlah^D{PC;6aO787OP2H4CUn{KcRtDg=~;5(-_e=|WdZ-d!mb|ZZIV*_PKvJskT1W- zYi?!wRccIZs7UQDk!I&Sn(J>u^Qpo$dW}wH<^HZ}cbM6)5$et;%%LG$uHYvU-#qG_ z-#lsw+sQ2S?;iDk%s-fVnO1T%YWcPQ?w3;Ap-j^HTmi*@ix$?eqD2v;sIcH1_+tQa za185&itpdO5f6-|0sDqaKTk_C!RLVfUrlOd;OM`AO|s$PKSVHn9X(x;zrO0HY?Ty& zIhb>e6=*b_c=|{%z(j_^;ZiDzfvN32p}6lE3|cXlFgrO&Xcn@z&_i;23y3uQSf}dv zEE6dSJk_kyN(AU?d)?^6Pwm*K7~*G%=|b|vv4NZDn1QBwTIFPEe6cfCmH%l|4__T> zw%^eADv}{>1-F4CjqRWz--Yv$#-@Qe+}KcOij4N3$m@?&aP|agY_bEEF75){web7Y zZLTE4%`wWtf7J=oFuzzCrvP97SFXmt${0!%Bp(|;+6z&I32wtY_zyj>=m|Y-+%j|12ed#EnaWpeOi*3k~vb ztFIu09WQ^BQ(1=F4!NfB0Gaq-*xQUWmTZk!QunkK8LRORy^sq(>FocjoSc*5;Ts-I z{lVhYr{E?7H)Z|~A?W346_Sa@zyHs9N4LDEivOhuFz>)?iZ{SgMl8wbLGOf;6^@6g_F!{_{m0#2$8s`=P;@-G<# zTdcuz*+m8@Jy6@p&bp$#BuRXUw0EW0gN6}Hp|62`*thPmGhCc#L>(@qIBQ0$n*W5} zH-bh}k2Q0m_-kAnrA|y*yWcb8`q%&zynRPH(Tku`%(9s;I@P{Mx?$9=#Q5+CF&10g zN3&cA;%;ETT$Fau&*-#gRBN3p0htF(7Rlxt6^7eRspYoC}J!x~bDv5lZ z2=~jSDasa7r;(nobK@ds#c6ZRh8c0E@8$=<=*;Mp-V*^ z`MZo4p6`K84Wwlda|AuluSQV0oC8QN&a92BXB*pSV%$SoL35D=1c*VtEj=8DV9muq zcqaORYz3dnoOk{CB}dHWq@cV&8B-dC)OF2DJXHs*PvfKS13S5?KC+-QLF?k%Hb{3{ zgJgkz_=AqLKA}@d1_NxH@00PM3^z+D;0{BK60%lBdMI~}jS!H|2OrzQEr?eWBC=WB@iZkq z1YsI$nVD^&tgQ)ljSx);SRmm6nLrt^Zw++Dl?!}Hap`%yQqPY=I? zu>$rVSnR%?)!5Ep1^aCOXZ{rCJ&Z}JI3fiQ^l0_N24bdwrN}WGV$FVgECeLn@Po_>x2ydxe%hJCVH;}?^m;g1l)Cju2_aE>^b}ZzB)tJJ=jduA@3bt#A@98H2SbbBMjhS1Mja=q z!Ef~qBCLv@?Oa6R6?g-R1RgewP>h}ImoI&$5y$xU-+XEJ@DpItF@sV6FUX9_eefBh z=kn_9=;&v7*A2o=;NXYH1P+HRQynm%+G}liAa)|jcU3o1qhO}BHLS??XC7L%(COC7 z#a|87^X4ZwvjE_H>B!(VL1N4^up;NDR{gtO>;<57{31 z5kJC{88end8c}MBuk_f5@>&}X;nXToz|IRne)dQiSknT%9%ausk5bLC2KDMy!_%PP zQ34>{QtGXGVxsB>oa1$CE_6G_=i>^i`6zDceh}-xU@849)niPqwfK6b zw8YI1o#|)lG|a+hwJjDHt)c&xM(BZW-ZUk`C;T36Mjqj3s^ghf6$s`+`(v!e<}ns( zABCZb(2yc(SHEt`*LN+tp55{o{GBf}0+1Gx2V+~^thfNJB^IWMP~2k!bzf_|j6Myp zQ1C6qS;TyC7x$rGC9pMy|Cra|w%50K`+n|i8+zOsS>Vg_1`P5|XR_M*^ z#Rd6~{@lP!y;Guu8=2kTP^^2m)_&NPNFPWf%%jvB0HmFQ57~;S2ZSq2q$pD4u^^ji z&>J8l*PO+ud_!z;F=R)r^>_lfaP3AQBPMCHReY8HiTAB?Yg5~Xz0LdJV=qEBS0^&& zkua5=sPpn9mvW>a8nOq&w=6PtWw(2u_o}#hq&!yTAVR1&Tb3VGj;*hcwK_z)FBhHo z-a&2AD~YoA5m=zXV_L_yO?jw5C1B>BH5}QuL@r}c&yS^grC8YiO1%J6`wc?87%}qH z+gtg;)S@D~rB#O1ex_;ly`rT#dK%HqQ`E~FdYff=n-?L#w^iCE_Igvrq}X*@J7B(> zsvX(6VvRf=G$TC4u)*z#=yb$G2thQYieW#qe%;39&o}i9RTk!axRi z*4&9cj;de3zw%je)b@Odg?B=M0!>C7f~zAnoG=3r{V+2fShSD+e~evsAk_c=w_TgcE-F?_{}gKKyk7CtMXlYRy>GRwPBHOiBl;=` z@aSmX`R38l_tT?8ovh|bkm(&?Ov?Uj28rwbMsE3Ij}%@?RplVTIMK{%GjW^+Yn-Do zlEk1VP?`l%k`eRQcBCZM>@0jMc}`l(8fS6`!f`t8;pe=CW#)RR>Rsq&M%fDPgE~z> zPQlWN^BU^e{V$BKAym;vond+S;`DU=tLFep-|F$&hCz`KY0?N4QWIK!Tag!# zq=##6q*vE0AkQU;QUWoTI~KD!yP+&THbxb^FwqcK=e%(%GxC`XXT_EN$-7voX3fxd zsittEnQQ)!M#!|(R)3Wmm;*ThF<>A+_iGnK=0_KV5}p{FD#SIEQLU+bhxmY4J$G$* z+tCEV9V+M}Y~5q1f1uQ40hF3nln;(4n;$R(xjROTySX9}#;rfd`bO~;8KFHTbXtET zfzhH*28!#ieM&uDi9QuSW7ivH7E>^o(v3OLIssse<{>a9ldXy~NA$*h#P$omD~D(a z3*Tr74y@pJ(Rpl<+rN_%Bt5nUXwF|LuLA)<%ht4}t24l&K6(6}*l~+nJRYnMi1^+I zR)HRNG-;Sk=;!`MMrDM;IJp&5LqnGi@e%T%X1IyA?R2{5{5i(N_PO}WoP#$;|I7fp zU~l;w3`OjDxc&rV0QCAOlyflQoFn_;MlvVS`@HB+@6B$zcyX1%;JX5C^S@GO8Y}Za z$$X9c`P^X(q#nmA<@3ZC`e+tH6+Qm2lAimPhm*EwdR8@URAeD62Z zPocK%EO-uJ5+0y_LN;%b#(%A%uk$dkeRLm%A6{(i{;+dZ#i#UuKJsv$u=ZxL(YZ-m zzwgW!pucbam5M697ni?ja%R%3BF*&NF*~IH_a5>`+R3g@*dDU1CSz$Ey`f$&Kyxk@ zRFG80-ere-qO`nfxvJM{@Iiv zRXW0n35k4-ql_ue0%36SjZ?kL^LPv`hsf!-Q? zLj8MFgxXF$Tu1PFBF5ijWlRIYLX%eYdeIosKW>oT0I0`JLOmlPzOFV;o5_WCDK41sdsc@IC=r zEVzU7(9j1D_@1X4!>Ul}V#sH6u(jG9YaUJW_|J1p76xt9R7Zl(=}X?jCRF#kPq;=l z9`nv35K?T$s65}iFqciWm~z&7W%PiyL`Dkjk{pS&B|F;gP% z7(qURW&onN0h8jT=?UTBjVmtskz>Xj4w}j>Wtn#ycIPi&XecbCPixTo7ORc=3u4Nn ze7Y1AN_4cXhlFdU;%SOgDsV5}Bcfj*0~w?s`Q%4{&Ik~yc~~sQiZUuk0E6s2M%LP4OphhsQm3o%B?XT00k} zS+N=7=3>LeU+!eDd0xWi2{{fx;KiK*Ns3+Z)Hc@F-mg3^E0?W_kGbXFj^hWE!xT2= zJDbxfj+Pv8vF;_rPt*Fl3g%C4$~V&lKGrLjAOP+c^Od}UwN4^egxNhuu-uKT>7$fj zjI6;hS)_`vuM8DYkTIpn9qb~Vdc(I=&vHvA=u;)Dd$B@Z3BTNj2Ly*B@)gAfM}r_s zA5XoL8IR1X*73B8BrmsNStA`F){vWY=zPsRW=I{#S7_4u+4miix3yg$`Mf-oTksX!G>#;x^e50L z2@n%9P34pg!RnK8zwox4EkxE5B)Z@6hYeqDJz~|_=6>Q+2fYpJ>g*&#-koI z3IA(M&SHDIAUAFESU!@-|2KKa_OUvEnE=Q`bh)0s%E3yJm47#x8P3Tp@e^qy(NtW= z(zzO{a{!BwNV~>$ds*I~VO~kz6k36g5Y-1Jr@);XR5^-RW$|}%`8yrar;!YH<3rXr z50Ut_>pB5yLZo2E?Oe#PCq_k8r{Y?}o~p=qSo_KNC;_%TGM$@L{HiNdA%rH&K2Kh_ zv+)*Vz*L3T)%` zf+H#c1}o|iY39c0SJDjGWfge(i|Ankkwd_Y3RW8eY{I$njFxYnUgr7-M-ae#GPpxk z;yjzVe&;5D>Qg~30JW$iX$h9yvar6vHN_Aews zr0E-IR6^s!-yj)463l8cLG>%23%ZBjDT;)ZtQc4P$o#b8&F9g8bT|+XxpyDJodR!y;1Ci;%ag8Yt@k;K$rO8+* z^G2go!7m9;rrJXZJorgxHI!S9K{gf($Q@2rZ5uda`7T$~1fMZ8CVpQ|#~>xH9T#oP zCglGR91WLcguW@!`SQEqC_WXmUGligb*j^cBi01DE0~p)N4fq&ik+b!g=1UwUp zfqid0ElCt`m*@`TI#dE@dW2e@9SE<8FJLNW_0|i3TXjUAt=(h2(XxJx4`-v zm71>vg=qa0T$f%vGC&dc;IXy*)>+n2yHHXE7QFY{r*r=!7`v-{gpCP5yYyEqMii|y zpy;v9G4yvV#!e67c-sUXqI3D7iX*n$hSB@pCb7WP+^TesQhmna*sY7YJ+5X*TV@)D zvjarcNyhi;qBQsG6Na9c`~k!?l*6j}3ul(bqI(pxowpR6dqz*5lEA8O>Re}Yl1S^$ z%;qmH9ty^_D6vDq_~x;@K&KZyw0a;5c^Y!fo{pr(?fmbukY-I$bC}NQp=FN9K56Aq ztrc!5?meobhGZOfu#HQ+As)@-{&}%pUD5gC5PCwd@bq-gb2@5F9R6;EMnH4zNU*5P zm>eGOmyAeRS5}WTov1&9@qJWVX`vI{g_R^&{p)xU;gJhzXTa^|;5jD7Hl*l!oqK~s zyjn|xEA_llZfo0ww zaZ#>3)Nk{J5~Uc@I;99M0J5Jx4h!+Ux121c84*2|u8E#yfSt9rI39;FSuRmdaxqHL zIa(xm;ZfAu6zZK*w+YBz<-NRX0tAtwgv>F{tR}PEi2!_O+=!u?{IrZym6=@%AIWN) zDz04xLMb-^vQPUXj$KbKk3S9 zj+R(=ocl07mG0st3QjS&R4+jQFD7ILuq_H73(rtnfl3d-_wh9fXKvGLp1#UIbGf9u z=2{m0+uy2WwRmTPldm|XEp(&a6+5=NZo{9y=si*oN|7AtCLr@A%FB?{u~3+d^GX)e zn5r?|00amMA6#SpUL~J5x$4=%XT+{#84oyoxYahZLdK;V$cKUS0{{=-Zf0^Pd!s(j z<=?xxkLiTxB?t;7uD`wDY;LyF{J!U_Y*XilY;%#X#_@-2Qwg@0W$$R&?y#@7H@ilG z_X}^|W%E04|H@lv+wJ?WTaDIK#t-Q>Us|EB7sF$&7dI{wZmp*O%rcKf0(vLZ)47k* zan0|es1G1)UM+zw0*Z z|Ilr+-&DTpQIVPMb4UYq1My7*74uH@0USXohyJRqJK!zUf!IA4d4k{`Az#}i&YIua zC9?!H6V}+j%3NHp)?*_k}16v<` zYpS5*J8Evsh&RRVz;i-E>`Jvw3J9@jGwfd#S9C zJWdQ|HjsoIc_4NNk?A)OyDD9 zW>J7Um>2@p49d3Op+hE z2}pbiEcn!u*?AOHx8gfg?vj4#%J_S+Y*>>m*uYWIrE4(3^7mqyf1VmeWHXhNVRNZ4 zLLl9__?X^tOU`qJw-e%# z9*TG>?8@@5dbzS*m)v8!>wz4(bl}mO(#SZbOBB(f&prg?TuusCAhoyHZZHts+pZpr zw_Jxm00&y?vL@@rKY7G7fowz0?crId(C$OEUIrAM2BSQuVh|l8eQ&Usccj6+q2s+1 zTo)z1d-m6_z%=DY+a=6dU-xp~DtoFkcky3wdNU)UQ6H0}S+hitvvt1l>OiAqA&Na` zLQS*1B(O`6)^_-=47ts5uK%c+dBOr}?L_Ra|Gi|6UyL|e!@>p0!Sz0WU_ST=W#4nX zEQ9g|&xMNS*^i_5lc_kS|sx%m5Q}5jjvh>3u|r)I2}z z!}={Wk65xAUu^Z3>aB;==a-2gF{{ zpDrI3{DXvjX5^cy?%s2e;bz8@t~}CFe+kVNSy1Ku_sm@X$tg^_t4Yx+K`i9<%ql4Xif6UKOUEFg zKkaA$+X7TZWoHuO(qZZQ32tgYm>BRI87$)*RFJC^Su}c(3AVdMnRDeAC>_cKlkdNQ z2A`)7`a<3O@7OFVn8p_8$yW0Z6#FGudOx)oapI54nF!#6*aC%foTbY6AL=?RvH#XB z`?w|R?B9v~fJB7Oe!?2Q>G2yqCWkg#Q=D|ciVX_W)w*iuW&Y+6jp0%0WvxcxRh#C! zdrfP%Tqds2mt{vCLb0!TDCGzt!1PDQ$jl%JW2K)NU+h3DkM~2 zo0$jS=I+6%dEi3?0I+1l>@``6(q<``_AK5=VA)>OawKL~Kz%EY7a^z%subSuUCObulhZgAW4Z{&P^@_C6 z!H4~X+4u1^?qFRNvWM)|lP@qTXl}u}KxJCHN?V5W8aG{kZ9nqHuh8@O$ zVF$t#uk-Ukgnl`9or6dR?)lK@H#);}Pth@wOs2yjdR4uEOJzdJD=KZqskhH11|8fZ z@BI|-9zN+QYpNd5hrlYW&u-s2-Rhxztt&6%W>!%~aLpN92f9Z%ZNUD{G)TJcv)IS*&d*8r zPel7ooNI8?b$&-zFT$)ugTJ<#$yT79g>zg{{wl3hE!^XL^~IwW=`IA}myVrkWo=8j z2CRkVyA}hUav|lXGVB!{Oyac7A4dMAfHsWx8m#6^C)#G-W11E2h^A=^BGZ=C0HE{Y z;>2953`WL$x2ey1y7?o#uJPx-_n7~GNSlqZ&6?1I*3s`jAnkEZjeBr)~~hEDSV zp1=t>SjqBBh^L%AUQ0$x8P_r&J}_tJH_ftMzTl0SKOAbbkDpP4)}2$pIo#~XYnAouSI`UOo?bi_~)%Wq<-OPmn4OUL?D#^+_r8L0kA zIV>cD&^-?uswCYg?mzY(WNC*Z<6I+)pZRuiHw@NkJ^uOBeP;CIq0Q*(%tqz|$+G_| zP>LB3T-#f}XyDgIGd<*emDE)@oof1s#^+!9%noYg?VO`$hZt%J84kGGBtQ!#s`$2@ zZv6WvzpxE?wR+#v<8q}wc!-k1Z7Dkv91@6q}P(~XECImuL0>! z59qB|_epbmQ2SzTrQo4}7T1Dpi>jwaF#4wQ7R4F%FK(^WFQ}|ZjeKhae~>P_2wY<- zL%dS`#sX6awuO4BJSopz^q4+HfaQr@44`_!qq!CPDUI#9CvV;Tx+R&)?1Y=o!+*FP z<->TIXKmt_v-LGN1bxEH1HV~m#pi%F0A#yjIy77tB22lcZt1Y(SL;N+ z1rS&ztU}I+jYM-y(z^*7=P<}?t2lP+S!raLl>=4eFVeeYNKgis&c`8-Q!uexWk2l{ zEIrTi(S}s112k)4&FudA5`bncpF#8Bv0kYJKCmC1F&x#bdn$KBcN$MsmcGHB#!@4T zuWr$IjlJ}()vWzX zt2r-8SF5e79A>SOmt&s&1R9fq1H%5qb(d|oW>Cc~;&v6;{FR5w=XU?3#=2Z9yXjv_ zjoMPqVq{*KrpW zz5BeB+a&m?Uo%Ak69*7QjEd$1h2;!yHK=Lp)T`aU&+YXWlpAO{r}r5!%&^!m>02xE zyStRi-{j|t>gMW{6pKK3%y?{g`S4|hcq2Hv-royJ?|)bJ-twXHE3b`i&D&l^M#49} zYf=dIB=by4l$^ZJ)gl86-W85Q|>=& zXu@r{h&9)guijs3Xfc@>J?)@T-GH?@AQ=Dj48fAYwESD~YI5eQL4hTga6mwb0(WP;w`ag7F_Sh-@DI%E}nA+ zoz8n%xlDe9O$somvFs)QY&hX^$}Mn+Ba>O}bC1i*nz=4}I}p7@%yhILeoXj{c&u;# zS4c8H3BRg-5=F*W@jH3PEysK!X0xWq{*b6D7cvUSnK|7Zt(vqGYk1$v{{!X@DFG>k z{euz)m=i{)c~{(fYWEjPn4`ijF8rCY%YUHU_MRm2jEaDMiTqDpfd3DD9t(n6`VyRu zgdM?gpcqxL$P&A26dMD(9>GbKRV41JaoAhrhCeI{>n)PhU6)NxX%6o``PD~m62~9* z&9r|5sD?)YA35X&dvd^?km(Pgd#oMnQlnSfZ=mdrvli2i+k~ZmG#ChPO-+4Ln-Qj2 zQW4E5R26Lb!IK)!q5;$3L)#L0j$An~k_!n3ERneB=!bH`@Q?kXkRNN!SoW(kD-?PT8ZN@>`*|DQa2F?ujptQzOH9W!`TBi%gqEH)nv$+Sg(R8 zvhu|${-8n~p?%Fe!7P$f%@l7^E&^|n<}vpame=xcP!!n}SR51Z;I@f5!tWEmAWYd$ zU|Gz@Ps^*qoysA28orWNshzkaWBJMpO|A*(7=^EBjZ#Cz3IZ#YV>ctG)RqSbYF3@mA!?&u%jgx|UK)yBEw-D#@-ro&wGtw3M;a zsH>4p`Pyn)Y_9l6)DAKAJnKZsQAAl-GGCn5Z&PAhydiJ;%M264QL(xJx$`>H>niPH z0Uz`dX)`qFe;ZtKcTvwn?pe87y1nFwnX73fgmND)l1>OyFhR_HaU>t}#b~_prFd zU$|i%qIFLzUuae)>63UJjA!}`jAv3k&%IK6&v)V%2mijh<74y>Ef_t1_|}m1)pC~y zS|K-C4$J24mAN5N?aW>fX@}wkd)|&cen1%DyFXBfhXL06j%}-yr%E{bCh3+6ebzKv zdAjTws;d_Wi|+?&L|~DH+#$#ML>BH>2J9J;1ux#&RDn0;{n8~=_>xH?@#Kc1(nC(S zs>y%@9O&sw`gK?<2%M z`#v>=*csr$zlqX!o)Yv`XN(!AfxGzBhCdfxIB7?$cNI{ZMkdachd)U=29cg>j~IR` z)~>FoES|wdz0YKg`s{G=zSIbi$9*yz)8$qKGy#K(pQu)JW?-*PGBkA$ zZYdZI@3y*VUQ}^?Jhc1U>?XUJ+;&ct=t}D()4EVq3a;gaYp2N1VW&5J9x3R2plDh| zYZ~4|l@&)Y6k_@GU8*dx99AmuDZf_rp=El2uZNLZx`yHB^X+()#|eclMgk4oHsWW+z$yE? zE@TTA69$jdpM%mJf2MNmr?cTj(v$qn&nsK1OJ#P(E@>8=iuaU+ys)3WQ|OnCl{9pQ zb+4z}=ROnb;Ge5JVrmaxZqZA=BgH{A1-o<1{~mCwn?5B$=2?2rV$zPKW3-qD#e@Wp zT<|*y7#U`Zo$^~Rl-k9*9bF#*=~<1Rbe-_lQf5k~&7yw(wxj=v2w+zDMlcj)tFNxc zs>k@ltnjn73L>8?=>q(0Lw*hZRJ*tydlWJ?*&xWEKzxq}O|@r-8vNpp=3CM4D-=$- z=g-nczHR`GwnK_{!w4$_u5+JT4&#uk3& zuy3#1rPsNvck@X<3fGX^p6#&PrQw4us(%;(@yceHIf;(J284gA;&^SQ}C|k4v}2$B(H1zjS!kFPQ-5(aOJ%54K#6rvfrFqL&s#Cy46|Ok(Uo5>^DyapiKgn zaw+oIJ{J4JRP-ONNDdtYH_VW7a*9{5S^)6sKd6U6U$p?98$_97Y_YupvAtMx!hye; z6FOI`h3JG@L}p+{Q5~;(@tL4Z*B`q9q?{?X<(cPC(8+>>`;$g>O?+aZJ?S6~W!Yba z02IU9ea08S8I|wGmq#b>90&mzf!uF{w38mNWN;+<-a~O!+JMP&J{8^{-7XqFK(+Bx z-9LXiJQ=Y;r=NF$Y1EPV!X_{t>iJm?Q2&SZt&><=*SyiH)Y>}kkqhEaDe-;}aR zev3}%)*STaf%xq_C-yQ-A7*04tjYAd%ASuLWm zG5MnCkC@DN*VdkPI7s(=YdsK?TMHOq9pbuje1(%VfR5-sWP;J6}v(+jt0W?r>wzP?0?NwUW7_UH=O)}!l zHC58*N^Ok3`yu%QUUI}W6-Thvgw5i0*XK!EhNVws;pWY|#`;VNOyUFqU-4o-cnTOJ zN%@{qD-M_=*N5bZ`DuuBX=(aRoT2v&vPmzwCqp9vJ0C(9LWpMwzD$8-H{rwzC@Xg< zpBXx%NrM`WsLUCt?oT^3UMKYDcpaZu6VsKcJ+9fvUwr+KhW2FwzW&$hqWIH4dnxvg zW|;Elg;cvAf_lBTfW#y*pPd5sw>u+jlcY>Et0@DTO?4mHORpT@b>TX4sd-{ zzBn$YcgJv|^e12Joj_gHP|SS=z@o71syKyh^jQh);Ka3>GDYzVOGR~bWhj_ZwkB2i zV#^OGjBRw2vVgRT(p3MM3-POiNt{E#)K|JSU8C)FSKz;Y6ddz>4V)6>gDTray$5UV zeCl;aq&;#<@%L)_*y!fm{jhYuE*n!V$J_g<2L0aGI#i6T*vzFIp14>J%Wc7*Bb4t z`)Uj_1M%-Hg?m2+e3EcrTULG3952atmIvxTTG#_GgX8;-a+MXxA_45r3Xp~V=%=&_ z*0~oi`;YD}X0Vn{CfLv(Pr-VgPl4FQu7Dw*ig8m)r&_y zvbjV{TUHDU4)10Zlb&kix|f0j#7M#`HZPM{L#;wPR9I|FaDbR z!3U&#%|zdQMR{ft#pFbWpo^kWlDsQ$sfc(zz?6R*k;t%on;a`ScFUa4OGv0?yG%Ef zBlo1Ao-jt~!2Yrp@aZlfS5qFFC6g@f!8TIdtDS!ic@-H)Yfq5T0T{eLgtt%9R{jo7 z9gtRRLZdyZk)F5$qoSgXwg-9>5dnz}3fZEUqthoRD}Et6I2GVm#GXVJ4IV77#jC_N zbVjER0nV9~nI41BZk+Q7FpGG}0UG=0;7ta|111~zzYohDExME3KP}cPHC}U@qyM~) z3QOqGxJW!Lo}1q(=}` zBUDdSuN z->8Tu8K>OrJDM4QQeTdYU2mx4$ge?~Tp>P2mZ@ubQ(k49*6!-npH9M0UNaK!-SzAW zGnv;dmdV=F2WFapkN##M%srhD3J01f6E;yqcUreDaEU&z2j$nxTH_xQL`9ZkZi zW@r%V6GH&|+MoHrnZGm!&pP9Zk2!p~?^UxkoJWJ*_V0ruUWA<)y=vQ1)_Gfn63dsJ z_WW!ovK@~CP$9FW z|2j4z&0MyM(96!9)ZR3e)Vw&UN+P9&tW(QLvl>O$$ zGUBujjV;CoXIR+?>{I(mkwM){a>uDfElqbpBmlwTvDd?!xG3N$TA1j+?;Jem!hG(4 z;9x10STn5gRPIyu>ar!CG!Mb|IYaO`7iE>0&$dyr^@>5$+0W9|nSoL{ZByY6<(u}T zev^+kMPGvNh{wJuvAv>^;|PEGN4bNfL3kfYU$_(mQLB@SnjQn-vJ`4L|wd3wQGr8mmrkvInKByYfo_h z%K^@hw);+~TY*FT->e#>zgjh57Bd@kTC9gLi_(@7OS|-kYUX)VWrN66BvpV)Eb@M*I!MEO@zB4_QY>FgjmUr9^crPp>cs@T^gS;`K1^V^G~Cx- zj>=Z4%Pv&>1(bOm5HD)6KeK-3)Ucu*f#-ulJf8UTRAcw zz`Euwm6zgRDo@>*nvzVb(Zd+b$q+8eLN=S>TDfHbG^=ofnu`zK5aIV0d`oCwU;6Vr zd-v1{GUPV1Etuv%V)24+YD=AZzRE4F9jFgZmKY_$5xn$ILY`@jc6ogsY>rJ($1>Bu z2jWWTB2PLAbWzdLo#aG6p$m z2z|)*{$)bM_Uv&1N3ihr--Ga{Y80`ypg^8x^*8}AuD$VUzl3E3ial#WO*t!}qFitS zTqDiUo#5!9%RK2R(y+>yFZRXZ{^}N*+#9or0dpIOJzcb&-t}JUoKLRD$Rh)GBJkQ$ zUpu1am&iX>KXmMX+@0k-d%Z~N)2GdMbK(^EO+z$1T)T!)1C0hwGK&(fj0X3$I2sXa zb`lpTVK)h1a(*7j zB{{)#8rM^a;7hkMqnG#|8Lv4)zToC$+3{pw3Cp~GUdhK2cj%7nKV7_emHoKbmu*bN zgm+z4wV7FTU1XvNTm{@OT_VnwD{jT#x-^={-p@W?gIQgISFEpiFYOxiA@5NuHxkdQ zZnf`U%c+PVLg0hr%lNh-VA8u|{-)g}F}6rxu9=$)d#8I=MWb_W2 zpB~|b!}|D{=>4f(o(C;;w^kh|9gzB07o{}uO)d_z4yXywL1&uU z@_TP=3#J=%P=g2^RV~i!a|)=x7S!S7O~3ozYQB$3+9kKmj53R*<&|v1ppfWRhpXtSHMuxt1+k-S)h!jk=_43~L`XG#&1y9&|)uT5$8=!kS@2q2M-^;6%ZiAeF@2s0mg9GL z(dS)tv0fWq1#Se#Nx3AK*d|kK%_a#J@iJ$*5TP7(_Od26^#`tX?+-sM*B5#Il(;eG$%n*NBN8#sI69Mrto!=7?VFFPW@&43g7 zB-8laN1Ai;5Jbducleij7ALqxF^Bqx8(|HE_-!K>%ID0pvKjciRc45bWdrkewX$=G zI}Ny@!nA8M`C1*m&Z14|7jA6mqTMyFd!4*!O1fa=X*Q=xv-aJQ(PISHF}ZEw=M)1U zwUdm_VlP$47-zA2Zhj}WNS$HF)PKgfWdKylCZ0;#kaAhswUkXza*nim{iBTVaBgE4 zB6u@|vwAhNSu`=rY#;iGw|wE9!E>Ba)o`8O%h)p@(}6BYiO|O(?eOihtYd>zABSLJ z+i3B_&ZqES+)j7O54szGnKx!4HWkA0MN zFg)ORV!QnWTgaebRhNj@;H$juc2eU-0UDH>j3I=8@ts)fX=HhK>1ZN^K`Ie=mEJ4?&z;df73^8JY^zL!DO= zp_CVy)CYy@D39#1ry8)D?CNC~x?0CDeo4pL@xCnkM&@ky|TQ!DWM*dZfxqKPhj0g_XMEn^NDKK za~yZua8~udNT`rkmRy+ zm$a|Cmwiq{InU815@F}ssO;rLD2X5DMNe{}YO8S82z1xH97U-UjQsxUIVfAR$IGv; z`2v?+=f;+&GgbpaWMsQlTxS$=ne+FeM+~j$XQzC-0d%h4@A0KH9t;*}DY5j?j^n6UK`(=;$u7v?dw^Z2;vGVpM^)e<`` z#DycL*v25ly^A`Vv&v+9Qkrl(@zo~_o1Cci!PgQ=c25|uc;<+1_W99$dAz8DUQ^P` z8(s@r)LC9rvdS}_!F-IZ=VwIlN7e`n><|iX_JGB&Z$6B*3#B1Q*y;f{h!Mj4IK+=` zFQ41Y^z%BWC5ASqwi@{M(9Qur_6d5>hiPETJO}MfH5Z5W`B|VZ-fO3P$-`%x|ON-DQ_+6~~Taa9(W2d#9692Z5e>9+`) zqFIJg1HuxAQp8sL>|7YZ)a>h`M5q|FXLE;_!ZulKU& zWkL`33Pz84(u{rkxPiHB-K3DH6FgVRXCn}Djj&Kl*?mEkm&I$rxFl)Mt()=-&sCw# z(pHb8$?)f2uOICfmdGLG861{al{&$C&(s9CufXROd??tgK7D+%%ueoU>EE<6)c$69 zI2=jqc#W1GG%}qSdv0x-o*pzeE!q|PzJ0a6j1pzvBCF(&T+Y83!D{u1V<#UN7O4VMv!%2PwcZZU_10b$obqq)+^R90hrUW4gLPX6>}wO9l@}_6*s!ccCEc!w4|Y^C=fw8=in<-khC3$ zu&H%qbK8V1GflC5oF(AC*KuRMYjZMuI#D=t-*jPYn2LDB?@Y2xsImvVkA!}^JLF9A znw$8nx6z{z!_1e z7N+Zm&KXW5ZTBFi&A$F?*9~beB`Thx3Ow-WEA?iV37lZSBP5g>&&Yy=r8=6sz`-Pt zFHBYU$rFWh948-%@^;}`0XxPQAEkLa;ZnTvW#Fp&LbyFPVOilje5sn;DVny#Cni`Q zjmlu}=ZeB{%t-4K@u1_=X^!UB$D6LK#8EL@KKfuR4q8v_R@^#o`DlB(Zii$oObPf= zlG<-Fpv`Y(0uN)R>$cVEd)mP}3sFmGG?Jx-Qa7FCWI{1Op1Vwf+kM1#4*~l?&LV+pHYhBbW9bIM7PO zHs6Bi5EXn zxWrhzY;A};a+?;ofMk4L-K)VS#Eib)w^u8kBH>+$%){m8+kyhrYobc4Z@CsAeGF@& z3Ol9T3y@LCCNRmwwzLy9O`>qrlLm#@9`ye|0B@syTK(QR}H;!*z&yj8fa zeclX3l?bYy9v61-^lrGcv@Fgmv<0M22`LEmek$NBjyD>VPPgQxy~f^+I6N_hHw&6p zBdQE2Xp}Dyhgx1^;{|K~#$}-`>>hrnt6-rY*b+V8h2>pZjPvPA94?w*Q`^W%_aqW> z)tHwEq^#dg`1*BjttNZg`U|_pn~Ww6PYh`{4U$Avl70PIBHTr`5h41b=o5@}2^4E8 zWwnpCmu}8?jZKD|jN{d$Po%>@%H9q+;uZYI(@AP7;?+VCn<`A(nN42ttBDiomXGF> zhhf-^WKmHJouHiE0we%bh#6FpbzC3t*+3*@O7tm7UnP)3xh8C4^B>_7De>o?q;S3l zdG)OyJ9li6R*5_WiQQqvl^4bqRc1xsU@X^?#{KAZ^a`uLW)-{w4_)2{eM>^S?cT%h z1N5s}#<~2)U`tH;P`CZN`aG_IGUV57P-hy49bK5?p=Wg*30&_^CV}@NrLTb%#kbux zRQl1{w83`oGsP+9DK_ax_S4D0K`3xA80-cMZ13M$Xfm_6r4%n+Q3%8EVN$(q_O%uT zD^MOf=OvdYWtjxRNtctU_N>3CiVGF_=swuDJYn$OEssHgC1ap#m0Ar$w zeK*|JigT*NO`2Qityi6^_#?&r2zd8VjEMeNuu`EbqW4EMXc1hI<{oMV_SchW&qopn zk&z2XUY)&Xc|eA?YK`bE0v53j3$HsonU)^=V8)QFaS4S7i|tjV8nl2dWVnUGfP-lE zo;|-B(Qpgh+0=<=dUys~JfXn8+E?kVv>Dq1VF02}psT|4NH~(D51F}dz0fCk3hne< zjAl);*q+=I_0W;2@`_k8%@Y%H;6adDC6=i!c{PpciuCj_^EQ5XLfK_8pvjZ6Cnr;E zs{QI-Ti0q&j=A_$9fFcszc3~MScPv9?GZ}%JL(MefUS+r&hXtz;^{lneGF(P#dR~c5mCGXa!reUK}a~&bY;XhYd)* z=#ZrWVzjMOIbs4UKpwck(dkzE3cJ51x6ZX@FeHMur$sy4)-MPyecfKW7e<03<+ppP zO2mL&p6o0Mdb^+4JE73$ywOC`UZAqkJEAZ@ebMC;$qyQc(5|-%pvRf(BlPI3Lc!Uy z?(<`MjKou3x5xT|JzU1*qc__Mthc}d)O*7x%&oT3OzOkJ4dj7ncKeBGze@0><#9}x zhWE7dd5pLBwf6V8m`?Bg?)}m)$}f?xGNdkfm5qBaHf)jEZ-A=i8%P*2J9{0wxO>YO zbFuxV=FC3ZFPOcp`9AMZBx1j=|ML9R`RIfvp-ai$yL$!zY=SNj)EvwmoMxd6<-@fb zttnCSnbcrT!pIP@k#qN=zhe@ZFRx6!y#l;2tH`BM17roeZEwjwD=^;BU`t$SUvPiz z^I#79eiAa%b*6&b)z+eG(;M9k=Bq(Cu8A9X*JHNkroHQSmo;#czl57h>S7!)-QHi; zXZtupYdwa)j;GvxJ(zKdI_`9c91MnUTb(bscQ*$4QC?JVpRR2qIN=VWT_yTaZOd)_ zX>Zhe>;8_D=#uB&`Yx*C#HlDqW3*meWOXD#P;~wKoRpo7XHCiVU$#fl==~`ggSC+l zvzjk$n&3&nrddld8<#yX+-?T`&pr>+U_OzrtqLaBKf){qB+Me+zL0wE1u^XDVJei9 zF-wcYyWz$S0c?W?NqbLZ$Afjf#=5D_eaT?H`7+jWBgwHK9e%nhTq_&yc4B#AziXFT zBr0_y$Tk5Xz9kj3KlW^#L!BT!-JQ}Li&IgG^I$TO4W7Hn4f|g{7ZCS1G@w?|#Bu|08ok6#qWCQ6hRS)(H47^YX*M_&J#~1P5eego5fDO3CKMP8VeSG$q zyrJ&i^)FD~a4zodmpa!tiiIcZeY%kPYly*eGy8d@f%qfLGMKwzO~MwtfM9tOcgDf1G0h33u;Vd zUfpI*{uV0(m#AbZ`Gh?pFDW&p=)S@$vgU-hvZ5t&~`GKDW|)>K!IS#6E8#p7kUm-O-VnxP8_;|C``E4QDvNf1|3 z-hK#fZ$P{5f1Yj?_rgr~E&A-wBg*m{R!hMO%q7X?GdKx5nIjA4(yY|hy6O)v>(jue zN|t;3TVMi-SUW;8;VIw(%4668$&vW9|yM0%96!QsHmu*hX=xnb#7)kwX!aM6k zj+rY)?fN>OmEdcMUB^!boDDQMA!z^LvRYqyA2Ful{o=mU&S( z_F4iY#+AR1ntgA+t;#kIu`-IPZ+x^qG@&h=u$8#>bT?#g-K>PMsDE&DJy5yI)Kisr zYmmDNy*>lKIt%Gc{y0w$wzQkFybr!TkmNo&;n7Bp&yyeyDU3+73#QP^Uf*cR6q=Qv zZqW1Id6aDKW|r0q=C1D25N#JIW~+ZNy?85uVA@-3zSBTVFEkX=43m?KB_mx_vvtp# z*h%a5oZc4)W(}WyG<~@Uk7F#Xgv(uBCTZoRV11a__P(97^L{`5MwapeBG@N`XR3^# zxEDGbbU4~9WdBFgcL!4S|Nk3B@kS*Sp%N-9WUq?IE;Fv}BJ&#A-HQsz-kZ0w_r9)i zU70s4+vVC^S=YW7*Z3Xp&-eG=8LxGo=lOW<*Ey3|SU9Yw?KO^)_a{Hr;iEZ}8kI!H z!o|?U&nbp=H#3J4`;!>b&83~4eaHK5b4v{+PO~Lws?5&Fn|#;O`q&m(?@e6dG|X1W z7TKCpINv7?n#0a~pRKtB>6Kxcl$uVx2Uki-=XC*V6{{D`?zc`f1NJ@72G+LEk4~ri zwX-WKU`I!ToG|u_wu_PDg7fHA^OFFXvp?3J2RQpxK^f{e4^HZ4cPlr3`GOLBmaM0;kflCrH4ztry5(GLL|tl{B7l0f#GSfg__EgA+He|>Fj|93MTRA2O% zED{Y5CpP9>&JWX$>$8}gc0xoDVwnT8K8E7Ee6UR^-bI0)PXn;d@Q^JI(F?Z6$JHir z!o8Jf&K$Jct33exuj1aRB)$$ky1;)mS4M)iK@ORG|oJFt3)*Z~R3 zIC!zHU6Erqd&;oDAM@JG1hcbY`pif_^6i^JW}>jVnHx4F{Bwcqeb%7cP{d3KT76}M z)HM9Y@>j&GJsnRGN0GDWjr8pE)S{6GLO!Zk%h2V{@fP`#kwI&_il@-yWV?LZT>S@z z<@u6mT#t$Z{(TlG6tkwhm zI=1|@WTB*v=D<&Hh+ne__dY_9RSI=))Qzzc*bW>UyLp&EyrWn7`+Fg0`Q%0GX^*Fe)Bsv7jVJX3NBzv@U?gAY^w$+my6rl0e4)C zB{MCX#{|@7`6nU9Jq7=)%(#2>_V+B3xBBrA8&_0VicPfJZ*$Y?4??$PyVF``a~Ot7 zYj>&E8nnu0Ds2;#W&KmMrOLblz`CMpyp-Ru6&c_kz&BGVE5HoW7eVS?hDO7GgOuSW zg^>FbALL)Jg&eR577Xq0B69ebWrmI#~ zS~GreDmPj=Cc~UHm%B{kPVSwE7iWcuF6sZm_mGLe)lzbMh|9igYp%U5G02x*f^cK~ zUawFPepx4IW+Ca3p;I4FtHVikKB49Y&W)C%jni;y)!FrZ|H125)|cNpuNe}vLn*bV z{i|j)iaFE08<-mPKZkGgCwirCxbn%zLXp^R`ya&jcA+4**n|QuBJZ0xE&9K% zY$rjKsxT3mB@;V-ceSoHTccc8zN_3Z!C^s7HvF^%>&*g>!Yi$05luDEY}$$=X6fO# zXfUD!N#;+UZ*IzQdpzDOpWv5b%R#i4De2@bD*N8t?7ZhGuQOc!*2?rd7V8*XJ=OdL z?G=1$ZH10_mviT*o%P%`~*uCeOVi^f-O|J^~B25?X8M7>10L^hl%)8aRn1$PT#yGL+r4p zk;IO;=;Xb!*7_Gn?FNRX^7mtYQ4U=j)%}bY>@IZ8G+G?3!=v5ZlNgV&NhQ1v>~2KqL`Lorr?+f1y^J4)hM}9MW$EE zS%ip{m@%b_JzRgrSl!AP&g|m3gx;GI;UhtM2yk_H7AI zf>xR|qYQ2J^5{mr*Lqo2#FPqNOzDg6wqv$MHg@@0EH46mNl zCRJ*+h{ZuTT<+!pyL*@hQ=PUf^;U6jWoHZF_^UBT=Ee!wpa?CW#L zNQ4!&7fon*+eLyO$%(rhRs+-J&0S>T@B^%JWd+shpOP~CX2!Kz4ig4i*j&6fT-Vu) zSjLsqrm>$5Lv^>83Z}jpnOVXL!PEt_hVsr<^zShDgn@?@_g*iPi#rk6PqnkNay98T zd}un3c82!SYqeB-ngX-Y!4Cyw7+=S1f##&|PTAHYZGZtPqHCn!|E6l%GHRmLWaj+- zU7G6qZsz5>u0OSButtD#rj|vn3eW)m{VmJ%OWy!v1UxnjfZNcq8XkGe)cy)Z=|get zd^$vCDyF@Ns6W^!m`V>95+(hVKCFL>R-?p^07MRtPBkeMDP1nSej zso3@LR}b)Wr{)yOEz)c=E_{^j&%V6dR@cVFC*8;C(mz{=F5HbKb>S?2$N;Q7nCtLM zKZNY(?1DUen$Slb>*W+1@~$FL9M1e^le>Ihjqq$;47)r|A>80M8BQc5qhj7wOivZU z^+lr5GnOfo5q`(7f2ny)^_P zko{9418*%md?C@~wmn1n$uE%rufwB}G+x%PE0;#tNaOM?Gu_;03n#5B*Rp2~s^ zy|cXt1QY5bDmn{&<}7zxWSS9SxO!c_MU4&X_b{mI+;?Gww5Y4Kqi<;uI{TUzuMcTmn$YCCJtvG($VGn@fP0D` zA(wcUIHsy_io3J7776vwo}HZ$`8Zhi39KmJQU$?}_@6&BNA_Zxl^-l0GGvqwE)k-a z{{y|a(L}o$U8-j7QwX*Xli>j-vcNraQ3c+` z3gAWiSVZ0Fz~;?)r=9`{f-}@l`=iX6_xq<;otoPUfY+O@cLPBAH~E%=P?ny7yI#5h zLD~TN#h*|r2}bn31lkWq6WZOjPrjFGS9q_U(~k6K!WsOEGF>hW0g#}!fHd1E|{}`N^vt+ixqL>BHZv*4+_cw9#!ggDVkenLu79J-AIVz6*N`7*R#rsfZ0OGAv|hA(zpIH^GZ6_D>{>N`c6q{`Lr;INen>f z9CH17VB|um^Pob z&&>osk6U;CoMRu~w?G_)424Zt;>MlR^~zp&JH~k143QH!s(CQZRX+h!v=&Xr4Zm5U zn)F@|PUUOf1^Utm?p>L7uO?^t0hP}Hix2v`1 zWIlq#J1=ohZXQ;)lD=`q;_-yGc2puP0Q^?5u+-0{ms1PdsSLIFA>8#aH@}iA_c|sj(f}nbitkw*Nrg zc)%KS_%h7d0c+S;nxfl5@9{9s{H`qIwXe_LK8>G}=&)X1w?mUlW6{>VJ3Ez~sZ(`f zdyO(#kX;L-?B!R?9oK8;rN(PCI~Cc!c5Kh6UiBN-BTZQL_#=l-^_%~h$20X}5Q>}p zet1G{rYdul#NBOB3JCB;wf5#3{sARA@cw|rTvxIclTZW0n88vy#PZkD^P%|Cn%#aw z9UY4~!fkkFtK2;;^P?cuDwK+Ce_?~?Cm8NghRcTWO9rr6IA%hpSud)UYqe*;hR{pY zvsG|Z9dxUkacPU47RAeVEG~4Aiix$1p}GWr2TYjvvWQ%R{HCjM^Qgo?S>Vk1+JU(U zE8ghZES>l5r2D>A7Oi#K8=}2{fopkk{lqY@yfyEtNu4YbIz99wY@n z+k_bZk`DH2|9-RZkcapr+??a?9E^#=)O4V1mx^)bQsj8H+O|$i!o;wv%oKG+xB+nD zePGAYr^H)L6+T6G?d!ubN$LJ*jzeCB?Kk-$%5e1xas*u4iH77U$eTY}4$5YXIZd;8 zSR!`|&T}VM{yQ?V*lw}UD{tq3_Qs&5SI~>^Q0**uEDzkZe(P=>?~`}U)rS%P#@zm; z^AjXVx)*JnkZ>Pi|3!XQ>L6=bTW)7Yr-y=);0b$PMWx;yYL&xg(=f5|u9)n{o}$~l zz2V}}0)kF)NQoW1Zw7zMXb)eNcPv_-HmLv=`d+@2ucb8;0=FHa`mz?n;^gOrc!U0W z`!A?OfuXN0FM1Y5<8=22EaAkV;+N`RBRQF^+na-v+Pv@n^$*4z?mT{<^A5W^{(*&= zD5t68I*IY08aeV$dt}G`+`IX;$|-fjn$@k%er(v5^+%Ww0;IZV_)izxogd-7(|u)e zxsvGtAtEw}OFCN^gJ>@JzP>gC8`!3a+6XkUAZ z9qh&*ryu5k0)^yG#7vXNFsy*MMozpQ9zPrpf~F@Mti25|sr|aY^x}FA%Oda%!?{Os zWgCN13iQiPe*>Eio`R<$JGCYz8mm)u`vpCI?X@#)=XAd@o}YB=+M8M+(z#FYanc*u zSU-$^zbUocY*n@)RgWnjS6;6e$kHD8ypJw9anf>-iAe3+s)REx*U4o_D4~6pEc-qp zlQbF8-|;_JWmH7>|9-gue(pmYoY~DH`68WaW3sr3Gqkb>g;nt5ZUa9KfwDgQIN*JxC%SA-X@bgrXzHwgi6FK7bgL|%o zsdpk@pHGP;G_>xd8EP5SEj4Qey#L89B#Wm|Zuj7bq0jD727C)~OUTdVp!hVI=|y#& zhq$X1cDXC|B9=w$!g-B)?tJjY;YUsAwWUnToqmA;T|C$!rX;<;1BHmH=&F$z+Zna^ zvT~_h-EP`>L&X_i$M&-=={!(;kF}f0)7fEcc0TOnZv2r{5;~*QUOj+pNI=gtuZ}3X zzgk>*w6o#=pA-B*a77IofMCC)IZX71%_8ddA;ldHkE-fkJ;emv;^?BiA|^Dp+t>1U zQ|EQszM{eOKgk?hG2qq$08$hFQ;V+_J7C&*YJz|ZtO(zfncNNN}j zhuU4-9+umvXn@bw7-+kER-cJQ>kxD*1u@;{#Saf1_r+>aram`~3sxBM`Y`j2dMmXD zO)k!q8P*RlqWekZ(nW(mAxrD2Z)!}%WzQ&boBPkN<{n+TzxDyWPlU41QlC5>t9XyA zo;^>}H8!($X}9!@^OwSn_M3BhIbJuXc~}<`s>3=a@fjxB zeFy@CT<+^rt0jY)c4I?kk75j46IpT$v!Wi}$1T#89Ck<Pf|_78AP)^6|RAanrevnw2b6>UPmUCJjs znLs4-Ka8Z{(3_Qu%zw0u8yYxY-Bm_a`2Jz6rBp@<$*m|COJX%d(s!EQ?V?Kd0m95} zP;kxfGXF9Ad&rT#@{B@!jKY|8?KCpDj2}3eqcDEDD;kkl2CI(<+!$9ziQV9`Ah31- zeS&DL=v>wwTM4}a8p8JURK+tJ;KNsyQ4pU+Pu0a+aDu+ZUGjPVS+`C1FuEnWk=H zw>WJFla(jQ_*_Cugh!l{o#e!AC{5t?qaWoe?vg56`{4{<(;u* zPqD*l!E`$%vm;vHk2i@2h2p3J?O(g{4K!@?$(;K>e2QP_c4)N`adGvl?r`>)z1hQ zA>gX1*etv-mA=}IbCa!PP5@X&wOEQpI2}UicG$8cjcB`FV2+nPaN;O|=hc4SKxcn> z2)0E>CQd<<*WBjz=ve>~ZocWVZs>>1C<%b~ad76a93BbUHGt`TGCIB{ovo*RP#edb zj=wURT)=n+)3aD~_Co|>Y`C(V4=|btvSa}NpohK2T=2Iem(aA!?6G4a$`^7DUv03d zp1m(p!JqzxcBdq(jtexOay1zjwN8Ph5stBdbxBaOTykNx-4{{@&~;ds$9ui+A=+28 zYe62yBhgxiE$rk<=W``Dm_8eSO3q564x!xv++b|HdvJUE)uWYejg$P;Y?=P_zv%$r zRVS_*7N6yqxPTkywC?i;t~n*NUzyY+fqFd=yx*`zRX7U@CnS0K%B%Wg9$VoiDP10v zjWy%^I3*^ovzh3`!Gi*93$U7aC8wlDpvw2UOefbxzvJf&jPokmbutc%1D){D>pSUL zzK=NYed^~p=Tx%fEzQ6tVte~Z|Fj6XV0t>4ceZL(G$@#+Fsk`HC_eT%KF?P2KT9P( z3tIk(im|LO-P@nA|MY8{%OJA_`6a~Z+F@Ct>v~z!cns8JeR9@~4?|9mI%$$`V#p2q z(zI9U3!+EaI8x7ZuohvTd9&7$QO{4vJL~*hn5F${Eloyz!y41@b6EgIew3&!b7O<tUz`lez8% z9@YmC?uD`kf`AT=90xk)7LL^S0?qw?gQxmybRRH!NdVf7J$v-cGcpdBi_KJVd2jrT z*;n$)BEldCdOWws)86SO6$&@4;9t6|-{Z7fV?$;du5uT&;|b)hm`Sop85KbUM&R3BDpZC4c&;pJe1(gZEIZ58d{_nlc{B+asnJf8 z>IDM6d;BjIYW7%UHY*XhxM$6y`e0v}Ndg^47b{vjLSPBfKxx$Nzui>P{3ChVFHl(=al zc=fzBM0#H9`0l&yp7Sx$(*S2;Yo^(iTjy1-i9+dn7yWFc3%}&{uRJ*v7v`|BXQA8+ zz1VfHpo{IFp~i2*X_|gk{<aJ&N?Sr`^U9 z+G#G#TUsCma}9s2q~Nx1HIFZFk!Jxdj=9`&?&>(E^HzY2w4IY&uMfYSw-(r`P<@${ zOQQoW`;9LvCYZX~Qy*R&mdAsGr==$6FG$~4WnGdnzyW~sa}lhLh0HvBaB~)(W!rc0 z{OF?C8Ma?8SaZ|q-?j@N0*jzmSf#(1W8oBaPRHfP&L~aSMp5IT**ho(8#k_za~%8K zfZfcqn`D$0pfgA&y+pP5n8Y2j>FvOc*wMESCzK0QMaTxGS;_o4|57RAyB$KwcS<;Y z9>wp+k~F6*$zOteQZeFrKgO05*_Mo_JtP=+Mvl& z&C^!J{uLRV${^oa^BrIC8pP9&70JS9MtDU67THC)*XXHGC)4uUXx^3y9P{r+0m}L2 zD)LHVu#d%S@nzu6Ocltxs^X65x2>t~~dcJ#bS-Bx5Eb?oG)6;g!_l|5Pg^!r*DCsy*6+Q!3>;Z@~ z%(G;Rq}qU62Y93lfyh%FLsc*<2dZ7ubs@IJzy>JLAgdpxWDya->k-7rWdkF} zQk`9b`>A_mS|ES2(EZ9WS9X~;$`o_4O|VteM%FMR@VE-2I$fL&A=EpdEJ@*##bKGt z=IQ=qD#V_ZFQlyW$@IKMN8!d>yt1x7WUYJl6XFZ@>5oI4X3v=AFzLU}=zE`C>Thsq z&~#$F<^lJ{CM;Yq&UX=|sVZU;$mHGnn&k~ehgo7Gpuh_N1+E<+n&S`y=-@^>xg7Zz zhBb3$Y&B6w%fLCM^s8U>)n81cn=K_v76~=JiawJ*im@ZB7_#$#Two8+I1Te{~ zR#p%mLj1)7Ec3MpT31<_3ZXOlzV6w#9KMH?1zX1^nNFd_Q4z9E?xt-mMRN{%gHaz@`p^xEoXt*ui}A-Lc#3gDA3!rXXNA4=c$G4w8WqA_A5tX3~3SZ z?wrqoo_@b0k7isac0Czk64D$#|KzU4@ZOw}N+Dx_2jssM@jXOvFVizx=x$}Bd8f|N z=OAgyf z`ClHjhw0v(dFwq+H2X&W@5zLsYa$i27-xP9!TY0b#-v_^$G$R@BVj{!|bz<-?&O0nU-8k z(+wc=bQN$2rJ|&5y;v;B0pl`%#?YjnhWhjmIM#OaqHLIWsC>dY*Ob z?8D~iKg_6c(j04*e|RR_`E0^fSL_spB(+0xUwWQ`Fbgwkvv^^R<-Vf=LgEzY2IQUk za+7+P60gzDOUUj%Z+=tPWC1*;iwk*%?tSDH>_+AXEBmCViq3>LH@||MzXOlAG9q{o zA496uysap{4eKou3clgOam$kY(}kp{(dq!qQ}g2`$a}+%5>9$-#Q++5x2`O|3AeVg zdy&r{xHQg;l42~f0D%Ag($SI7VOffTcPJW@t-h-E#C`PizRr9JboFlac^=udLS_`A zG4Doizy2*iD8mLiT*Liavi_qYJrIVpZ6jBJ@cF(y>}AoAe}`Va1JW^kST%$k0Ii_X3$yF}Wa%h$<_F zq<-sOU_Ts{X%@WFC|X@07XO5LzM+cJRceqR`@GzBTTT?PM$b?!yh~W@;tN2hyr`=8 z(Q(!==|{U>s+zFtcbhhzwUZxd4mJxKi8gINn|3FQnw9|^`L6Ds8UbK51f}cs=;rN| z=$3z__fDv1y9y|KbBeiu5})X8X?~uxREcc@f2?gF){c&Pe#Q4h`dpUbKZRZMwfU4x zgEDeNh>Y6eOf$Ox8xMXN1+};AC6{#BA~T8OQuN#eU!zA=+)j|s5j2WgBQv>GrE3Lm zxh;7K^Z0RX@jLVzWF{i^0t?7e{c&WU|BR$!D8Mx*I+ z&My_ip0Md)Inzac1e)Kh%K=}r=Z=h~(*uTEe94&nfbb=$dAorw<`8hQ9X+ajE1NfN#4vmMR38q^KriR7zk%M$=Jp>J{WXg+;HI9;K5hOf z#WtlN)I#HeaEx;59&q@-2Qtol)_?`G2Xek1_h_?i{ya%z|9REHJl>PcjHBVBu-pCY z4KSVge6gzNyH7*0FM#TMvodyvfTNxf{3BId((maUs$Pu1tFhQ5X7Tvf5KoP|Yx*il zp4Hg}VN)T)%sCv_ODNgK9cRgMRKAfw@l}F@9RGYM>G$kEPT6A%(9qxhc9)T8U98Tt zC*#m8Dd%h~JTLED^f?I6k+Y7DIzqLuZ^b#YH2LX^rm`%0UHyoD8othv!}`l7z&Clb zr8%1pKEtKg{?$_rT89uXVQD!enBL7OS*Jc_PQ!BPQKBbgvwI!qq|GP>%pmNcG0Y>+ zhMVJ?E%d(D0$*Hheu&Q)>XrK-S8_y^%Vn$6X$iCPv$N9B1BlDkBe$=G28_Sio`Y*+ zZ@k}%6SN;-$`5}-Et?EB&~mTFyxnC6I4ak4;Efennxmu)I=NTLW>*^pVob;JC8m~r zPaK=1+|U(Fw(h-yTiQ~|U50$EvMf$reBTiK*~MW-6#H5hI?5roB8Lw1zSD<*d)$(f#GDK1CVFX16Rr@PuCVrF0 z$aSM8ZrxS!9zO_X!29p_mUw6%_A!GFr!@SQ7pXv3nMuG~; z+sGGJly){o(=}6rQ{nl1^I39?S;Aq)$~e3hvypdlZE(sr7o1|}n26n4SN6!&4N8AQ zwcGn>2~^F>PFkQpCRzOO2P_C}M){bB^9B{4&kgUGDKY&Xm(>NND;1!MFY?;Y9XCygV!H`Lurf zh|r7rEAAyB@4g3I=9b3c%p2~zsfZu9I!jCjztO02@z){i-WW^L*7#yn(3$rRb_a5Z zj{-J=Dw6fkDpI74&W>Sz_U!O5z4QjUtarsUKlU8m<}K}3yEyB^jC*ip5P|6Qdnb<) zKczcD9i{kv#efQp)XS={lkq~$I}@VADysWC$)Yc6ku5uHt1A)&Y-W!9cLr@OP3cg& zMHO|b&e%*wEW`Mt$-=7aq#q+SJe}nA{Ip4S2ldFhSA4yjcDz?ZFRQ^8IGSFIs%mL{ zaDh6CF*GTiJetf!FvRy5^zJ3OhjSa9es1%lRV-ul`n^mEBWd8Fj)}G69bNg=;JWqW zXpZ+vNIVNZI?b>lw%(v02!3Z|i5lhgKnLRBs{XFunuE^^DZdT!q~!x5{>La#)c5Ie z09)!f9H^dN=?9|UB_E3v%HRLuj59};cGNuDZ%yO&pUB<~T`q9^0Bt&W_;n>q)DCwG zm(NJYUL&9w?VtQVw({3~S>n=7r{~s<-u+h5@jXLw9y`v1e zhE~skzjWX^o2=yt_1HQO-LZ!VvVe2lY_Pf9PEeLyk&K(nJk8UGKqx5oV8p$(y*Eeg zA(wVKVY{+(M2WbEqsx+mbL%d^@VARLx354zz&Y`1KNj40uUNv@<%``QSZB7T^>Oca zxX9q?&x-9c;<@`W{a}{#+T^_7!=s13ol*+h*r_!*i}90r`Gcp2??{hiBMfb5>aypP zU?rogo5v4Iwstnf4p!0=NbijE<|`|RwIOaqhaPXpVq9aB(HFLv}WE z+k0zR>Ym$s&)Lx=4F=g&=*S`3_7k#WcO!lc3_e;NxkT9-E32$f%Qf)b*M*xbmSs)f zrEE4MGofERmWyg+g40GPhTv|88o8;0tXTm;R|CU9&z*Em{r8%kYwuC5sz$5f#&4yA zV>j-;^G#E};~*s~=jJ~6wxNYlvsynxe)h=$0W^I=#qw|l-~MTRrsEzWq@r_#QoGl2 zz*&5=@({Yx&cmnB@Ox4-;Z?m0R7TEmkssCRovemDNY3ZzuJA= z?#DTsZ2EQx>SyiFL5tupZAK%ZKIGB%f0?JWUsp(Lg8C4nB{}v6V}>X}W;^*7M!w~& zSwr?3=M8_qzGVR$W_7I!Y3Vy=KEK`23@Ks6wE*<4JQU}J%;b202|umm+uLgWdhjb3 z((0S_v)`;@B-F=%1|u?X2Az0{U>lFrnL6??+Z93QyCkSd&!rsux$+q2d&=&tPaRPb zD-YS7p)xHe%RiPZ>le4Skssqv`0%B~(lHOvoR;~m<*57aO}9Br{)LykYZW(F+?dW| z$%$=~aM@RKbu=~TE3$?-ZTPG8^w`d!&fXsCWUI_|jfuwEHako{g>EBS18-ks$wK(b zAaXadZ+jWQtrB}bZGaeZzr>$)a1$YY1;p`sWWhGQd&?5$NWAKfdgtm7@7%*knN()k zPf)l0XuBKAr_Cv+ z&-oREzeG&jf|a$QrR-O`x{w9Yntn_j_sFijtkkzw(0n}`k5R&ZZ@F=W_PJmB-03kb z>}cchn>I`H?KQ-eL)6y`1^= zO}zj9A)gR$s*cOk#8mxk*ka6&UvGB5D{>juVW4YDcH?e+J9rDi>wHqIsxTdg2}ldbN|!L8&BKrL^gij^8E` z4xxAvCM2@r1AJz|&hHXmql8o20&RzS?drbeV$CkDnyiDj>k*I51L2B0@@2^6}w&sBID3g<_( zlvPxCKZ%W_m6;B#*yiK(jsh!+k=!Z_7yUvUyVPr?Zc*QLDX_eepd&X8iDw)q6WAujyI$>TrhfpAT z6D){NeelGY*Bz6{eC+?dFkiEoS>P4`Rg;Ewb^FLGASAXZIY4Io?+?b zy@}v5yW53Kl9oNY{U+%1#_Bp_1T@myXTbc*-ibM8TO&ULAW9cfzT?HO=w6dMr0S9o z`5Rlv_SURMs<7^Z693iLiR3|o<)x+8CDO>N^q*m4>ugY z3971C9GBo+BQSTv{KafGWt^QiH$3i_L9o)AK~N+j_b-XS4(5;kgGljZKeXE?%(HWJGo4U>{E z=01|7;w`9SPODAhFU)0xw$<+PptC^3Y!xAtG^R9C8%Lc*jpY!NBoT;6v2`5-%;V6S zilSNgD`r@5UzxdqB*}Oi%J-=CT4JVUiaQ~*-itsNS4IzI_;B6S9 zr?$+We#qu#hmsh09}j=geIJN?FqT4FHALH}y5I%Ty@5rJ3()sqzOkv8BMK)go!Jr4#QSDvX$F}~QuoApH|Av#iHf4a|2 z`WedU3l04^GAV5icN%d}ZYQ|I^Pa>CfzhHzn82IU61wBak*;xMj`XlwPg$unFh9X9 z-uX86cyiuit5;~qK!kJ`BSlpT<&+y$uE)BTL02#8f4&93D6!0wTPV1{AL&Yfc6ylQdm59sXF5*DO)xL1$x8m0-hj)GkWTF0qgEU3TvykvNeI3EH`_FSaD${aqhIWH@lG0oDMvE9vB9uE+oWv z5v=k3jMW7_IRWpFgj(mcK(ObhV5t@l{_+$(kfytl?%vCkd>l^0v-b5HHf zaB8-n>$dkKlk=~NKi2rj&F2i`14EjulXV!Ip<)uPOxk_DN3RvtXOT$ftt~b-fhjk2 zvFo#!49e)6XhVyB&;qsQ8V|{8isxyYCVCF0@k@XMw4>Lz()0f)_{A+;GH28oW7^$W zKtir)DBo&OHIkq29h}F*pT}P3@AmwM7Pw{HG#8hB(o`+d3ne#ZyEyp5~fM)J7mn&VS_D`OYHJVc3V}Wz5 zo=Z-f6oK51=5zJ+1kIsX2Qtt(z>ejt`EN)J2>o^n$GL8X#J*28+Z{lUxt$L5Yf68` zmsQ}cjcMFC@=2_fU=yh=K200-MckUW4+KM z(C|G8P&4HLDqyjprgrTk2$ z{~??dS=I~STQj(!sfPH<007Ur5wDdpd1` zSH^8Gly~+}KV)pEvj;0vN8@N-*AE%Rh48V_0VDeis6!M$5|?s8mxr4TZ~8&>KYh+v zBSF}gPl%0tyAKNgDzq7%N9Aa)+Yd>sFXttwi^+Td>nsI`2c+ z=5L2Db$}9wbCIehwSEIrY~FJATIS|)AIk^UG^BVK^!DrV+odaxb8uO=>ijSxvxxZr zhz}?9BR!K}EP~Nf09TelJ^t0?@1ro!cze_Lj51msouRp}sITP5;bqJr&bG|cm@EO= z?kmWdA2@vK_PGWqZZ}f9Sd!JV+nXc|+{4C2J;%AUOSVlKx_R5tcUX;U_TAFV;J-^c zsjsVoL@6a=Ahq;em#pdb$4(@Btioh3kA*HlC*glgE zlmNy58`mTw%5J%oRCo_iPkz6V(~}a7l*p5R@c6!>I5S*WWTHR>v^B5a45ZxXWAM$% zHN2Grn8jzH=t4@}%o*F+d#2#!`Lp5NhG{5$r}`a`Z@oiB@@=1lH#Lc_Dkt4gaj{*O z0F)fPtbgKq+f1fZVxHfcXibZ>G#Ycj%Ly@W48ae0m|t1!T%#o=qT{M6ARsmpE-iW3 z!9vt=8%|dE%77(oLW!ZxY?Kgb+ch^0W75G@4;Dsv-rwTrb@-G*(D>4Z%M8@XD zy#Bt~|H^3C+XS)=I?S!_Yfq(@79mAC?pa?u9(P^Z!aU}%Q#WfB3aC zGsjh1IG}8XgGy;z)eC4_uj4C|#k`%Zyo1wkh#)#Jm(ud=C+1y|3DF;~hOep5K=v8U z%@`QrFwi4I*FW7dA+ujji)3ca7Jp*2aJm&dUe;?qrV$-_5zcUK7eMn~*?}l=aL8mvx5Ia}FPJE&9#Q47i<9=2{d(=Y(IOCaOS^ z^30$kls6QYIb*inqW>j9wS?CD?++Sr$IXJW!hEF-E3BQs`<$WabAuYTKlw(N(UNWZ ztT*XAr2aSVpI&*8K>c-d=#uN=4)}I5cUWJpa5yQYbNf!Ix9}g;rv!h0nM*}TfT!*6 zX>lH9e+9R!A18B2zCi9Vy5zRS%G?_QstnnfqsEhv_VuoB%pPyGk-NiwgVQ2ORv3)~ z%@UvaNCKNkNrJufrBo+^eg>EJKnCR(2zpbRtS0bNZ2P z24dHG4SZ5o#fYdAXXUxPX57Yhx5D8|jxlzjzd13?lD4lOX%>EKJ_+g$ zyM2<9h+L-s&!@|MmkkPV=Q#ni!cMa&*(SC!E<u_vVBvf~tVyX#)7!+qa&DcLQ4kUwd_!Z`P{bZ`FekA0l4S0V@g8C?R#DXx&DsngUo#EJ?`&^pWQ!oI=jCnC0{Z?RM(h!>xe?)}0hi+KEK`7bSV({Jee7)N z!IsP*AmAJa->?iiTr`d^8#aTgi`mBF#aywg{JwBE8WyH#grc~^zuSA*0;ga7Kq6(E zb4{CL068<0StjqkX0cIQTeB^?^4qSV#xREii^YfxC7{m#WG*|MENR2}^c5Xf5f$V{ zcW*ba&BlQ?(yTPD`a6Q=2p#*{EUKPc6b`z=W=DsTN$m7-XA8?~Q456e5TvDhR{n2nsEd`CNxS;u zDeAg@14cD48!!sI)(QKXZAw?c8!-5>5leMk5~(zA7=KT*uBl(UW-d(nDkHS#>GTYa zA+Yv$W7t`6(mj8lCudC;!`Y-`6x3zEKxU{m)c@+uN6=59yyty$r6;~TGG&qX$GRX;j zqD8BLVbES5!{wS51UO9-vp7WVQZLJc(Ir<%P?~*39!-f&L>!=mGOMD&Xk2r zEU#BP(S9i7VOEiE(^67Kwa0|>%Hu@`v$p57)V+hGuwt6ghYvL{9Y6TkD?$b0s0YrH z?Cu;Q_v{%N{R!}CrCn=MeZ4`_FKS{ZpZW?GH#PM)gMwtA_E+3sYJB`&i_=p6sFC}= z+|<-jHeLywQr2#tceh6vgXSWJ#2j|Q*6cw9?rja+ZM@&KjpmrtiiFd^{0rbl~OS?;ay7eQ(D!o zhEy-9`QCwfr1&c9@qG~qKEdJo=DFGAUkOD0?Cqc7@9+gpI>9rQAFd30bTZTV>>-a5 zNOHcq!b5aGMqH)!&li%F9)rybu8~QcmYhH@`z`pykJ4!vz4~mqU#-U#?;xl?$iVCB zO1{HiXBnc{eWYVsjSVEvF-$mk!}-kTi~2{)hw!)h3*Drt?wL2HF(CTFlEivsaN2I8 zQ?WWPum5YaL^g?fyDl~pt&W7q^eX+7UF1SoymHB}{BKW0XR8r+w=+_P%Whx`Tz*Hu zot(R56b@ujZ1q2G1F2mtzZqal&(_<#n5enKc7OZSFc7 z!hFX|NoaQ7_|X`soZ`99E)s7PzZna90--)!q=V7Sl+f&75t?Pmb|;qql5GnI{MC$; zbm{$%D8uYF%}m%H*vQgqc6Ir>S+iP`bc^GRX{PUImhJFCjP{K4e~0P}h}M$*+RuZ5 zPLF-(-Eyb_LpB`VR5Bvt*MBp$a}gMH;;rE-|C8K_Fgcg0`A*XC>V=kvVL^6}GzF3c zBKp6T)5*uk&0%T0yml6C3~1#tt>+EufR&k@XmA<*Wo}UY`h^A9qzUJ8)J8yp2jW;D zv)J$n-aQ_CilH(w)w$foG9)@v6JXhjNe87-kw{2#Lc$KNmU$>}B}HcUJ;C;JRQ1>!RRgO>;ipc1N#F0N<>WeMM#Y zpP2T#b|R- zB(H*O#^j{R19*$NLXUZiEy{12#>i3@b-$ zetOT)jh=$RG^W5#1La>H*G^QeJ$gCsn;9Lk>J!`l26wN6yLQ^!vKM)9G7+xMiTzbM z5-=Sysa?mVdc54H;d=B{yuh{UfiG7}AQWGg``q9>(o9pf` z1(vrhvyV;?C}`W1HYMDOA1=FZop@$emoie>FybNb)E2G&svwMVY+HqjW8kyHLu%Kk ziw&UI@12fpc1nUytwr}g>VG9>!V`;6<6D2FaO z@BQDgz~6+MY^>1i)L$iDVzu9A#HC0NOiF!s3q?EDPZ4rHA?@GX9>(Z*AE7T=zP;j< zze#{(Y>B zytO*-Sji6OK3Ki`fF9&FH-%;mu5$`^uovB?0oIY_0^zyjiiEF$2e^UMhFaz6EP6@I zVKQ(>aOsYtY&MXE{q1l5`&)*t{EALTMBCfnKB;aXcA7hY{|;>K%ZK`U?G=Xo?LP=D zr>6rsA_Uj%swOS~YMM3GLs@OX*G8v#%L?h}n&1$NoIOH_|U_qn#2lg4}b;~cnQ$!l%0mCC$*hV&Fx zcPpI1-r82bZ21wxILO%*tkK9<{`v}BwU$E@Rez9GsPECImcY)l@&k;OwGWfPeHwiD zGjNj?#X)Iz!!?Fx7}m;Y5H3-al2QYsl`)qfj22=1t}C|2bma-5Ji~c~HBKa7>Jk=9 zA_NbmsFX%_gFc;weW!^55xzf`%LqTfAA+51V@-Y+iR*jWO)SF4yW`exC_{b1ReN^c zJo5uX*5Y+_l?e)Rm4H*coJRd?~Y5ud7 zpZ(+GB(&yJU?0No64};_qFooY=_5_@KL)Vi@AA@6U4}Pril2a>$vn;3J?>E0&w<3} zvAP1D^ym3Au$RU|ssZ88x7HdkYR)q7zPU#954c`p(w?7acbmJRS0X=^ajYw)x`K3h zm^3%!P6!-U&{0=L>=Ykt+hg&__O`CiCp+WfhxT31DV(?2#9ZgCDaTKnI!Z;ejoKFP z%CJ%Fm^n)M*NNHiNd?Xf7n3HWZwP3XAo}T$+c8{1zjd>(jI(>co|msCHV=sGIdC*Y zjz*Pmtzsw%Bs|5Mm|0f#i!J`(DWR8l9YCuko*d!Iw}nBx<1m*rQD!(Zdsjhz_TF~5 zU_?OgPOn-f8Rxrz1>`Z6CC>R^h8zm=Bz~4vlS=&1oH;vWzoP4|LCUi7Y8-iocy#xy zrw;9XK6d?@M-_w8#Ga{W0!>LCaLZir^me+h^!!3KGiS4i*nL|{+c||rQk#F}Izv<) z?y%cp7`iXyd1UG`z|B`vo6xWMQh|C5e@aL&9q_dIPOA2JdH8 zj*L^zi=E$T1RI_v%#0GGD_DG#G3SD0ygCQ=@cNinn$3u;&$dD1z)fMY7F6)+E|XYd zx^;d4PbJ2S!CSF^9BT@Ti9&@$DQxkR`b}J_#D==c5 zi?;>Z)FI0`oj8f?ZDjI@KfxDh6ra7hg9gT8sho5RoUKI}nM&Od?sISy3UC~4*53RS zDD0D(e7g1>b`dHu?{RZDg2h3(yy2;Rcjg(#zwdbi>q|U`Rl$mC6}nmFeZ(zFohsN! zv1g(tiAOcGdFMO_L}To(QG)V0KKfSN9WQ5ov5Jn>A=v8KWiVW2T(}l;fZp`zp`5paTuDuj z3@GEM`84&(=h)>R#)6CLJDM+rpwJJ>-3T|&a~!3#*Ass_U`8l*qw!RtPD9gpb*m>yJb!w2fO7uC0C?)e11SIUo&5*)|D%>UqFmm=L5DXKZ7X zw5BK32?g>2Hq%*Ve*6n2J3L4^BTYovxczbow2)kYJJxuIf;P3OihTTqF!cNv? zfxX-upldfXt&S&_jUJbdw*!rL*Dy%@wGONoi;$3m%)+Cw>Y|YHE+M4x&f}!_cHpFT zb#6hS_a^e@a%QdYB=bgR!|~^3BfShE7L1fIvT;7{u5fruXAO4L+nGC1IRR{jIrGtW z($|xe$}HZa@xXKKM&ap7#K#!LhULREm%ANyJk?Cg0owV>Oo&@$k|jm38f z4V&}zk3h^_$F^rM8CX4FiW4c@KK@~V=o@jGJLK%RU+$-2E`>&601Zn9kD21Cx%QR!=36*UY>VesgkVvdD8=Gb zzgiuyjN9$wZd-ZMoJ^H(`fjIEso?E77!+om)-@Qe%*FbqT{hRjF+aG>^!k3JTqRFq z5|t%*tiN0$8?JKdrBFAg%rowO6sC30zIzPvi!cxkEJ*9^#FmIWRjLh$5~8SZ|7k4I z=0?raQa$lid%ptYZ4a>IKDkz zRh|*^i`YD(maBj$DIF3#18-O8mIZpD-f40>2W3#m{bhj(N zBIGfsS}Bf1jS8l=g8)XBQ9Ee9l(KS~ z|8?1_GC$M2#cqw#58@A=&{nM=!b*zH09;13h(al~NUi1on~`1FmIp^RgHA)?&PZbW z^HWNU)ni9FDG#S6&*f98iP5sryE+W>r=QVxKEhNWnk>7N19XOs#qailONQ>yGTcT>9Z?4k;hvp z`5j`Fjh0{FRFCCQRg#i^wGczcWkgXfFf1g2;!sJ<=j9gL2$z{LgTau3*LZ7so~<(m zqQ^B_GC#?&XZYWjQR$~YC;mcFNyyo)UM?&bj7_3GTsR^*e|IYN586$~aFEl~YipIo z)XUx70LT%AJ^l{_)j?L~QAUNs*iXd*(3MQWW8L;-bC356#=?}%$;c#!!5rb!iONRJ z-S*G*dG+Jyx{Kn_0>g-Ft-_Hy$Jz6BMe5878NkO(Dx#}e-V7`3Z!mu6c-{Z@S*>9*{ZJH-U9(-TusuDHFe)W46RG$q=M>QHz_N5-iVJNj{9UKLsXm#kR>`4 zoJ2Zs%GBJ=IGM%QW$ntE1??F^Hy3Ytujp)`yGW^r%?Aw zmdOTcG=ptc0O#|9Lc3xDA3s_pLzr^+r<6^Kmi#|;;VdGn5=QLcn?^zl@R%+&x+es0uu;;IQ;=Ay)Fd`C8W!snakg@UuOc(y#WHnQ15;{?B{fP!VvAR9E7-ZT;5`auijk}QP^g_V z_elRdfev-y%vc*bPVt_Bs076;8293IQO{f@kVIS{iOd}OmTuwol46D=^sIL2>hqcK z+2enwM12^nBkpIlfyr>*Ov!ovU73$ab;HF=dDlnGaQ9_CD&-C4&Y%Cy;cPi5LVa6c zfW3mfA|mw_UktAxW^uA61OJ;}z^eZ;n(8>}MYhK{Ud#`+YH_masuQJ^4M4 zc3QutANmE=uPcXZh9257JpUs0d6%;?M|fLVfpE_ebUE4P)Fe0rc`rX3D`zT>jV_faDrn_S_01_W2#ovE2aYAhQW4(D$_ z&wcAe#bY#4PC6jnWs^G1xs`V#*AFIQseu%3UR_sBQ@J1&(p!W=%*i;^6-rbio;mFY z`>i8dE+vCI{V^GxRVhAtR5NPzp)3^sMN+HC}hwh{R*s>m}_JRQ47+kSW%)uu~Z>b4CL`$Gb^rHRlErry0(421WeH3$r1tt?iYV zYZ>^2pv3jo&bYgkh<)0KX~|T3+v8SBj{KfYb65*FgQ6r)6(aYDMIZh8W(f;?+To1w z>cSK4?FN8?vo_@*8gC-Iyx;BL)DoxPsFZmBX0jhxAkD)~VFgfg@hjn%aj1 zq&fF;0r71gJ=m~SS8lA0bZ+Z7?@6Xu2{3OW^($)a1w`qWh=Jd*YPW!zP+RV^ZUAWC zELeVRaa~#HPe|7`AFe9%)R~D{l)Ha6?#{Q-&>osn@fWhHx}C#+ zvN(i`C^nPW_IE(RK~y@Qh&jAx*6iCc6iW71M5QE^g&X-S(Y$#!{!Y4i8grD^K8_|^ z2({)t+dZAgRvgm-4$uP!I)mwE!Yr6ezq+?U@*7ZvOE(T(_vKT~t=nvZS8qD8dim9FN?To#N+%%(QuLj9 zh`~w5+UJMab=43Aa><%h%Yf=yC#-Z2tmC2=E%{Wae}EV&fs9(|%&`9li!O#s{pKS9 z{|ekXeDBKl!&`3s6*-{#D{FRG4uIidGS7r*n3Dmy&HWKU_}F0%jDlI&dbt<+DTTVP zM^R+bBx2FHmT7=Py&_px&A%O{$X>8zLh37mQ~ zWooL@SsH-$BcDgXIk;+InbfOR8q zyH-&02mCoz@aF1BKy2;_S(3(FeKxnvd+q2iPTtQj5bOF^@?s)u@L^#2e~n7C55G#= zU&*RWYa&JTclJz0RDiK7ZKG;y{Sz#s7;z|S<*X8tV?Tf{T#)2(5$hWK%(I-u6zAtl z+?w}{91#0(_fwWP!&>p@ovL4C+>O@Vh7hsg3 zpbg~&CQSVe<-aosfc*=n?xisPpY&ykH@v1~cvhw2FY_mXWod>im~@WpdLfQkJuHBC zB_-H$MdiTy2(Z&;oPZ|4^;N@uNSQKDQK0yf&TscMn1c3psv19{lakxvhlbI1R+D+8 zB~RQ3F*CD560l9Krr4_TZ&)d{_{~cGD@?E7e4fEr5GkByXEYUQGh=21Lkfu=N>ji3 zPyLMz^M!9_TzbkKyms29#r~+bEz|Z^{+U~A@FJ(8)n-riTQoNwH0{jCQ%mkV!?}CH zA`&i2v^C(^50Op*IL|}HfOpmByi?n5icZwl^WpV2$lOwLXB+Cr3Il0ZQ`S%OiioFOMN% zmXz#05R+0Sz^Ue2TA)X@Nc1frq2(=0)3+u%5^C5rSn?KD8OArLG+(9{L7eC{ zcs5}zEF$HCuK^0x<}!l-gQKgLG!f~I089>Ir}jwhsCX|yq0Ai~#Uype<0)&G@NOH% zyZDsvHO^3a1NW6@ly9Um!n3~}zGTdnf?7U6d}ccuIu!1SU*j2==qaJqk&8xRXf%Ty z9FdoITDZpD9z5!PLqb0ozVg{OLNV_vD+T`d8WR`}{-a=FB;SIxT;&pCZ}-g2^ny7K zbnG;h8DGDM)0|6e#{li^br7me*5M#To4tnQOT4yocC161iWoYk(w0)J+mkSD39VYn zdTu*EI*Gz*#fWu0V3?6L&cIJ_faLQ9cLv~5M=RTUh}hN<*4ugFkw1z~{rauorq^iM zrM=`UcZ!b|$|yN8@kweR z1%jVbDYvGV%KyqS5JFayDg6U}j24aqxljY(>Q2E5d%Bq_LKhjJX6vlQ!Eo(%UJUWV z7R0; zNjp)ow4zlc=CsE%$+2I4T3{6qH83ZmQn$$)7JZ_E%rfHW*Od&sEm+AnPbf&=W525y z^C@YKP2RMqlZqINtK+I_CngRfmvUfQaJxllh(76oBel+R2VUJQV~I+2G|FMdDX9xF zZ0{s4vq59YmSL@Dj)FKet~`ZcyU-YOGHz~#QZ5&8^tDlBW6CNLU)mbyQ8Fc&)c3%& z8>LCTXTV(}hn&hzn>}?TW0)T6<-M*>tEw}|{t+Y}@Amviq^`iE6gJ<0cHZDp(n5C9 zTvPsP9kgVfcQ_bsfF%2MVai<7BocbqRa}8}KT0}7ItFbWm|(z}Q|tX7j}$(vnbpPKl}|VZ~Kn@lQB$${lnM4kW#$c9Ngpr+iBlOqru2 zVfBvh+!4gYX_u}w6|}i4>CLlM+_+QqEQPwhC;Ab}wF8UZHE)Z7*p`y@YIwZPUd#Dk zRr7jc`lyhg*q!uQ$;xTYTO&c2aHPtCR)PJ{uoUW%oNUalvXafdTAB^c&p*$XQz&4j zxF%@tBP&Zbztm+k2`N{&FB*6Es1wPb_Ov)00T=w)7oxa(8blfvfbtuHIS?j}p?Zg# zw2!_M`{IQaSlHBC;ju){nI9_6jFw^@>AF~2gr!{8D5_uR{W{`+*qIDezsuURU;c^n z-)~~v3J;Mw3lPYQqNZI~B6aMN8-kc#zFJl&77wmxI0+ISG%I8VD-=Bz(_|p%PCxB= zjhsDoo}5a}jutfPJ4G1y#zyI{)KZfLT8r?wht0}{XlZq#-GeWWl4v_{mBwXvo7*bX zxVu>4iFK`NkuB*_aV81F81_UU63+%U>2+VR%@c*WmVRf%?gHC9P2bUCMCRq<>7%IR z6zVy!@Od&p^O2*u6bPGbW+yO!Di3|iSN+Y0WndR8h0;A?F)34J|MUk77`3RFKZVtT zaY@yOi`A#S?DA0Gwx(9!Sv4m!?3pHvHcUbTm7F#~eP^BM*o<3B3~9&h4O)4s93h93 zvMy`1vMJu~)vAu1(BQ>MZ63BXmAf*`&1WJwjX7WJPacKcW~j`Et>|Tb zS9J*dRQO?`lOy}u=}WTDsM+=45G2M(zicurMxr3cw~U0Aziic@It=P!vGo!28(+b* z*G^{4WMJ09*AM6T9JQ_QJYCUoewS+Qsu3>s^_s^W0cGcFw_UnUu(^qhUSm})%J0mA zr}R4;bnS2*`YFX7;tj^6)jw5BRnAg5VTX(bccSAnZYjq`U_*i-5sMeK73sl`V)oA7 zyuleahM_hNQgh=LGWI$XGU0SHnfFYTdgd@3#`--r8E*<&!462Jxmp&!wg-=b_sWIe zxUAtsbLpv+lZ^LKia5k+bCo#fQr6>;cz4=#3X29rNcXxzOp0rX1gE5mf{!y>^lSdG(4OMm~!lN6^0`h;QG5^7AzSd(B&xwBq)DlCy=(6X%DP33a z57DZV$lsy9t3Jz~e$hGox8j4H z*_R0Gi!4Z&ic?R)!&>w=r>HyY*d(qph58g*_>CFme`*t4vBnp#Q!femexSPN^owQF zpY`)g*z9UeDTpEVonNI;AV~?6ctS?q>stN^*Rcp#XV>D2syc^s*d`7T!;rO2vDN=% zkUFTVj*4T*KxN{Sj|iaVB+)xY3rsY-abj+}^qt@`_AiMBdK-XBHF7CuQ=TW^p9$UN z?#!|HoNA9#=LaCl06>&o?r=T*t{nqfaN|dfZNH=`Z5>4_z4GAAYS@{>OwL z{!=R7)Fxk&_Sk#_>{xI)Z%Q>k+P}CqsIIu^fUxv%kSAs*2j z%l=Bfds^JVbYQg)YA&vKFcvR_#ER|;_W|I)x0v?oSf^+DKtCa3^@y|=g!PnOot06= zca|YwzV4&?j$i1Mwx;5$&U{dn((@F;i$=}?C8bRSKrB`W>{~v-)hajiDSNfxsy~1$> zxvL)c(x`p!fow>M{Tn1LQaTF?9^88%hVQ|8cLfCj@h5&Ed~2%hA;xKilU#sQSq3Y8 zeZr*tJBeW7=Y+YVZ`^E1b3q}%h=%itmi_FcwsG#F9|;YTyfU_<)?<&vmWUeN`xmOF zMO>&ZRlX?@p4w&!{#H!U^Snc`w=tvb*O6I*zrvNSmH#cvojqIX0z(*aYwY}43RQj2 zcVY@Eg~~&@P~k7WkW;X%iSyQ@-KlmO`;Fk!ZNKJZaDC4^jp<5+TJqVn{e>`X5chpM z6U@eS3{8HOjdoG{`e060b>AuPzNO(ZCFt~oJ+62DmmR;xuBD9mj}3AoDwa<{neP%- zxz~0DmIYC>Fyj`Ez27YZ!yuEmh1R6(zw-3@>0+D&iF*@=8gQ|M0M^?V9gq>_Zfn8dwYKLAVFn-`@v>D_`xwzx zRsDv0BfjgvtDk4wU1@syK(hYrIl-N^AGujD@vEBSB1!j^3+Jd^r23LYA&(08L*wp& z7>zdH`oejhZVeZ|U(LeX@nJ6`hj|H|MoQjbe8Bb>DkJZ{IkSk2Jo@FRskxM+d9iUl zFr=^efBA4Zh(S30_Z`P`zSPJD4>2ba242NARU=c%Z4HmV-^9ojf%d?Su%0l^ANXx1 zvW0nH3KJgyC8NqP07@&WJComWgcOZ5b$L-qTM7TmgS%1XLw1iN31>C2jD9I-r`s9j zFiW%jnd-8A70^IAAZ^oi%GM$hju`m=?ptx5PUu(WIOQe%>ReIFIKBW)H4>k+NTZo&H#im#S#aBK$Pfsid_v!GxqWtc4L` zdH#No+D$;`n}kxRI&((Y^q+~e^*gr#Kf~m4zbV0DFKtD*_h_|!#oHp4lSj7Ce^ZK0 ze^A%I4Y-ZJW=pA*x`fq@*392Zg<@;prf@~|AA2@}xpz1E9OWMm&XOp$D=hQ3HQSV| zbt4|qO#IuI4FSIF1)v*xzlk@g9#BuyKc)KzF8{fjwlBq@g(eyJ2)eNP$LJ(}i#DH;GxN2~R5IwSv*f2Cu; z;EU&6m%(GfzJQO-R*wH#=XKvS{jHv9y6g~CLf3rBh?)?UC*0zF6<8p~Y&AwoCW64# z9GBls`}nM1Y&%7D;y4X&obUZ$YHWq>xLyu46%Np@PjoWtBsO{4M{F}A7JOYY9dyhW zBkfhF-whSZzFyf|lQ(~VHqJaNZoYfbLS5Mu9;#u)L3E?dXp8HgUJz zasqaBxqiN_@6ndXfA?yY2im(avtYS?Fm$~mn`ps*b6UAjP{_ZaG;N^yl0GRbGQQh_oo$R^ z0SkjFcY1TLH~F>TVZCQJj8|5uI|Ge3J7*wpN=W@;O-({7^dN7z^=E!nmDfpco{VXn zIYMd^-3!xJ7ez8H1nUdK5OcO{v=4(wcJNwGc53YH)nY@Lmj-$^bl)pqo=f)7*hk;& z%|!D?B2*zV?S)8%Ec{IP5whtyi=YcS+b8L=AU)^)VjaJh<@i9~YtnjWj*Ag$2|BaL zcAy`vg{OiufeW<|@VEdT1B>MfcHXE-Q`m(#Mx{M$lK+8_;YH7s!KPSmtF}LS;T|QE zlSt?VuM79&m98{?LvI;+Ip;o-W>nght^CEq7%!S=6*l(rgB@T&&}n1Moz9&#KTKdD z9_D!~O9(qTHNO*R@Q96s&B3CEjuOd$tw_M1b}wxBkFI0B*01U<3hEwpv}Z1O)>hXv z=$jb$87_XWUja)KGcR(&Mi*ZFxUT6rNt(!ol6l@bYK!7hJmo|!I1=E<&PaLDc+&?9 zxGQ7O1D*v_%y%M2DbQ^>VKC>ZOl+9*bLaD8+T-l2ra5IIn(R*r8~iP{FmboCg^pBj z)?GTh0hn-2=q1@*M=vSn*X20>AmvrU;dB=q@5T=Yo3erHGpEq;q*z<^l!C)AiaAhN zFKs1)(N<>Gld_Xbi@TMWr+MKQ1Y8#K+?@38e0$KuGkXtnhL-XqEV4TXn9Rj#dA|SDh>U8*-Hfg`>LJgyjRJGa zhJxiHyb~O08c&F=Ic1OG+nm`F{Zz6+IJUfRUxBS3DP2D;cs5)eF74Oe9G#zNEgpF- zNnE4N=uvZKOKp5O_TQN2Z^E}Ss?@wZ?^(QN@7mxxEd!URA(_FIZSJ>q0W;VtR>);= zEP}h_k6mAOk#?OuY%uSxw)hz?+9Ce37M)k(jE0iq!MGQ@M4tH<#sM=7x-UNx!HKF0 z-!stlKPi&qiJ3{L^%$}YwC>ELL_1eA^elKRL0Qn79 zkep@kR@oV~3RgXvec=R(cFt9)1<}#u!Q{Ze`#aLvFW2q#^J1PHWIkz%UaQ9B&SQ)d zn=^-jGqH(<(PiR+$(D;c{!#?;Zx6`(FKZJ8u?7t~Po4Bc^~pKzs;ck4OMDZZeLiJ7 zsl6@9n;0vBfZK#PBJIR>UU&IXG>M5tv$kx}aZw$K4h|Kp^O8-D0)0}M^rpjSD+!Sf zUhwBvOHV!D_m`B zkhQkS^?eeGkOc?!+Gfd`xBhDW5I&dVyN%uW*F6v7xKU*uLDW!$v~R-Ow|i^MjoLRh zt+B|@ftACE9y&cS%&r0+YFXEt11hf}Cwr$sS9@3ICz}Vr(!_}yYpBS6|7)#A0gsh^MVDuRR=j-U+Pepbm$B_@O$FxnG;9ls` zqC1UTzabS4&|!krT-bY5AE^*}&I8M1-wing@5=HzQ0WuJPX@mCSq-LUw0*fYukpe8 zMz|r95Vp~Ga3bae6Fg{eddK~x#dk>F>dLX<@^D1!$!e9bE;U?W>G1iUhV(pQJu8um zbblC0_HnF5@C&j>{hw?XXGP<7SO8?93!P-*c`JTcLa}lTjrG($0am1PT1KYJ@~18^ zZ@@gE=OucSHU6j~p9G&&c+gXSZ?-$flL%$nNO!wJCgJ#sY^6Ds++J}iS)vu41qsQj8)PsribtbyQWudyL5wC_NqnPK^J8kB61@U&O1r4!@NrfB^_!syW z`z}hzGNbmnQWi$emR4pHx#T9dy^4fcK{9?q=08BFrm4f78*z`#>BVnd6uUJYb!DF- zW+O#A&3pou4B(z3U!@Le__1yi`NnTE&$HzWdzm#~=y&K(RVx`^`U2Hx#t*F&cWx27;(Si<-RwC$j=8JF? zqL-|urP;$07IJomdh1oE!=>(M_!y|rS`Hl@nd-#+%*rAZr>VL`7=DAmiofkueT~1F!l9XEVAZ(zXdFDj4=AH^9TJC3f(m;Vd6W!_|d@P!CDr5A>9SDif=# z`lZgbrmBJ&#;m0!ED}M+%|df*q)pa9%sS6(>I_&JM(*6tiQ>vax}U!w zK}T+Fw!-jHJK*6%`gm;k<@JeKnUpyvkLAs2)*%9XQ7`@@FCYSNW;|KQ9LA=(I$B*d z1_u}BYzo)GJflda2Dtii#74f}(^+;!e6%7Os0x*&?UH5|4}eMfwa71(pv{owmqMON z0z{xuv2C;wq52N#0&$#19TUER0>X48h`x_vC?4@Fb&q6c}+2GdqD1G&+BLhqfBv?JgXaZb4UMH_a+8=muQa5!Q0j{47N21T=c$ z^2I}N9?S#h3>;r|+)bMADcSmTkd%;qrL>e}5s2bd2|!~0+D6W@ZM2u?RiR!rnv2i; zHWreLMigjerB23TDzMv8ZlGuu2`F{|#`j1oVr#qq?0+NeGBiF~tuFF0CxtEohykBhCL59WeUeV)qF6*lHJ zfy8Qy;kk4uy7*TNa51^6}7o|hgrJb)i|qj~fgQ9M2HO7N3jO%?}POA4dEd8g|5 z$)1avMiTuiIV2f*2Rh?`XT)bh%gw+Y#@)Z7#>pV@2zPkdJ9 z?E22a5bN+=JyANVrP zO0Sb=qT7tP8aNAK*-~$x@R^t#EnFguF0+>>8gLeP+25- zMPP%7l%nsa^cWu~s;tSC2Yx&;iXx+ipBApqxSYE1Z$k1eZwVxi+W^5w=NV1 zD8q7^O57xdZYdje$$($IZ`q!~G-eCpyin9P5NeBIX7-+YA+0dweo8^{gfp8HtKhhx zR9DQru+aE7;+-`iMz`CTXuslw4~6KKF?BRa$*<@f=-7mXf$Jv98P3~^tFxdly#*6T zaJ(DPc{WQmvvTwvRY}Q}E-NQYSV&1JXInX^yIj!hof=|k5l1U~_qnGk`D?l{5bA4_ zRk_EK!VSSbcwt*Rsx-2zFOD_{+n{MJ6WG!|7n=fjZ67|C_LMl=eux8h71cMDj7wv> zE1DZX5XXEY))fWNT?gh;liL2zmyO(3HVdB1Wy=oq;*kzcBmsV*Oh8!e_QsX%Jjw$M zo$;Z^+ov8h6&8q)G;CB~3J{gVR5H1Q>#=0K5*_n7C}GC-32k<|ij!0c+!x_6Oi0?U zTqqUV$_yXTm>)KZwjc`Wxe&$VwL~Jb~mCRE` z%r}zaF~G$P??!>Kh`NYAEAz*-Z|A;^2X5`OHwF|*}*G;_AM zF|;t;ds%q7vhO_W`R;ZR}C+XOu!zNn`^=X2Y?6$X3a{(Z@q)K=? z)rX)>441@YD7kTBRLdIs6pb8T?8L{pH$G!m*t$awfe{ur|a=a$Kf!0b-QCZsb4 z1R}D-e!j06HC*YI*$CbWd2X+pYVd%lU##>4!kiG4@Z2@%?N8Si+B4qP9`tWaFAioM z483L_lEK*k>d|%PU1#vMwt6jKh5LJ-km8QZsqFYZm770*aN?F+ZMTQ@OrZEw;D z0(+GyAI-O>eM>K&UY(Q^ihF652qFOK#CegIebl$#nAUeaRA@=R)M+xp4;}y%pdVsk$`y7H#uqaL*(oZWuuJBDLav2a@O$xr3G_??8;fbF` zCke_WmE##Rd^uA2sa7OOP~!L#Q(SGLv<)bFpWj7qMhn)+?py=zc%Bu>c!F~sJSQc? zl9%}~gyXoar1sE}KbjAh6XPv&T*K|fQYM+jKEs<+sO8tfnVNQ!{`fB7hB^XdEU9UW zW#akfhs(rVcz(=ND{M6;XUpg78y{)LTNOh6%`&Z-)piB&brXJ)!5u%Gg70GB!6O$i z<_RI0hut?fDCafbs1D87>J%4DgS{%LY2fAoZgmQYqndI1{1d5UXQK34kS{Ms=x?9* z(vXi6npT)NC$hD)jSf&EAjxqDppCY(s??a05G1T$4)4LnS8MG@{Zlh9eg22V^Jpx} z98nm*^hbYk#9`{v4WHVH!3gC@UbsU))L21jD%_QWgJopoYS>lb!dJUK1a5&UD1a@S z_~%*=L7FCTBsN+&Oi@nT9%m%c0wd*P`LN6P$VAnUqLRT)rXIuz`rsWQ zD0QAj?e4M76k&wJQ4~&fug6D$@!Xdq;dT#5L$n}aeF-QK`0k>mjD3CWb90(=L<`lz zE<`6{-QP}^>F22Id83ZC)@7A;cJKqm9a=a!zyb@N0n3MnLJ+tYK2I2V+j-b}hQ^F> zFWsCD+{8RCvYmYLGOp4!60YjO{`^@lLaF5UWeW2$>wns@IJN zX!KTOd-tYzk#4LI71>_nx1pX7_o+z~@0HQTf)i8S_nuFxyb}I2Pw>8z+ls%`shJB_ zffMnMD9>AyZe1`FZkUh-g1l@ONjQ=FF;;kS<4R-IApZku{2fB|*d^Cpg{g&H+Na*{ zo;6v1riE(+Y}Jhe$tbdYRfwIOrS(z8adaW|jx&DCnS*SUcLH$rr)>#4d*oVM9?VCE ztr}}kgMtq~9x+bgrX*1VkYnV^i#X-V8hB2!l$0=@Yjyhw**=iUMvv8%M*JaF>sOx| zsL5v^7xn)FiDa}MDs|rHC@1@$c0qeUh%X4hk?Vw*PK1S=htL~S<=#Y95B>k`?`i}X zb1ws|D=sY}VurlG)R^#ktpLLb-dO{7KvI65wgsu@e0E^KhW4vjc%j*9IDY;1oe&w( zoOpL(sdzr;^(!IIhGPVzA~XWJ`)&dLn`_pFkgdk;v4Y=+y|(i_83p1H*Ht7NgYWvG z_uay57F#i2ricbup^-ejUA^7)?mGB~5y8A8xnRryBD^A(p8L>Fb2!?|g1&vXE=1AH4M$ zL3p)obaI}-eMxQoAtb~oTME@Ip#mM}@x67rF__G{R*3BVa5uj7Tx}Z)Eq`*6rQwTA z2LLMRCfI$HA-n7(zOh7cBuB@Q77Gv_9{@i3lxLDN79_-z|I^_?yt!(J(wm$K0o06< zp>i&8_0N>y^<37D_wbMZ=}xO@IX@6*6CPQ-UIZ2a|JBDbF1q=J)iC?#z1vjHr03E* zO-pb0+#noWAW{_c1XSpDuPPhM)Q)U3V;>EqhT$d@cFMT=2vwy0aV|L+NRxc=2Ol1B z&6)){O>IQ#(!#H$X|@!INZu*u(ty?LNkCjX-VQJUjcn_KTFDl`4B&2CTrG+eYf?7{ zJ+wWw)RnPGf7#vESNYi+pi=Z7ZGM3@Ju{%G-MJP}di)`Lyk-e8_l&ZMb-c;6=!!mf zK~dQx)vwneQLL7C!ez*+}n)U+#Uz&;PEqn3rY zI3@HsTG_d4EJITypZ1mf-*osLw?1%B3)Mh_Us#O3sw@U6bD_VH$dC*b`v(SnZF|B`rP zx&CugwU8v-1`ygfji$@nmV~#^u~63Hll28x<^N9+);C2lNsfm3`Ss(IpDqhK43k~n zFFOn3G9~^WDy*Z0Q%oCu!HoI8=2}jF&$TrEAI82rkm~pS+a{7SBD=C@lATq`9+ADr z$=)k_l|n{l$|@s!9D7q_6=ll|S;yws^xUUUWu))#`S(P4pX=P$^;*|Wi4J}8Zf*Bb z${uvN1Qq0}=w|TN#Z#Z`h3E&z za{XK#ENAT@0_ot_Z~&wpueV=?c8X8eSdq7%>rhoOWB06fsh_KzA`hV&zvU$w>Kf>6 zpRFbvh0x3F90_)uVo_dw&XxwR&ipe zb5jNX&>2kzexMzoReodRk0J1}n*^It0m1faizomB?*OjOt;q%S%zo+Kp+mA|uyNb8 zQ4aB&oGiEVm~fI?)R6T$D-(75su}dRx4cKOn~pbULp75`>8BYeB(&^Y zlQXT1)i)@pkL`+}R0!O1OZ^;DH>(?XR&~OeG^Kkvr5;7kpSkxLAGDWfauw+v@@_+? zHX61;QNeOJla}y1(cvorS}#8Sn(dM(l{6RM5L7l#9grQ@V)n~6D zpX@#Ity=TC>7p_5{i^QlXyJmr1_z!Wb)EW#pKa=M4SW`pDk*T_ijqpg0-T$QoErHG zJi&)VG0CUQNvE#DzN%f1XMZZ{1*j-fCK72imGQFH|Dz#~N6T)Etc;SU{EKq25^ZhB z|BShDPJtZ~`*@QAD{P8W)SFs_NxK^p`)t=8!Kqs+N;DfUua+iQ_qBaRkuC6HGC>rT z(%FG@Jbb*8VArc3&;k}XCr)d}u#L3ID+8zvR*JZaF@*g$4~r`Qo_sqyoTMh$HH-zm zyQ^{5y*uYUY9y#D1A&Ex~ zt1s6r;a?8!MvZd@biLO8Ywxw{iJNS)D#@meNXOcr4UxpLhmDkYNbM{2u&k;pm2Vd}cH00Gz(%nrTt2t99 z_%ITWBm1mo^991EftOW8?}J0@jX?*7b6A-}?Q0sS?i1^bMcR0R%M9lUi;aB&dfT93 zh*4F&341{(5pi#F^I2{>O^2*Qz|#*d%L9-3>M)l*@Z7COm=!RU7pbxvTnK|a)fe8e z=Ql(>QAj*kk;-6aF|Qo6j`L)IrM?9yZFU&!QvY;`m{>4_j^=A86`OmoWNwYm$=Xj!&zcRd8({5BUYbego4`Ko> zxxJ5F!K+A>qO#jk;b%w2eD8)n!sA4=H2#pTW_-_SgMllNEO%V#ZVM~9`(X6n!MPyh^afwBl~#3G_4fA50J!O_ZQwleHyZWD+N`>pmu?|_ z$9?y!d_RX!^40vXwcn?Yn9sm{AuXZ!DT}j5)LL2rsTwrwbxJ<@l6`9RtaZCcTnmyf ze{c$2%NB1(ml*cc{M}Zxs~P~3sCqGsxi9f<8j-xHc4S>J{B%ejiuGL=a*Urw>?`-P>x*}fY3dsA2A3oac?HF{|`OOvQjVQWM*k<_8^UU%XBFZPYv1*mJ7`_C3Q? zS$KU$Fp`j5LBpJ>#)*N?ONhQ*eHGA~IqeN79V8X-x?1(iHrEZr%sBn&^0S%E4#f#g z=bN>=rk=`JYIiK2k*?7jZ^+aMEL(km2tFyw#+|Z`>rk}UoW2-`JjuO<6bAkekzC?Q ziZzYbin>hPA2vDi{s3Yv0Ej2_&M8r!;jityQoK38ZPh#-$o?6r(!>V?z_lB7Wo@n` zH(GjFuhp;x^=nPl3P@PqS|lLB3Xu&FwE>@X-{j8mjkt@J8It?qkum<4RkvAp6|FQL zPWzzE3K7s?;iq&$Jdzr&Y4;Y=S1wc;3Y?iFlC9Qx&89#^mhYPhe#ZUAu(loQ?XimN z>HcVlxO)tog{$=^B!>Kk#1KKNk*P==j$nQHgNqqi*x9LvD5flXI__y3KNW2J`@yc4 zh)dfap1RGI%_<{ic^W_P{u+~3Z?GuxI_Slp-Bj6N<&Pjk-b+v&y|%+slLl7L$7TF& zg1n^aH%&cat3zP=%y`0`%AE2SB3>A;l0%!GZ*0C(_3F6tF%C^Ae9HzSAX^ycyeln@ zqt&~K_M4?47^SmP4YkMLp5_Ke0@XZA}Ag-B++;~=&-B-fv zM_asbj)=2$O8t&$eK*vM{9A-fMfObX`L54(be2~wZA{X)-CFngSGNrrf6ufn6x{rvizWzkjQXrHds;L?Yae9- zJdWB(_Tn?;@_N*~+T! zk=nK+67a1eyY!Y;@7s4OG5@S6;-%)9OM{SV$>8gN{@Zm{$8##i1VTsTTWM z-Rh)nec}uoiE48VFrCGK@1gKmxcnjYA^@q!ZWJQ~eu?_%BjC78td()Ty|E;e>yXx4 zZ0V(3oU}~%O9Eko(Ke*Y53LbHxmqqI)3dVbF5XJqKPrR#F0h!f!7B_t>LT%*vHZks!Z{F7tcNX1JzNn^~r5fyg5MWE6`WZb$>xo>0BM3 zq%YxKFdR9mgyaAvL|vi1frVjZG?hk`OVA~TUuoAbe^$Kh^}{pzO5id#@aY7|roV_R6}CA@H18~oq1U-Rls;=hhRtxrs}S6suo zMxu=UNB2n4E>BaL?tF7=UivD1@d38AyG)ze6}S)-X-C+sJ>uSh+l zbXQ;iiprM1&r;5-z}6cx<1-tpF}m!Y<=-st+bT1c^G zD^}ES!S}w3AdC}yi*54LgV`zJ+*lcTHg=_}7NZXATmv(5EVX_+SLG?TX8M!-*S^fh zg0pV_F}iLt=Ne_m6G&H#;bwqq#%!%U?DWb|AxT#~Jc=h}**+quM+&mDxiNytuLP;ddkY*LqB@_`4eA-lUI zUR#s#bO{p|cN0e@B&d$?0G{0q-4yci8S9@UK@$g`THe9fcH#7oWJM;@vU4#h5`9z9 zX}ju3oQoqa)S?v~XlH!Ua%e?0C7;zAWCqbsse}lhr-SHrC=sUz;;M-%gQCiW#%Eg4 zQpKpsEHpoUmQbK8H=NOw>uWpHO~R|4fl{sCR1g%vi7WbU?9i>KWJ{MFe)D%CN`wR zz3jb;@eR2Z9HI=uCgP#wqd#>J$&I@es?4wE!Fg#l48Qpkw)l-0Pq&m%(U@B?+PHc8 zkcISsmvasjl1d*-LMh{(Kx9LW@j}sG2q1LfU!Yh+WxzR7X`^835WL_3@DlKV@C0~S z>f3POZ|mj1V61+i^NE_z5J4z<93>Qaxb%kKe2GtQ9_B17+qQAsCze-`(!6>9=4j(J zi3*Zq0`d!cI3+DxwKW4RyWpnKTAn|xHsLWaxP#Zr``Vh@o z`wc<`d4v2V{~L594SGKge;4Cwu9^)B04Tp^5n}Mofzl{CI6%kiv9ANj1St!YQ?^bA zL@?wE|7d*aw#1OjwoDA^XvM_#uskrjC^vja=kT%v(_|Iu(gUsDR~?Tgd_LJ`l;_yv zv?Cp7302lYUtTLGk>7pMhXQOa!0pm^Ef-$XWt;CZeGw|ZcUIeMX<%(Qtb^!CiF(_{ zz;Bp@XKCt@t3R6G?xnqFMqrm%Ct_n^ch(p1g6GMjE|yOJD#}|BtqlMBx`!lAEdTG!NKnPw0GxDoazWCk{w#S#b zJyUa;@}vJaT|&XbglaNf2aUVPpqwhQ6dO-L2N2rZ`(Pl56Yuw>&6rXy%O>;tHUH#l z^=hX18Ck@@(KL1b5PdZ2nC(GV(d{>w_QA`C$O2E=@TM0`W2EUN=1&F0$NoL9{MBfa z2Y*r4ZLZP{_GSmSoxVYaFD1tao)z`F`U_H&PC$jyzj!2pFDYm9#qVFjHoZf9`^ETT z@NZWFXXAgagoemAW6!r8foy^2Bdcw(eE}_VKJq=b)Y~@KPYsZGub2XZdYE`wHn`am z2YgmVZ%~uo1@oN7Gt4bEm`kHC!Hgvmb`mi3_>An@sONc_(q+!)M7!j;o>R-ALe>LD z7oQ$jd3MY_G2_a$Uenbe9%*sE^zJPcJ3NI%T_SRo3uMXuI8L-U4>3n_%CbAiLmy38 z;5C6+4?V_l@Q`rcsOo*Tq7^M5=OkG*Z>aM}2r28`)oH3%iP>>epJzP`@c zNNnP*T_l1EP9RdfAxQPPmy>hEFQD^14#frNcmGE)*{w@pZ)bk# zT7649iHTbeT^Wpv>4BGH;G(Pb4(fRk=52xkqmXKezsJ2n#JJZ$>u4+=PIMeW+y;NP zn!L2iCueo`@b3qe*k`qR7k(2jrED(4cQRcZ)A(mB&-{AeZg%R4J`@r# z+}b+aW0i&1z83D~w&D5&`)Fn5NxvQ{*d2!n_5S9N2OC{p0ws5WMfoI__y*N^I~Krb zB~GDj_hCj-x-F*iv$5Av2Brf91xY=&d8b*++RcK~-)@sEs zDmSq?l6Bh%y%Z!^K3A1D$2QWmBEj1}a`kfxT~xcJ30kw|GBPz_rM$J+n*}iB%;_GC z&+jA4W-6h6xa?DL~ToNAI z#+>F<1ho*82=Tad^(W%JIig3}*UtN%Sl$&m;OWT6?KRAI42T zjW0R8?fmV35iwyk27-6FduiMD7i&n?Ot6q6d9Z#Rk)i^wlUoN(pWulyP}NSY1_}bU zi2G}qn$Cj11isAy7w9L6|7=a zPH-`f#7`p(5w&{aC~dkYHeI<^K`7zJ(DyQxH)AD7AYpW$aEj_A88e(J#@pWhDZYEC zw;bIVsT@}bX%f8qVK8);rYe;y&T(LQwC<45RB;`mFJr#vdS+g|>;l{FOcw09MdLVa{@>J806eq_dR7gUoj189i==&!cTW1O) z`oHNIYrqH&f#h$0Y-LPEW}Svv8#VF@m|GfzpSHPzt4k@!1hRArhVWW7AO9AVwR<%) zQ{1BB^QF1+-a&>*2t}-cMp3=_9Xc|H72}9^^aQ;`HSKw&%P>Lr+7niG;10|ZCbX$> zj@!MU*|&GJ)Lh8FK^GfO7zR1mU{P}Ut2pdd|7go8ZLYFL^~RGpt$}R**BXb({>aFI z|H;TGrt2*r(ZXE8a7$t110xoK`cpW^%m606k<`>KhWx(!yF@rT!r;%K3Hqsq{5Ru) zJ8NZEjg%6AovfnN`tad+0C8XEuf&iXtq zVD?%BMTS2K=LhzaaB1Z;tN%yq4L>^2u8e4WULWEoqvN)ngnDYqzTZ}KGUey)=fe@+aOL}Mqytc z4bfjaPyUMBZw&BJXyU1j3w*3!6(e?N1FWbr_navic~}ogX2n^kkb=Pr@HBQ)9b4r0 zv{V1lk{#6(b!DP?2x{6~!$=`O_}y57QqG&<0q+$~S#~J^8Fn;j9P(lL_qk~=tVD@NV-aFZi$DxZ#%+kY+ z=uXLHlh3|HL`SnbzwS6d+0pdFo_a>CY~zRUM_8utfN{M7WUm~{OEM8Bi7W^zRkc5B>Kz7iC7S0VzekG@NgK< z2!4FFvB6pTOd&=axu?LTx)+xoF)T(GV5s=@$gA(CK?BL|IMh@>e8FV9s^^?Tli`zE z88x@r)-$W)IImbLiaVV=z=^z6x0|^*u1%g8T458XOCIy`K7Z-!3)H3cnBKr3h-6ny zJ&hNKK^*N6S9^|5@)S)(23P3{+em=6puFO%nuODEGTC4?nO@8AUedj8PoFbE@Nnk& zU<^q!PMhOsgmU;78lfq5n6LccH4Ro%)(ha#NNmPZi-si?)0i*^tjJ_7^)_n<7*^ub zF&3&PREQ{B)M00Wd0QcB;XZ_UyR2&5RDAjQvxJpFo&PUcgvVlJiV&59!)Su%eFMU! zFr@z5r7(S?!uGdUaM%u=Vqj5K9XhnM7{n3ke_q7J?^i8T6(x&@{O41kaZ|^4s>#!j zHq&v0c`dv;NiG5`I|;Su37D5lh5|U##Lfl-Bc$TF zhr&()ce&l@o??i-_iuA;b}^-po%dBzKSp1(Y4zTwbKBb%h*;BrlOx8)I)qChtIu9N zH2LYsw|32z3Q12tljpw>a^X5!_7(2C!P^m>ZggW54*?d_;Z*l~zlgzlx++p!l4|Tf zd|hedxGs`6p%)*$NYuA=sRE#y>B`HA%qPxJQ*efs)8%(D(;^8Smk1Lf^ z{m$Q%=Q2^uGg$r58o)Gs{s##g?8_5$SV2KS%}JCjJ{rxT-%-fve(bPLVC2&_S{i4)8Rn!B6!Us+XV?BB$M;< zJX?!x*l+90JR!gdH9!P+0xGf#1*PUHIPbE%k@z0mO+wiLL*a~d6U0Lyc~>L`J~InjX8a$IOjXmh;;4n6_vk1qQBwWGC?!Pc~!NRGgq zz+_<94a^Bf;LxkQ6a#+&gL3y5lrr5or6UuGSL|$qS>+_-a_zxrG@9TFr$a`yafi{2 z@ky190;p{4*9g?%3jJ%Evj4=$(J5k1Yn2}okjzh4*$i9Ta6+f^60H8wlAQoaP;M+g zL>$3?iYPMJYbj^?#!}9GPfA-^kG1$uAfy3OU5pL`916c=^zIVVHNe#19nvmuw~O}e z&p3vg>BMK8bJg@cWL~=Nk5^iO?*iJ#(SlklkqJfjJOHryH}f*hn|Reqj1O|CwBb&~ zvD|%7nXO7cB8wGAmV#yj#-6%z^te!4b!(ScJ-E+k2E$Ks?|Yl}Oku6}LGSUpl8Av{ zj8R2T+)kyEB)%PzBy#_30rndN!$RbiR_51`x{KRL5Chlf2jKY)mZ(osx*!3t4MOQf z%d0BJU7Bf@p4RhM8h7WMW>6Sn4ofpt_VE8D%@K1B*55QvOV!u78;egh!>m*93q)VNOAdhZ^za{f|Ix%+*uD)5Qt&2c zp7om5>EPJiZH2I9FJoeQ3>XxIzW;4dKm`T`5X^sQ*ZnxU&6fRigTlC?f$cngP|RGn zcfs?+kR^}DsA=p=11B2M>6c%X>5FF(ol5WqNVZth-KFkI;=y?A3= zG&y}Ag&+V>)=<*F3<|D)3<`Ttqb9C{1!!a?)=9#8THWIv6=)N2*9OTr+TFOjJh?hU zBYWs-7qupWYy zx2X#4qZJpA@zrZk_u$c|lqdDQ-D1Iby6lV_2Jd!kJX+F|rP~ofr)@jpoq6`8TCQ~O z12Eq1Sew;V+({O=_q@{B#&+%7+zxwM(r4AjAuU%=R=0WX$a_R}Kel+bu~%%Zb7I)+ zoQ5X6t#BYkcdBRpAB=SZy`rtu{H9<2$-{G+kxe>cn+>LaIy8Pj72{#N=lO$ytH!Zo zt?M^s4YHYJ=%63-Oh6Mn=*W%x6yN-fjQPBDn0HGoI43HzoBmRiUsPWW@neK$O)I)} zBrN&6=bn(1-vUW_7-fR=!i#sh!&m>QDN8G!NqO05JrHBp_3qD*NFBunL#6efg(hfg z=sdhRxoGI>P-1CQbk0G(aoStJK z%+`RAUE_Y+{S;HpU_$k;W(@8Pzw+K$J#_rLC$anw@73sEN=dD53_NcCy3U8q=K+89 zG9#? z7S;3MCthJq26A#h2MH@HtBv|7!5^!2_D`!dG$BHlNmytV{mxM1a_~_L%pW9U>dI3G z5e%#ZAeowhv;z$sp!1Rn{Mx^%7YeF&B>Q@Dpnr3E_=0?-UzTRu`VkA6-qUJyA`r~2d8r6E7Fn=hz!Jw5- ztV?tnc2DFqAHZm3Qj|HCoi`;yE(uzixs>4wZZgxN1-m4Q zk9$&yldEa;ON!HhUJBg%7JP))UR!`u7*c3iHJv8P>ah=XnKRllt7@_;X9!>TMgcu@ zsRtK&`^%;4nZO}%FG@~sn$Sr)b>ZUI?q>36L+6jgEg>#diMQ0asIcFefqbS))Vqo( zo9nFj;I1uG`?0*#usBRT6S^Wr;+%7j^-NL$=fu3QB@}{xr)0@6xJ&hp%%1sgUznWd>j;VG7wGn7BYz}zAc*U zlzT71YF)2%jcetitx2ST6gjrXX9iIBchx_qa~w3};QK{CSqOSo$rzQO`^9|({%Z2ZQ zSS3BVX~^dLXY)UD)sg0VV#9c%RNgV9cvWnNn$vYFWwtS#Db4Ss%dizsTvg3f%A?qV z_1FEhDbzVH?>{cqO}1a742!vrGO5VvW86pQH_45J91bv*L~hI^Md7f^74qqJr&7sG zLsYAnLlp#j2hBgUG;s;5rS0=RbpLZfyzEz+;)CUK!hNlMbS6DwHU(tx#$cZ{w{|b& zx@NlVxej}Uy>0uM+P1bqM$BOA75B^Ti(5JYK9l`4muL_k1-?PPPT`r4WZfpx%5xV} zC0sZ68z{Ri70;6L4Wl4MeATWbH_Ql|Cb1yNYvs-SBh^oaHb_K$R z9<|^AVMZ>mGRPFSH98yY#dwvg2N(cv>U8}>4k7+2hnTK8y;XXvSW2t+N>6i8*8P3Z zfQb9mpA%pFU7q~^CcgKsv|K-$tDjg!7`6PUL0fxBa#Rl4{Vj)ld=zitvpmnoN#E1J zuSBt4g7yn6KDUPq;zbtU^8Qp!VR_EK_m58@0QeM2Zzkz2j_v=+YLZPa6N?g7awmAjTHVnuQyw>s(ZX(Rl-krgcCDuPiVf zv#d2vH`=q|r6u4ZTzu%c*~KD=ob@#L-g}oy9_*hqwpI0GiK&u)O`@v5=RSlY!eBKU zt6%zY>*Uh`@d+wJeM&k>A$;}ZH$ElCMd{<13AY33(v@qA{E z-W7GpIwY}OnN0`2w@?wB`)lSaRRnrJX8-CD7c{?(&fA+;e)u01L);94-?2qLImW;g z5o%KQe&MuXJAs(-0Al8gxZ4==*aFs0Qa!JawL|7}lDgKETi1!Mwek9gQ(>LyHCjnh z_6$JE17vTh8NdN8%9oww08AHEFK%M|!V(wQV07v~cXA+#=>h_QbD09C#&HngQI?&^ zy)3+3vFcK-B8ZvY8;X>#0Yc?-aIM}!hBx5+8l2pF3O{qt%-#Hfj(gJ19%|*&VEy;# zl`qk2{FYQKdX2-ndBzMm>A|43_mZhGb)9-3ZVUGX?;@!OF40vJ+_`TEl` zo}&pC7~3Xyk0V?P_C3T;y|qh3&_K((qBm$fEbsTAe1|BFrT1QLz5q>fH`}D#W1sPU zv`d8GpiAOq(zfad_!9l5J5Q1^-1VYvM9SIXmtq1*o53>N?)^nR$o>T@@| zfe-6pmg5q)wPWC9#k<0$mhf&%bSEWEj5AMx$UuE?IlI?5J0einE7&BQWotA>Z>-oV zk+QA|cIUNn>f&|z{Ed=XN%zH9YQwhQLN9R30Q<2&9 zxATSrzm4_Uanq()?TsgNVMzm$1p)}&d5h#}~*o~Sx_>a7Otw9b+5)@!mJNi9Cb@yb^2 zRJo9eqWr~!E*<+mL_QNCi`{*KT3Hs6j&$h2DT#XL3ruzwV4x{`|*@J(2vxoBZicr`zME#jzj1shauXEs2Fm*Yu zh&Mv|4TsUXG?AN`>(3$?l|~t7gy8a0Ub>4)0(dRGvUrZ}&1$Pm%PW`oN1+VTtVnKb zcZ5~Fe6af;r8$l;VUagF`H^p?rN5ZBD0?xEk?Lugi#pc z%$rPiSQdJFS2I(wmH`4~)Hh%kYFBK(da@rU%%bT`taeVI{%93z4T{cU|4c+y=9>%N zI|qn>_JEWK*b+DQjeKAtdW)T2Q3)4pkC_POE|_QAii`OJcxRM_84ffk_Q_>)OgSo6KY&H4lw9@=c2&8QG8!7MH?9=8) z-mSNf7ksb$Us}ZOzqAN(^O3ZOmU9a$I~GWbD4a-(ymurfhC6EgpA!$@PiG z5XAPq+%ky)#(sC6N&DkwFZ1fNKh0hun`W!KSO0b=*!^}VxZY6I8VIL3?oROd=}s^n zPQA-y_PE-$BKLF>2AJt(gUm(8`&v_e2AEKREPjXdKUKLeXE1K>V|(5fF3^=D{?e5b zrS<|H58joQoD@aeVgf?Jmc4ArWA+5+@6bhU?P$msCV}Om@$s|>W%RA` ziBYe`qp>7^2rs%Q=rdTY`sk@0kl`m<7X|g5b}CIZfc@pFRt zoV7@;aL~8wi~U40+En*vZI(;UW_+}tkgU-?$Yip%*~$R$XqC_5h}E%aQlo(L^FsbY zA!V9qq1G@q0rR~V`2E;d|4qdx>iE}biFbuXzP>o(nk3rVfrjggVd|hkmBAtN)=}7S zC9CS;qHm?Tj>?S<*WfA<6^qZZ=FJp4f1%x`b_=58dLkG4oi~JFQvum}6 zdGNazMILUvqonVtcYVjdY#D%Ehgiopx_e#Ix}XN;I2|8=>wIWay$SN@K~z4+TC|HM z_t&*o#KS_-zmK$6jV`=Bk~_AGC)+f~0~l8rM{-?)fn&JgUHMlUlvcMp_OZ|8-@Pb- zNaCP;3p=v$e0~xOc;XO_>2Luleb-TCDOy(Ho&x1N zr*vq}=raTZOr*@aDu(|@hklV2)TOUSX0%;AtysIg7S*ZS|JCW+C>x`X*VvCewK?Kf zgY{y@X=!ZisUZ#GJ12b?!%oPwwtG5=(YH! z+Y)UmBsGwnn3o0>qeY(bjuqAv0=<@cKeL>mJZm!79#S>8g~tmxIZ>ue#k5;lp|w~d zq0j)~G)#-VMPN!{f)ImdQWU`F5b;C!d=~EU_LUiy)vUg)d)pQEVx;*~f%Eimc3G2t085~pnn#-XJn5|My z(vKetlblUF^bd-GT4rW^QTU|!io4lw%R>A_6+hG~SeqeqS8el=vW$FSKtFo(1=E9FL77%R+d#j81s_l@x9k?8xl}sY}YAPyyLSf2x3x zD{kkpYq^v$WtP<@AP9QT>aL9p}^Ij#?vmMLn<~d$H7!_nqV=m*A{LH^RQv&W1z9p-mp?pi2GoK%?|ugN`@8DG`LOg`1K zpaX;a^nIn=(W^4XLle)CZ9bkZemRuzD_wj`gN6|*9+-UG*uVbM*q;dJeXg7;R5%?p z5tycvr*I^1V$cln2y?g5?lrV&d)4yZl5ZkG+br_uW`(xjn-$tzhpRp@%C>d;Ogn>> z?#FcI_YlDkmq9SG(N37bn&{U|xa+7M${1FT=45>jNX(DhDmV@uUxH~eOf10g1+eik zJub>Y5sEW)=`hRLZkv$N#_tyK;Fz_a-d=8x_NDp>W`=4UN_o{$eREz$Fh{^}9s1<* zj5XRXld2Ptfw(I09MnTs#OCvuFKqcj-vnKjvEBUeD_71 z(iU-%Vr7^B5k{aPfsq0NgN&y;lnc_|)eKaurE5$zZszjrt2w0;YrTcfy{kml3|kHS zpp*BUxH%A4LsSJoL#RQMnMb6jO-^su{kv*8#D4>2_)LkFqf~;H>T&HCg^83uHo~Zgf^^m)L^QbJM>D~uak&_Mh@&j0l ze99s|d1b~OyN@%bN^S2gXUcUiBlk9=oB`^Rg!iQ;_`Ur_REoX`^GQ4I70_Y7gyk?P zT)bW93k6R)vN2A2k>T;IhpKJt4b#=qIwDEUI{+Qu*^EtMQiu}FX#L(p)S*V#SY#pj z)WR^fA}#Kwzy$3Tvgt3z#M2^FpEm^o#ogmgb-&dspKRKe<+&rOkC#B@hSnT{+up&^ z9Aw)Yq@`WP+e@U9-Z!upcro*_`$i*V*U-Q^EaM*_d0|dfPgN*iwQ?CP8_rpGy${K} zZig{@^uETK2L5g-MZyIY2qwOf`-SEUDc4Mh;oqt^{X2Se@MTUNPzQwaNq;cop4Ok;a z&}xs%O4ckBoO2JWzR*PvKd$|?8rt>S`a%<)@Vf#kFYLhfn3^!>zkBcWy5Jf1%I5-M^hM~zA1tb z_P%2-z@AU+Qt|Y8tu_mZlVy|?wy^z8Tff4KgouB&=J&=u(SvbpvAz+1JOYx*r#&@F zs0-bQr>8M~Zerc|xrT->Bc!m;v_kU4;fSEEXFtBA7he=4@GAD5j6B5<`yz7L@GsTMT0C1i36<-~*TR!_!EpBRbTfak4lwh> zab##vCI%L6$o*ydqWcrGyT%$$xc!~wgblk8VZ#=J@yQvjIegRj&R_Z_qmTLMx(^aN zbt)Pvtr)o0(CUMCPU_Bbr#9n^dojox8fNUrbMU|>pwV&*v&7|@?q62^^`)JrN7cvo zD(JGoSVQx_!}GuYIX-2=!SdhW|6cpOOFDS%dO5AY5(6L^k8JP21lE`ZnemfDA29QC z;m0`E%tq=uf0%*b-Tpj^^_NwFd7x{a!0X$=KkWQ;rC3ss4#jdJL~zq>f)EW1(9{f1 zh$4kz;Nw?p)s5RE5ebo>5ZUA){KfBVNOf6$6*bKP?uX+A1+rOk7_++Cz1x+xfB6T0 z;$!PGRt-CksJUvmIN601JPv%c8$RTJ^VR-@GFtD<$qfYiGVeG`6Z{m6QoTZ}S4URJ zRTN{L5r z*NvYJ1x0PbG_;a;5(~E$?~^cu$cBm9f@T_+-1&VYj>M8tYX2o6vB2%Vt(P>A^v9)? zCSj|bqJBxDr18DtW@o!hs~^!DHXvCe2LG1ao!yO%JIWgqKxAU79^@2}p$f+`u*JDDRGS2l9 z^!iv!-$$weQIf5Zr~y~Tgl@HdrTPntRey9h7ofW}rM@3^<8J@feuU?HJU{z&I~CP7oJvysc1fm)I@s&qiZF~{v}Y?%CQRGZrj3I56|wILCWn^;K0iSV`9E;6n)Cu-t}7oU_9jU0Pj#qDdFh)EKK80i zK|ApIv1XW|Yhi^+5Fh)pq)di~*2(N;Z&eg}4X#4{^;vK0vE8#ZPX@Zdk|UJCsJyz| zJ#zQcxoh|7mARV(^+E-&+5RVa-IRK3@e0|b;+nKE50CFrVR?_Qd#+UxvNDfRN7GY) z+;sIY{O-R~()%-Al;9>lpqUu_LC3-?il}Y&yigtky^9(|`v{{M!?55lVopR``Td9E^`wu#~abxkfJ^S%!S;qK zy>xwDZazb5C42NM@1pSDbb}M{vIyT5X~r2hYsmAz(ecuYJ~N+`iTQ;kN2)cApF0QrzL9*14Z8Rc zM*pWQvud3xF<_qEGYivds z)dPbJYM$fnI?@zqz%NF#`gYDN#6HYfdqR-HuO_dCS;Kk{c?)D0$K1ppz~~K1Q)zG9 z=Pm$k_|N?z^su^e9GrGR=j0k^0Hc4;d?9O9k*$J#wr!OjEN+L15vd39{mlJw4~38I zY!mumQBCwUv)S70IXS26*X~stGS@{_32&}n3+44b*m~Tr-IZv9M@Mg>>u&u+R(7b( z3d8Nx9~VHD_{ww(^kuLyMcF5FUQ(GYFPHbjb<3A$hN4|^>uP$`l;jfPSMZ+)ugw$& z*(c%6>{9NGRGHP`F?|>A4_@QFh~E-4kh5&HP~L5Q;GVipTvDRFRVpntMztj@9KF*x z<#g>!Y=$XT+eTA^b(#8_%Ec{i5%jhc)Eb{9&MnFZN^ZNcIP<0%wD&#F)qH(Sua}dE z99@o~hT1Eyzn|7AMe^7ocWvt|oG?1)TF7wYcxu{c0(m@b$ciEbna$1X zf7bOIrY}_v-8Y6dU6k~1A0e4Yz343%^CmH?Rs?Y-gC&Vl?KNnV^Q(pz1 z*qfAhk1ivu`Mr!Vbp8_o50MjrdDy8Gwgyef#QfkFq?7P@!AXCDT&VbPN!&X0U zOc2*Hfz5FiytxA6OmYFE=0(S?{v^4T8El`#f~#M$WFL29*TQdt1p9#z(PglrKN$(Joo2pQ+eRO)DRru(os}2$*s6x9;#)MZCj;PW;FH;93J0O$ zJfqNr;Tn8IdU+IgTkB{Pg=ABM-H)z(2c7P`kK~>+=KmnE_lhJG1Li|6pAMVbxmMqG zZLOjHvq?KY{)q3~eVWD$lFOuwXI(ZPB+(ql%x7a9`{)#xj4N@)R_wfDy}VbVzaW1A z+8;@+Zm45lrvdhdO*MJNoUCQF!`z)qcBP8=i&eT8hn}yg<}KdMF0pL&e#^)+X-5_k zQZ|QUdV-jg^zVg)U`79hP&i`q<;e@b42OGU76nmjWwqSj&Afh%eh%h#3%eg!iS%kI zp1?(A0qNMQE!+0_`O*u1eCKQK5pg1lXP;w-BScU_H>Wbcl+@jYhPQX*n07UI19$0f z$x+kqw4?F)#LY{}?F{u)Gq=sF=&^T6W<^zari{!vdzFQo)h!i>Uqjr4b$>wio>5{zjwI5Da4W|Q1hNgj|(-g?EqwP;qK0?W*TWM(`s%O9b=lmtIw<=3sPu&!x?b);P zE_aPCQh1amqI4ti%u5v6frzwq-j+uJH7WVTH1{*k47;(~MuaY-DSb-3E!y)K7*?O` zBqezc3QVrID5-61E?W;}r96K}Y+JF5xtcdB4NyKGD@~+E2~?n zCL%4)E#b>yWmrX01a_QP1YZ)C>0rzMwm{R&vbNhlAoBh;jt!05)Jh1pX^#hkL>9QL zNkdr*rqbEMC1KGuUgLIMdNMO@@;;I@*X!tthmH(bw^>2$o0&Fm+lH~&#Z&n)2hq`$ zM2QlOreIHtU&9?w{-JO_F=v70{S##YRU9K#tVN`=3iRfYEfgxcW;CFaN@jjXJ zQIU!Aszr{5^)_Low1B`lbTNh)FlCl+nBOG5GLXGEVAhjzmq71kW)$|5TNF1CaR|vu zJ0)C>$UFY{n*J#z`ro)(PzcZ6;g<*p-xtpE%wf~yKINNxip&Ln`~0~Li#;qp_})bZ zZhmv%=3mfC4yS*$G!XGY_LS?Hp5C^_3W?s|!u7z8uT3&*Ewf`#yVV0eRGAN&oLoN3 z^ok6A9~(5dwC0$Kew(3C==CEtriPx^BxeimgA7ip;An^Fn}OZCvn@C5U-ZY*aEUTp zjvQluqzHda9r=U^1QM9j_DwRSsiY@EQ*+*ibv#oJni+GM7frlRf!$B$U(LhL66m)W zYQ^rg4Ihso8PtOJ=`J2(PjXBpu6ry_8Du*m3j~V9@a!)^_ z9?^b6`WpL)gJw@#hT`0(;?vhN7q-Z&sG-vu(d}=E=Yw*4t^c#kpZ_-+VYL297Y9oP z4ISnHYrShh{{-0QcAd6=P2XPgRTN49MGQFqrnvzS_LIDn-pns$r7)G^gkM1M1gO zUU%Y=5>Qw;$t0+KZn-9%$29h%#cxK4rT@(cG4`7g0$J*w@^mlexv=vpEGS6IUIxQZ z^pYAA!F61>;L0&m{ja(OrSn~RX~&o$r?9V1QN5Q5JAVVfhHE;yOYmM=`xE%6P+!Mp zwYG;waHRIO#6K(jhb>Z~V%qO?bSZd_I64)7KjyUiO<~s?1HkmRG0BG3N&J1j(|VG1 zpaZ9r@Hg-gF1pWF>%aIA5zxtD8(~gkdi5E8C&Bkx?MLw(K(zM<5bcdSG6=mq#yujX zOcpx)T+)*K8}~>^FxaC3yR0(Qu(RcIQthV7U$g}%Id8_;gzc)hhadd_uk01;ru|3i z9jy=PXI)OpO~j?{$>n#BC-8h}n&sKh6LAN2N}l`UTH~Kl!=j7>kHH87shW%D^Lc=j zqG|e({!l*4$0i5rhbQU)1B99lF7SD8V{;{s2pe?YkiAj?I}z{;SYzrGt>&4iVp1JD zI9-LQZxb7SHH~ujp<#4b#_v4R4;WUrX0M$%J{bRWKS_)LvvYyH98T=Ii(!7RlpU8ljN-U$o)0Q|b)~%dj-W zNSAs97^tM7-O>3IjgSYOZIV+kl``}pT#m0!;8K>jP%-RppFE$P{SVlmxFLet^$5U;|GR1d2Ef!K44gVE97xR=v^=K!a4?B;!QX)z}M#iEnw^N~yF3&gI?;*)AVWnf`e(3H4gU)GTvw{TWMz-3H^gU)46~6hY`%^R zkB)12Lg#WE55~3rP|Ha4p&K@%u#BSxoGWz3qIPs-x~~4NTX=crhMiZgAaqJUNsxSH z`*pBD@zjZnO%A}Cw9XTlA3qcP-TxEn^{F@1K2ccp-T9i7NK8S_gR)Oo5-)ACeXRp3 z7a0GpTRpKK@zzqxiy^yT=hb|O74Q;a{? zFy@}&*Glck%`RlmGxD>M1Dqh6ZH+(wd5Mr)Kx-(4AH)>>?uJVc(78Q=Kx;{&lMJ+(_$+m{z=lu;rqR+RW3JwEuuxc-#>E z8Ui;33jGg`3;n-2q;Urv7y9qYdps)&m(A0c9?!<>X+Qo)N(P#+5uYUOb8yWmkoNCd zn77}lSM5K}?i=O_dhPrzRW&(5FYHp$=I#Glv6`l;mX5uF^056^p=#&zyhIHJC;5%F zSiT2QhA()w?*RpbRK*=EXMWS-qK@(yH{3yM`RR|c8aIgBp8p-;`8rew?PU`b+v7Yk zS{koJ#xV-q^#qb6rP5-P3RcolJgJb^9RqpH=>zK$XADt%A0JzU;5@{dP8| zI_>AExPaw{lM%QRCz0b#o*BY)ZvX7kQRLW>{yPi9mjmz&KV3zNSGbNjj|o+vHm6RJ zjJEy*X~D*?tO_V0OrQ21y#5-|Bn$ZC2AHV280~-I?q?JJ!rhnjcBx4n2a?e@0{=#O zvsD|^ySV7>fSib54({~r)MFDu{7={;v)8KUdK7)l)Kz2tbj9ex|8H09o$^$`lO^4l zO?c-w9Yj_9|D}Tn-T%e6R zTwb+thPk5*2ZU$U|6}V93Eo=YgZ71^>JHyPy<$>t`1~5&T^0c7Aevydf7waoFAw*3 z0-l*y|E7bGQ_Fgvapc0gZgS)y_a^HyFUz&#T~VQf)OuPq^~0%f=!RC~F5s;dnE*HZ z#7Cg(?2?7H%h39Flb*doq(MWW-UfgRT!P;X70EqKiWo6c?V9{L%n0Uo1s^)yxD&2q37Ju>Kl&k@0i-S??m>4mzj_-f7 z+LisA)vof4&Jum>2gm;)wR;MX+8N30vvx^3JJ{J9^wn>&{0D=McP_x7Q<&(3F%^pA zCzEP_9kuwpb~*ueuX{+H)4Yx`*|49iZxF&4U)x6Q4{L73p4`m&`z*Z42EUfNVhB2W zR`0)E@kI%C2CKx0lxID{^}qh6f&iY-bGi9ryT;}Q@^2}Na-Sm>zQR=GW<%;u9n%(vIHxC=+&ft4l?^|<_#b$e%Jsk0uUqJAt7a^G#NG$ju>_JH zM4vnWazW#c9qRti;s|%Z`xm>ctTF^DQ@{T&XH3|-Hh5JSmN@XgTyeK|&4=?u!}lYP zj3F)RGgm@?0}=j?@3Ku?UYIb9Z`v=EzxaF>B^_|87&!Icv~BE_n}|xZDfpq?FqXR* z@C#3MLg)C*aKpz$AJ;Elv-8b{)R?(t&m(mPJDkucSi=**SK#>@Ut#Lz(;}hsCu-t2 zMgo&-EpMMVCP{q1+3wXDpjU8e0fm1%)fw>bYJMC*g1r)$EqTi)r8>oV;abHSDuqZi zTBf=9GEp@87**!fxW`jR*dR&|(Rk@a=PDZjW(o3Kr{C)k==gL@gWd3C-O5+%ZRLk7 z*!@T9MbWlItE)nrqVIApV-8vL#b>|mWUs5tT~)!6DxbiA)biJrJ}XjU+?k6w&+~WPf)KF5 zI|eKkczFJu&FgpOnbx_!ieAV3BiV9!^?%epUrpE;xj*!+tMXZtmP^~3vwBaf@o^d9 ziP7r6cuTpV`*$0*sr^Utu_{l;8#jKc`LNxRqNz1Iqd#~IGEq40+RB{;Za@n$Pl#@a z__74X{a3C900hR^S-gIwj(uejwTl1$bHp(gZEv=Ow#U-$`|sw6WH;O>+Pa4@esq#_ zhl0EN3v5*xWYe#qW^V9yB|Hkdzimq8NUc%aE7!!iqeP81)hn;csHqn4McTduXxT-y zj@jo#pE7(qotKe`*W`~c_kQOqz^tCmxTm?EGrh)L8>MD$;1Y^)|O=DdSKVD<|8{QNZtpSY=RwIx;2-dtO(39rxUTTfODxN|zX1ZPk$3X({|z}C$AO#_Z>DPtBv0N*&^mF)?1>N zaT}Z!ui@_y5>EHdoC&$Z&U}*M;fo^>Ijt@|GyB%DO`y{;{F)wqQYCQm;Sor~GxqKq zC*1nNFd8vqWGo@kqtm5Ddl0P`UF+mAEIFgvDu6E9?-zQlMJNQrIY|}u6h}pplzr3) z<_yefRzHK-`Q&~f5?)8#Ss#naNQz|Rk1^0X7}t!hUG)pOc;(cY66Sk@=gcoKBwY$q zZ;;ZTJnP|W8J%O<~UR~Nxd9kAEkbA_v0z#;bUzxADP#P>2_y zWstpG7rZW3lEJ6Unz6rJ2<%B6IYST1b~wXy`8D;TZYvKp7_r^BbX+Hi-ENsuv4Sa5 zQp9VdP~Wf3aTd*UQgrFk$r3w;FlPcL=bbi)vULa*_a@X$scbvDn8OG7k?ED!Tj%OX zUnN%yY_Enc-y$L52)j@_R7}eC3I6wJ1RhP{q_=KuB!gDsQh64Yy#v{(#YNM0!zp+X zIgiRq>oMzV5g~t4CRlZ^*ZiFCct9&5+{N!<>RGMQot6?tr$PgjNSfj9lPf*{ZsrOH ze-#_=jSH6@ksE4|qVw}f0=GJlF-1`{?P1F{zXahh$!M`U*n}_-fY2+gf6Rcm0;fU6Cgf zRbNjiFEo1VTvB7!wm4iA%pEsaBoFV^gP7T3wAdncS)d!)r!h*`XTt|+Jsj0zYsXaUi&)STKRM5Cvt3mmY1V=c z4?{{f??hd~dGpqRCqQ1Y!c`D_Qvqyz^m25<1J%YA>)am~CE<^k;;{P= z3k_ly2S4LnbQRkO(OyM8!BmjW0he}#GEhm07x>LI7iQnMFvK%sw-3xq6$9bjrC--R zkIJ-9$X|(JoZbkvkD%g@czI&O=La8Tl_@5wHhtf#DDu1c%hjX%g@vJBASSds$3?Wu z$Z?AmUfO)4MVE3p(ji;Dcdo);t*MrV{GsiY>oU8jJ-v}*A92#YZOcC<57mb}+eVHa zFX9u&ynSYa-jg#Vy^px>N6)vt{q~tXBNOEMLJG*)TR-cOPuS5uZ#swcE}uzWY^Vm@ z54C!O_aOVNPuHG)PC$x)48x~8@pWkFa_~C81wDwp`6Z{e zfVL9-5M7PAjq@bj82=uwxbsvY&TF9UQViw(ot*St;4(E5yubFVj0X+Nqi#H->2s28 z2KR**sckWK8nT-$==3uU!Am`KtGIap!zthtuL?8Lk%vVhZ@jTpnl1#SRN=lCW4U@12pwqbvo^ubiEoZto3IHa0Y41VPAYqBN;UT@9?#eSp9ALOOT_UQ zp0}yW%x#Nnt_?lq!8mg`dyfrfTSFGq!gKf*mW926X1EE?8&M?5ZkGMQvN9!_hx0i> zC%>VE7)d&+e<*GEjxH+Vs2mS$?nR|&%iw$6(mh9eN`)qCPw3I^y zKC+439916Z-#GV*Z+4Gc8YL7(TzR0PB#knNI^;UNx5gjJqd0>}Ck5~{Ed6ewCm`Zu z_u1_s;Gwy}0qS!SvCPwXq3LNALXW3Upx-YQL$$q8iQ%$oW$M1?3HvBjKaRna46fR} za#cUB!PMg`;BTCRX>gavi8z63+*J72wB}}Qwym8YXkOmo5?>YGnRD^ZKDD&tHL&h{ z3gXfkGE*~@6c*c)~<#OymejAzLzF8<_IQQc*E|9(A)xj7SLvnebrF>m+kg6e%g z&f{B$cz9tAVT^!g1U*wki(`}-2L|VIIv#SnfORK*cVi4m)dkL<-mi^C>F6q5r+k|m z;Op26d=}661M#BGSH?^WOs9vtfZ^kv)#k(Re|c#$fU>p|TNn<5k*<$d9Bzja9)Vp* zPntohdz-4wr#WPKnZ&58kJb2ega5|FxPv3Ksc z6j|Qd1C%N;`fS>@+bQp0q>^Tc#dE>8{VSPJxaIja8x=6L#jfyR4s`2#+>I1l$U>;b z+O^&l;iw~7i+h5m(qphT#^gb@Kx5yvF%UP=vdx5aZM-QIMjDZGn#`9Bpbl*CJN~>G z(_yC@f&T!#sAR?1sEnCB7)w70i{h(2xOm(HKhB>Oi8PzuYxC^f#I{TEl*|kob>Fpl zgEVTn_iM{N-*$x<$tYFH9m{7p;O?tT1Bp~_TQ*Tg^(qQ*7FD1zTo^d3fA}-zxGVGQ zTtrKbCu0MF41Pcx8Pv|}8%qc*o881Og4cD`M_<9<#z)Q zY7fR8|7szasjNoVO`1(nK{*J4V`A{T|NDon>!;`mBacGplVzY27HrgT5!L(g13qoO zugiu$6W1n(xiPSh4~;X@Huc@MCZdicGYg^fDYn;-_zc>cDP8j^b%N(*Wz5*j+fOTP zHESR2DA+x+^6LlY6td8LTN;LdDUYS^hI!hk7$Y)m2ViY7LpeR8N2ifS%FW1!J>v3X zjyrub%(MyS3zwAyL}N+moeBXA$;@&RBR>>{Quv2yc@7RqX0DZ ziTEWD^4EI+MXm_b9zFpsP&j+68p^zlF}hsDbK1q_e~Om#9b<@mNnyi!x!{^OR@oH( zY%k}=k|y+f5W3siVIN!hAn?|w6tH~B`ZUh)%?{`y+42q})WdACCWmoyBh*fGrHu1N zOh($cpST(9ac_ppKGjXI^rv@8Q1Hrdz-$AmO~4IZ3Mt=x&p?s=6otOVy6Lx~2XVB$ z_KGjhU(4 zz+{c`ruRC#sVMjyeNgpd;1l-aQT#2>YipRyxZ1T@5GT=6MLCKs?brQ7@(-?84k{4s zrmVur*1}Gp~~~0{E|_fgKdXoP67hF8RiGc z^wsul8{YIIufE?_#4@30T3|4s1rPM+L~ExVU!SxAMp*L$rM=zn18*d+jdhv;Y5-Eb zbjWwG3#f}U@0j-5EFiwhmD{Rr=;WxQ8y2@9YTHO<@W9*}BTQvauv-^+zd^>S8sPnv zySa?;+gStJyT$Q9XFG)=!o2s;xluUjCKY+XJ@nRu~^+%cQhc1wVQO+<~?ru=?RVxsz>SSA7^_r({`-Bl(g z=vF;CA$li{-6Zx zWI)!KLO69x;|EZoc48~^-G>v<;1IIn{>=>4aXZO9^hA{RD$tPKu{1BUbCMl6OiRX8 zRNa5}l-)kN5d9uBqO|oBq$;{#_w4}q_8%Yo)eZL8ZD9KR+I%5broeIEzKHvHhnz-u zD#!XiQ3gizz3+|Wl`$~0^sWsfY^b1bcIb(K-4gJr?C-ESCJ#2`C@xF|Y}OC+(yG*B z!Wd1Pru>ty8A}5aEQ=2U^JPMZoTwWVHsd~>+nK!{XQ2;jfj>N2rIPpRxi;~``aoHl z73<7V>|G_h2TUnWmf?AWp}?P_bRr{SAuG?vhV1wNJg~OING8i;)SWStzNCdnG{$4X+kXn%CsquBAx4-Ncx;??L;SYnx%fNO%Bnb*gvf(-=ZOE3~^<=6^Mwya#wW7 zPv*6!M|c90Fv;`>SVeqq0c^J8;ot*1B=~M|72{6`FMcX)nZSQWdM}yuz5tlTC9ky> zI6>xW<~zUyMLlnT*9zWgn~FS=tf4Y7cL_YU{?b&@~*L|8*s z{4Za`2I?vTYIz=x?j|VtDyv@nz5|#>>WhOZ{;-ay*BJ+EAeXX?$6J71G41Mu-8%%r z0mi-C8I(V53S&*{K;Vq;v1St8^fD-g;PI|dKsDuVELlO!B{B}?a%2do4Xq9NsveZLsTuIE22taHDy?$}G$JM>b}Q0?9Q6O?r* zc^#BUX~P9-h}H57^`?uRcQ$%=cvRG~yo!XRrw<}|lvanWQ;kz0OYeY;4HnVS-VTq) z_iKh@(>SRkH=!^R2?c<`d|66sQog-y{q6R-I22 z&Ds{EGS7xC=)NSHT4A<2wKK$d$n68LPW8T3#A1Zoi;6Z`DDt5vNq{JRX;{thMWA{*fMKzkWO<}L=meR@Gl&a2pIMLaUG*FaDeqK+(c4m;5 z$;xZIe(4J?%z8(2F|}uXaZHG_d&5bWtBHGN4468`8Ky~WMhz;j+OZnj0LC5W8+{qX z5*!mjN+djnnfV~HDLtd-*@V4)6c6E$NABn7lc+@8b7uB1v!b?drF}!-8y3CPz|keL z_KJjPR^JEGne0-O;MSSgsGUS;5@T`fc>1`FN}P{-R&J{;&uX=b>3cI87yEvAZT?F4 z%Ki_TQq@?^;K~P9cB%z_eDvH$jP9*|p0)*ak!y+ssz?SYlN)&c8j*Lr#KJ$qB$R_vRT^2>KbLVM;9o#5ImBVw#moKMk< zMbDN$9k!$9^L&1}l8+B|tpxScN7UrcZeEkVagPUU3qpVUu(h$_$2ockvf(T? z$=Av(ID-C=Dnd+wVr8b?gL|V6)Ct{i9GJ30Capr1kp0@kjK;BXa?7HLI5%%q$Wy^? zCK*g(VJBVRO!x1EmUo4!x6;zbcdME!En6Uefc=kNd8tgt;_?{pd^@D@p{7NBQ49Q}xg&ZLeS@u9H0a zX!6@(L{zV}26}d4;Q5A>gLj7|8S~X+6I|rRIP&ACZcly+#EY^1LgGc(kCiN)O6&9^ zz~qjVBo}~e9o+7pB9uIee=~dZJha}KII!8n$k-iXuB3a*-UO$uTiS^VFM9#+kD;Z) zp>y_di(9%#qOnp$zki=%_2P{YbwR%#HbMk+zXXY+9PV$e_M`o-+OA%#gDqVvLU%24 zW7D)721tNB@bD1Yd{I&{nrKu}&EDq1U=9y$_BgRI;K7C}s$Fgb`J(!-UKJxIU#kdgYT zpeqDi!Fu9B$7b0Z@SZfZ!oPgY}0a$ z)wz`BahbmO5rH!f3X zykw4A)(St7kcr@X`f7EuFSbO8Tzt z;&E!H#IfFj-TASInOfH12xcbXyPH3sXcYF0dPEq141H)9oFNg_2Tk9;?C03Hhp;Hs zY$|zY*xmM(i`(&CO^jgw*B`RBs`N$gxTER@UCt0pt|wm)wVP$ue{{uM2o)+8A2@JS zIdW0|(Tm0gl>CuJCe*-M-Kg8G!f!5zKNib`95{*a+e94p#Q4rXid+f=mwpj_6nQ;T zOF=a`x_I++j*nqg(WXtvgJ(h}e3wseP{;qGJxK`RRb#Qy(l&4e85O)cv11()dx_iQ zK$D+7RIx53CF_y6t>4o+hjGIVsFF$9ub%$2w=>5?g$eTPYbZvFoVtk=>QmfjmLc($ zkh@BAQv+)}vbXiu=;VXCV(;g#&ibZ*=`%r(_)P{ACw)&o*Q+{aAt|FZUoY#l6$bf*jAu7<@CuogVQYBz_4e$I z6q#)*=|iNVEux^4;yOFNyG;>pjUx|FXYz6iSXST@w)(3$y2ejV@f5OlTXKDwQ0!{| zyqL{DWGq8OSBF~~+%{p(B`_04vL5O}o;3=1C~T?NJsNMvnq|_JdLs=re?3Vi6=%mf zy81gx(I6=b`Qe2YX}~q>kc>QL|H%-|NqT}!iO;XTD&Lz2At(pd}eEZW3I(n2)y%gJXh-A^r3VP zJ2jpy?`4!#k!Nhe`H*|(3~`U2+h1<6qE!~6{`zf_3JE)X*f4Uhl2f*E%QgPHfg(K3 zr{jua6x)WeLcYbS0^xK~!BcM;QO>A?h%yk?$9CC%qhr0J0AX62{3>Y_(>7JE;C#?- zEdQY);_<3swrg#0hE&01COHtfItx^!Z5oP|C#{U{8jqE^Zao?uBzkQ7&V@nURdE(+ zb#HIRqwZFwCF<8(&wf?$K^|2b%j`*G*HNM!(yH6aI0ggz_LF0-FUyRx>?6Av5SsaC z&kG`kc)WV6ydRgDVy}f-A&1J(Mk0#HJi{K!2NloDmW~XoJc;&7V8wgWMirU~T=316 zNJL*1zouys+?M$fZxL+4^u;58qnOk(b$Ujl)?tsV;vev7f!ZV)N37kO?{tgO8Wm>~ z5Ixj=>WNpY2Ff%;U+eHptxot|Jps6f6A6eMag}}Tu;H(^6uDW$C=69s{0FC zEhc?PE>Sp?P_35sKI1(1@NN~q>g?kQow=7d!jDeHn6LMxqi0OT;D)@^!Kk-ygO<_n z7;kG^Tn;0BGQ|;Eo_h3*C2J$88_zK~5bV}}$}`oyUVDkluRxcv=ww^Kn|KlsU?ppr zJDG~2a0Df~d#}b?Fn0Ej&WKn+t?k|Mw939#Y*ih`RRE{bNc1ZSSuINL7)V$HcGuzi zL91wWXn^NOPKY7zq4U);Ih3e3d9*+gZumw1@Tglt0q*-YG~&I$E|^t80lsd&KP(w@ zUyImDH-OZKy_*^$B;&5%T*4Vv9T4~9_zusba+6s#dJ}EEj8ikJK{t{nPAb5mxN1J{ zX}i2r%=^&=DGMt(njGrmW2{u^2xx}j1i9Ja);WRO3AzVueQHuHC#5oyw z%e4-pmrr{*cZmg@zGQrNoUuquhGz@*(48^GO|J}U(aNLlDw>74XS%SHLWEJv>2R5o+11s-kuv z@5Zs67(2?K(SS!tHuZJ08xSriLiJwaZL3IIdtz5C^O_JMw=D36($b{;r~G={G5)U6 zFY!G^m-QAj6OKSs8gP)}$b*l0e06I4&3lLOQ7L=kf*up{?6*i_hACtp8N_w*+*=u3 z0;86>UfOO?jZL(UkSr-{wS4 ztBeZD4Gd73;`7TfeVP_A_3r?4@mFsYNu^77VvN7{+#vanv>q%qyfr>Ipejk)7uVpE zZn6a4u#qy^bxFPsBn|qt=SeP&mG)QCHN_Jaf+CsKIK~+{z9NwDE{F9hGwa#q07pm= zC(@{E>2@0Q%)kwj?j&wS=XohtrPC##rK2P@S|P&C*1f~v9F6x!3Y42EYe{;$ZJcVM zDY!c>kQFc|2i=Z7ywPTZWC-rtRZVyRdR0 z!qRXIil*DDHw!g+vx&}6_YhlB3H(azcSId^J?7j%(cCiA5@A41y{DKD`L#8dDxo@!^p% zj%#Yn{3d`0EWqAgzgP_&#kBRn)BDq#bBtxK8$REZmP-oKVZ8BA6UQS0SQ?KFz}C?o zGy6sN79XijPTKv z4hQ03a8FIkJBl9^oNMi44H{E3WT)YEoOk?PvIug;@38j%he+%BGW}+rY3dE-tkVp{ zC}WrRq;=ZqG|uQ_gSRj>8G~gv{n{v*-PK!h5Ue z?h2z%wp`K8qGt|^`gu39@87IWFBinRmYddZJI8_LJee1W)!9Ez*ZPJ8rgUwcPr0B~ zde&SUswWeZe)YiqW1MK!w{3R1LNTQNK|xU>s*`w2%%R@$datVYnE%$MK8IJC&pM}q z4bob0fgAu<4w4TE{1W$^NcY|F@Z>I+a@Nh0xNbm~~dVHz=ANWatHhp+SY;)nBd1s^H`mULVrY{F`9PyTEUY6WDN~W+} z67E`QI=%E_d#lRFKQ2P|v(6mtg{zM-(H7jGui0bdCI~%DsP(W&;<&}M+ct_Rj$FoF z@LRoWHO37F^T(xMC3|wEl$%i6!cB!KG>R|dMmKpp`PpoVz;S|1o>K3pM&Hs!pISof znvL@+eHQNVm%&kO;z_RzMkkor=)4Quh!4W9$oZe_`BkWW^hAOSf-&j@ztUJRs4CFW0CK8mUWzeBCA*m;lQXw zbv3~*m|`67Gg0%jq%Na{*y<#r?3ShYE-g{DJO4DH;2cIWd62Tf!+3NcQGHfitF3#| zS#xYP>Yk7NXqA8wa>%Oa5C~GR-e;vM9kSdXp+hWNnSI5`=B$Xvw;FHS!g{l;T46OB z0=38X{7yc~&i~;lofn8zbBMOn7||RNV)`q^Yh)6 zl59>R@C+uzhf@@vuU49Ah}FG6s|E|c!9;tWe8WH1M-DGtm>w><=-#Tb%Lqe1j%`84 z(K=*Ni3<$nwNyMv%gFOe-eiAr)%%ZZfofTbW1?#RUStxeX36Y4-mmk5U-YJXCqZ4n z@qM~j%0%0SD7WML;P)|Dn<-A%W}b;52>W zEAUmrp0_WND_R=Ym@7D}J*6&TL}(X{8P?^AD!f3$|nc09%}6=e8kE;^XqncwWo@}IC_8i z@qx@OO=pQdwYRrRkVZYi45%pEq@5Vlw^!1o4KmM^_OHoLWng1aUDJb{p4)YgA1Z#r zO&L#TW?7b{=3F-djA;65fI;K6G1^jhyCo6Y9i;G)$Xt2(a~ z-u1-=w9L1_px*pRkMkQ3HNw5xXgoyj7*DbKD1Y2Lyw=Z{<~3OA>8ICy68(i%;eo6& zI*t;WpC3vK!SMJA08l&YAB>W~JJYmsP|x}*YkX;!xSH;>M}S7r=W1fkx_*14Hn8ZB zRoN%5A;mn?pW+$x^_~l>hroE&t!CzC`wHOaQ7`;c=!PZF)cMfw`j&x)#|MhIy;WKYRC$v9zs@ zV~uB&fxY#sye$3@$eppQ%fPzZmS5Zvb^CdoFvIs<%dL&upT&%(Wv)Bfr{gDuB?k)1XCIk!FdD=aGF9V+pQKtsTKP2%U(Pi12! zaXjBG*%H#ge%}kc87-gPSrOFK>nX`7U*hlb?|S7m$c>-xiuCgE{g$F}v~=Bj!9rg@ z)T~vex=vAY*nKwL*w#6&+;PWMs&93zOuw6Fn&%@AyZH{7CuOOL5I0aId->sODpH)pRm6{$4Z-ny zkh2#SD*|tsogR?O4eVPN%HN9X34X6!7V4UoxNy8oi}>I+VQgZOM=b4-so30T(9B9` zf%)kaDR|!YIE-_anV#@%kdVP4x=0gcG!MyFx0XP|O2ucn?P-~- zVjFA|w!~EE=7E`pv9GQ5{Kd61vXGiMA5FY;X?nQSlvEpz?}|RX-Ko<;r7CDtg+Dde<4^|jJdvt_{&AIB@Q7aL->&sY+c zs?S)@>nm-Se@gY|RB=^FM1;j2_blM1Nq~^}Cvn=(q;(Hmmu(k2AP*Y2m6|0Z}!|Vpvon$;FZQ|oo-1Q!=BiejH_iKi(P0}DZ{SxeUi#vu82!J!+Mz>%qSV< z^(piXo{-(Vd@UV359Zu()RRLp$7yrRUZZ^=Zm6zWd@J{VXNVp}9( zRmO5(OPs{o$PoYv!b?#i5F;BEPv8yD+lm_HLtP$LX6at0M-V@Czf>Z;djTY!7hJXI znZ_3l_5;B8gM5{3`Qw%%;Uv8|k?&P<<JL*xmpBu6V zuF~@@QoU?`Tx7VhP?l^p)=m6UYdBRYup_XzQoWu?*6(D^C_ms0O{ z{)|60aCDu0{=tT?vVQbXzNTE(9K+x*a~q7b!Au>2t}QQ~cW7Ibegc}Pw=8UzY|^i8 z)<4?B_S!UIC4UZlFEcOvSrcD0Yw>>IL}SZa!{rxOoDbYFtcy>jmqoa$4p6}^mNVWJ;Y3b=kZhq znG88sddVKqA%LY^O`31>d|Ej9HNSR!Et57^l;v39|d;t;MFpbO9TgXwQ zm0~^r^lRC|bSE1iuDd}3K*|Gc6Hu~4A628#hDbK%JV)!tz%j)x1D|L1=Ujka0@PrV zLq^qb6RNmD4G6y9VEkltF-Y?GvOlsCTM8-?Umr=Qfj_s1=WQIvr$E_QBk+dEr9^nmfKe~y!JI}kq$vS+97?28Cq zrPUr~!myk50L|Hpav6OhJs_gxh53u%3o+AIN+hsezXO^6o<*y%?AUOJ)xNsB-1ZHY zt=F2LdwGAdzvF9v`xzKJ?(le((;%)3L3#gM{WlccV^$c)?i+TrIGdZ#%h48OId#BB zG=W|&FN(Jnrq75coVNkqmpQ9}I;GV7{HP+z*Hn29ZV>ev_^W{7%6NSIIrDjag;%k{ zrGHJDWt)P%(i{+*tN&U_Y^pA_oV zp0byt?~F(b4$63_FFy5a)LNF_^B40fqp5dVH<6L5za}h?H3+s79dHT@0G#*k>RC}9U?c1@=x|A8R{R!ZBUX8r#kyWX7O>*VBM!AAzAHM#6<<3WTJFo|oDR|?@CC7d-J!du6?rm+zs)gQHL#t&| ztB-Z}lkO|mW+gTzDcD&c#P-Qx0i+H;`!dYOJ;6@G~WbmHs#;MUQOmPSp3 zwDFgsy+v0m$KRa}r!Y4?Pf{9jn(CLa^BMuPGemW}i<`Z!wJiA->-iK;dfLgzwd&yL z;-u#l*$Z_yWzAmnZ@-fdeitlQIPc8-W+|4KMXTyFiE6B#>x$r#p=SjA6e!*L>I65z z`{Sz@qZ4dwTvC+zs+%%LbRygD=;>>G+|y?ye*p$R6z~zP-ok}!JL7&qMLU~3(n6z7 zkm44XhtT<9${5&pyn$V?cTUs4uT|hF+U|1b^0&s8tG5@5TKxUaH@1L*5gEPqz)}NE;}H27&NW-Rg@hEjB+Yp zw*XGqKC|FOH*--ITa0m~Tj;HxnDzJc-7!)_)Cd~8V9kn-U~FkMt+T18%4u3dz`;3R zjqba06}u_))h@WTqq6058+(O4qv5n#nVgB52hl-ABpi^ zTQnY)SGY#?WYZHPqY4}7m@0v(UAx@~MeQ|ysap+RB=Ns=6?Ql|PZ|aH$%H-tb=O57E$bN;wwT)L&nMZG@j{w|@^>D} z-HbD+>LOc2II+NXpQ|B_%pjwu^pC@ag{Z#m%7f;++0GTZSvAOo&2J<#RC!$%*;s>3e#HWg-H&0O;K~`K6(I zy-Y?{+KiUfbhcYj>gneS%i`Kj>I1fV?d+B_P2sVX(YXD`c$@H_M&l0a0p@U@rJ9bh zs*`_`W08YW#!}dlP`fx3>mwD17UsHT6dVCKzS&bcFS$pG z?|U&pR9FLuILn9sxbHHeVqk%-tp4!-sQT)FsJ8CydlghbK*Rx&5)hD9ItEaXE(Ph5 z?uMa3kw)pxi*$E)cS{W2Ffa_A!@zgOtH1Yt|IInG&pB&WJZr6I@3W_G7#qT>sKZk6IOpsD`yO)L1%13(}?$w3>m3ZtH zgkBVm0(b8Ym7E{psr0g{I{E?Ur2<6M$o^W2$&b8T!s#rZnkEiP;K=$-o^@@|D!c+&ze1Nhl4- zJ-*n!cuC^8qW{L=(ch{(^U>Lq)z1+F&qKUJdBy`c zSdV2b&9Ta;*Z>p*0kLi=WCoNoQ8w9vC|=U1dimb)bs!?cD2mYq0ew|TD{DVSExL$} z(j>c~;Q=nmx#yNfs+UecIb)fCM zF|UyM@OO4Q{zw$>NNLIDS9D~f?7LLUU-?=wlHHZ{1M&2O6uP-C<_Ha50k)~;2C+u) z$CoLkKTujx6@*L5`dyY>0FEg`?VbS^s0aegJlUZWNRLB_Bf$k?&5Mx6MjoPFa|_&@ z#V!uG=0SV~%?$Gs;m9xD}HQ>9P0 zU&^ROF(~NO)aBS_SyhE<&kfO?S>|0>7KUmm9PuO>0kRy~(c3$>vF4i)IzZ(^;4DmXt2ptqN(|V1W1AEwAj|oxn8&jfGLo&rKcVpTGcRW`K5uUW|ek2Z!`*lr%#Bo zH95bmaH^QK2SMf`*h+eL1=GJ9-VPrN8(Ae_ zHx$YFC53bz`D*i8yh3Mdy06aH>OBxyrIk&XAWp;P3_7FrG_8}c?dr+-X{ue(KRU;G z$x@!(4g-JFYvejP`KL$DZvucT;xvxe-D@iE$L;^k*+Z)1JiPCG~=;_CDNLt&(=3bH(`jiR#pR^KC^TBmVMJr|IJaE{dO89J&4JNihl#mI$>U{ zLi80{&@eOu$)O`Zs3#JJfOZ+BP`<4%=MA3(B}$jJJWL7VN6&M)9Bs4@XDppri*xB1FsYPm_soCndN_z%hx{#mG9GCwN#-a^uJEhxA( zO4m4g|N3R(g22yb>g7X=a!J>-#1V1v71JTTRQYw1^TSZ#vh|b<>iqA5uy^f2s7%#) zH5(-%GVSFaD{+OkPTssodYzu0EG6D(r%=h=QIbuJ*Omj5>$G#VI&}t?)4_rbPPq{e z9$sT7#no?nZm_o1ys$PUuRmcO)wfvpep3X=c%9R$z4eZ+#`Qo$_iOJ66uu+*MxStk-q}>6GFpiaZ80tV2Ct0s?arF3wg)Y)wM^N|(i>RHUaN~#2 z{ne<(iu=t*!*LDx8;^v#$}D$J6~Ks&+JH%}^{D8y3QfoZ zihAb~M-sC0L)turR88^*)C5DO&&G}aj-++3*Kp)CUcj#N*6wa&m zv>B<_ELb zq)yl_0%qA^H)73N1|?H24q6$i?l`wK;npTCA6q&#SacFqB=_%l2UAH`*9u>H_LOrw zc5Ay4O7^k6@EWoy8VKPt+T)~WhIWZ;QJYB`)_i=CHXvzwq+p)CSNVRTx=FFa1n zd~~t?g%lR-u=Qd!{c(p^S%pj2E{Pshoo`k#uk&KSRq2;NlvpY)vCHU|K)`YoxZ+ax zHS4J7pykRS-4uZ1){a!NGY@03u&Eh^NhMOb)oFTSdn|u2m%FMa<8;1?xHXrdUD>Q( z)yhSQ1bX5`$T>3a!h;=BAzgsNIyVwf&tE(g*pF2Xl{t~<;)dsTWo z>XTIc6t^Gz>9*U;?K@f3-+Cn}3hJdQ88uA9w8Cvp>>%{~mYiJXTwu$3sU)7NDI(Y* z0W1um%6b5?MYP);og|}ti-g6l``cVhz7AySw3ob(L4&+?h(lh4_KTQXCCRDc)Z42s zOY2PDt5cFnI7rdlVr9RY0tzpx?orFr+(;f-frBKlu<_0vfOVrw%m>JJ5~bVI_uPE! zR(8c>dLx}TEd7jD@GzWs+oW|>4#GTRq4_~}FG%0!naMoer8?>CDr*x~)>4mP=E64~ zy`s4gJ|`<-dgdkF!_<1`N|K0@&rAVJN~^`H@5q>k-6-AZhSGi%?SdLp-zM!v?!oAv zH>X;5PcImJp|K-cef- zwjvxFN^jHbE1Uv@$D8axxoYk?(OOe98`S;aS{#@ z3c8ZFc))5yMAfX=t$g}!$HmC6E~Y`)laA>sWee}^x|mzvc#W>`2!Tn-&--A)C&?!GS-zfriV(&0~YkLK|CSTdY+L0A8|0zU)Aa|F|b`1qr7+@pnL$VG+`yw zv9`(!`#1?u8+BC1741p?@*K(Z7LZC?1TDbOSzXqAqOmKVBMr=W$x^7wmk)Dqb7LCh2)JA9Huan;il2a2rMm8tL+5 z^vMJWR&x7Fvd%(7X6<=_c4@u2_EFwfX#?W!rjyt#n-;HBnqi%NXh3|d6d|Loz!YN# zDN&egPX-j38CDibgE0DT^qqCBJliE;$dP3PbO*r0uct@T}EfA znC|ulT7iZHmM`H0j%?6{oBYI6iwbVeZfy_3UX7yu63rqf_t!baO;zf)x$6Q!y5_iw zX@6|vFX`S+D7+sfvJ6b{XT2^S4>E%EF%_#Fu`fM!zM42+BTxNcZ_wl6V`EK3_6#by z4t)?tcV-3v-nW7ApdksIK_8$a4H7!a(?^4y<~#!q{m>A4nXYe=MMwxvor}Se$U8#0 z0qMC_jchAB56@_=ny~8HvFh5`ZHk9pnMGWBeDs&|v&_8w<@%|6x=B%=?)G>ke*Zy} z8WM!h-lp+=vATA<&-kU6rdH%?NAu#xmPcDyXGw`Ka+o-4x>9%`9>Vjp;TW2{=Xykd z@(KA#$Aj+@(g~0b(^TMxC0LNBPW&zGL+9KjmbM*8B_Ja|uG2QMP}0tH;Z!EhqiyTG z+^B-PSPH>lC+M8oeps+fOmUpi{1=2VL9X&6P}*ijx9h}2;T!qWOgteLr4=jcy*1UY z3nEu(69w&V(rmR-(oPnsEGiawWO zdu<#KJGOD%CK)x^Pji@Z=#&cDd`=2C!Wn)|T8SOHb^pj#pj#nJ4|E+Xv1mi_xPgaB zvm86r%DrG&tyh9Zmz_l&v!}XF*_Qd_#-}J5vnv9ix#}G=D-IR$l*ve3XJ4?8xU|Ss za@#B+)ulM_k%`5vj2A1e*;v!58}GjlIJgTNFswH_tQ<=DlV znwUM}@bWti?%BXK=!JRUo$g|n~zO2E`$-6I*CW|w%=e3iq_WA-(l3|?N$FrIF%`VQU-9A-TEw(MtX*oQlK zerefl3^Q&9T0tpY>4&>2zr}{e2=#VBuvvkD@MroEj z3cfO21MdiTCHXcdhn!_HvP-bZaYvF`PS#q(>u@?RNJ$7V3}69ZKUb^gh-`jgffimJ zzVv}Ip?n*_0?gE+>Ah^U2KmCh9^6#duC6>OtYu+Eibp;_1CHeQFsF-Bd>k?bYG<5@ z{+4emahu7C`erqtbxj4Frat{ki1JRd4?s^zQ9cwf!IyBt9)?C#ivW`XfLo2YifC#9 z{v{KZu>9GxhZygIfU}N?mA-zZ|Iizo7t>-dc)$-~vw71>0NmMS)G+G-@@)shMOKgO zG2{%>iE~V`Xgz59rW5*@;NMt}8`-n;oQk>~L;Ine9iQ^i>0p}n16yqF#V2uuW?1+* znkXNJoaOp5CEMZ{&a85_J!(L_%SKW=ag+U`m%wwbeXK$~u1K>z5y6rTZhJ!h{Vv^h5A+qzuG=i2Ydir4{@*5Ki%y?67VK#!8PX~VW#1uHGE!y!B4d@GxP%RTMc(% znWMGhd0IfN0AG03MIjuy{N#Go0HGTn%0kiQOA`uoS8fb`x2-Er!1GA;NE)1PmqT}f zOJm)H71TB2Y;~c2sSk5Ltu>|5j4+W^P3w^lGyOhhZJ891Z z#a>MDw3L3}23f+}8RKXvSuz9=7%>KL+rds@e4uPv*N88=kqV?hV83PpPA5ECLR9X)t9r=acCY`Hj%Km^v} z>`ktEJ)7!!r)PLPT&vML^+~8xj|kwPrCNA-+KNMhnvGJv+i?+>cXJldhT5 zsm`+=ad;^iw;5SfENd9_ByH)qs@|_yo))wmpX(xy5>3RM7C-ZMgFJ(MB0@9ya@I5W z$Xw&Ls>wqm&dD}rz!A0Rz$WpSx2Fcy10uv}rD?}#h~(+6lI8Bkv>vf?vc;L2eL9_- z)XIrpvm8fRNqOFrM_~;pe^bZW*;3z?P#dVFcwyL|3aW&oDMMv-=YuwYogh$s`^!X@ z`E11zb?mwqSRC^{Mdw{y>{MG!w{ovGh_tvNIM%6PCy0W|sVxqW#_^h`?_Vrv0C$E5 zqgxZ4s|zX0c^^t)<#EEEma;=&&;SiR&M{OKe=%Cq7P`n%E2h8OSK=RUkHebOfSD#t z&_cN{_7G@5u7c>N2R>N-2oMD}kV)n4dk78Edo?!S=(=wrV<)n}*2;{|;C2jop$JMABaeCAv!*K^fvzyC096EZq(O51DXwXgjI0?gQMP@H)l6}EWS z3q#HtW$8y`N`9L&)6RUMxeTw0F??Y5^PMjn`70c+%eNDtzu@;-T%mTPubpqp3dq0L zb{`&}8MZ$`cNE%1P~8M9V;v>1ew6ufz>_KW&~0~}hQqhO5!8=0+()RYyNf3QdE zUm&(J{q%S|=}k@(@eOf4L&b7qnYyh;tcZX$^zln`qU)FFWmprS&IyG#L>v_>;7acwB13d-&1= zt{g~P1|BILxY`arzn}uoih)2B^Z@nN<~D}B?lSN?*{jI4 zm`_*HXqPSTjei_;V8en)cFlRh$Gbw&jSyac%}-$6AiRB@O#iTQqw3!5x5dL$3J$A9V;ogJpg)+u zmp;L^0<-4z!Ye!azJ|F9KW(=QGz%K+C~bj+tS|ha$i@{iRdh8G-Ug`-&piqIXae_V zqT3V&m}_{i8|K+v;pp@4l3zz*3pr<1mJOF0FOsTsYF=7Sy9w63-A>MmxR>5ebja+K zhpcz{Y$G{4`rHvFXIrV{r;Dw&d!#R~E-->6<5gA)#(u*M!K8nk_U_;QO_F8hLS``J z$(=N?EzEp1*~lm-N4i=4@$K&W^3^J~k)Ovj`+Fh@atGzHx0hr-3ieGD7lC<(ol|8? zC&5MPz{HJXWKWq`g}&7k6J^crOA~Jr6+)wky}8wAuyUigclpbk9}TSRth#3l&3~Aw zn`vs%ay+s|Q&uM!v3VI*c3b{2shDL+le-!!Zym}ns&!;?DY`p(>(eF6c3j@-2j6)Jn5Dc?pltj@!{xAz5F-j+#~47m+^>;mq88teJM zj2@c&oZJGmf@=|AlZhDi8eJupt)4bcq2z!)T;1H;3U2!QaP+YAE4>_C%eNBKy~2NP zb(l_seDk`BPp&=$rHFd$Ug2W)OkIokLXb+XyylntSEaKc#*-eIIXn{9)BV>PgJ^5K z8cStv#*p@;^CVRt=}bI)ylS-s&83pi{Fk#b12~)$MwewG<2h=bLpO0XNmji)mf@`V zF0j2)ZM7s~_n#4Gyf*p-9ej^2!*Q239nTpe!nt3NF8z$9)|1F8B0n(q+M3K|{^$Kb z-KTbR*fdG!U3HJUB`}ksq&tRAfzLh2)kKc5N?=*y@CQQf9&38Dkj%P^fx72cXwFLT zGKNqX^(3tn_-K>0|(6?FByk6hX)hP7v;Qd2oR6`&*P*W+z&Hlh|BjC41^Y;6VU zS|Yu}Lra;R%@-l6Bi^W1g(D~7vhyOI?lK#pYYiiphSin3ulqJa0@gtjc-Jo!!V;L- zj)7$}KMH_V1@ze+@bv}Cemse6wqc}nAuDwQ1f~iz@YZVaO?%N24-GsQJA&(HN5QSV zyA>kSD%05zt4VK)!!EuvTmQ=>8p*3Qx2y^}Q3m~W?@S_6m+w0Dv2)Y2)lXJaIm`6m z{ZgH#U6M*@@yyjb*{T`$^+e)iL!F6c2Sw5!BQk6?2T1}Q{mr9uUkn>@4^MgpWFFr} z$V@rHj#H@P^S%pR+&Vfr-OdwlI^>*NpeZXbnzCAV2Pi9@UVgoshnjEDMPc&O;!;wI z_Vi#H8U=xqoS|l3Y`VlGo_*8_t-`kQLq&#vyv4YGBSZ4#{F_@&iWGV9y_)Ho3}AC%X(pd5rsX54 zGRIg-EH@;XbhyY3K3=C*>9 z_C0i7Ru!^ZN~<=oFyQ`x3vC3kX1;qm3@pdKbPlcNUlHkFvmRhc+E$!`Vi8l9$=F|q z)H3rCA1Xd`IiJ7Gdrb3|v}`q_z5zL!YAAa3?@kcKx!WPMvYW`w4ls%w4{d zlYka&A(=^Id3<#%q~=SR7Rj|Z<=`izkkiEKMYCRruC;ppOnJKnzhjw>@kui%&nCIz zbIPs3JTC7~qxM|mh(@g$QKSfM94u7(9`pU{?S%PDB5W@BG8@m!an0yduRXA6Qqy84 z{vmvR^Ht+vY2im3oCq$;}wwSDToZ0pg5k!z#6$#*@K!Socw_D<{2zw%z)q1bm9 z7(tz62BmRH@#M9*7&MubrOuxbNmK2~`;{z5rtGp!XX_>urNj2dH4jW-6fLq<px#33B672xIn+8=s{Gv`+Vpf zx#6*Y&C^+oo-(=^cTEeIkcjB$3t-=VW5X0&o7ay_6l)G9-t-M!n!2prHd^<8w$wKJ zXfHorSG54V)bi7G=6j=D@mm9)ly^B2au^A>xf|FVZlsH=FxZfbT-Ho!&NQc(qNQFO zB566(chkQno`#|2C{>47S65oF$@Aj6TejOZJ}Yv&WM z4b!=0#enU`t=gDFQz$OdEiDZ-7WK{6Rf2X8-LF`t_T&S)_SIbZqhe0JEV)dmoITy3 zv)p!TIH6!(7hEp6wqVj$8q71Wf$x)!B=Lz`@hNorwe0VvI%@>BusQR+Rhu_ADz>RJ zZjeqQ(%0x+uyk=-+31eMO+;pAo&2D7oGO969y8>>yrw}tgR-hV)N93>}|u5T(7 z{V|mt_TI!~ugy0F{jM@R8fp{`oL&hXA?(M}qi(2u{0U)^yT;M=jvsZWCG#F|h0f=F zE@zKa`Ua$X_>8XHVsxF&{OmlBa(O26!7+b4(q1NDlF&id>&_jAB?MF2Mc$(m;bJggWIa@x##5CFiyhOW<4^M zq9(|`ceBa%QY)3z@mx^QvKF~0JUqkZ2XrT6?~=;LRcghnU-8}W82L7o^i$Ll zIjh?Wx+Vr8n%Te`>~Ms;TR$Mj3PV(pU@8hX0q&pQnGuV?%6M(6|fm(|RSWw4;bL}CEgaTX4%()8| zq8W0vDDN$EmBNTD;A>l$ww>0@riidx326Q;_He?9)?pPsqIs}K!Jq7cyoChV<~o5$ z;-Sd}7ANpyP_1z{kB^-ZMluM%A)SHOelaSxqUJj7naP)eCPz%$(6Vo=WwS6@7Cs^L z3*Qr1WUO;DXqm%2Yd#OFkewk^m#w7Pg}V&+X>~QU_He;Hxgd=jB6kL9&$4u?4fjcF zs?UeMgPn@$rFcuk;-Z5*D<5-}gHyvw?BBUB9reolr17^eo`b>?IgO757W?1sd4_0S zEzmTq6#=KadSuHn&kX#V_Hh)TQPD|5K5nfgseLRq8`qC0y@L9S@rY)SJ8)N~X4&no z{L*vJOFo4eLJhrrv*zn7Jh-Q>+uzO8^Jgl1fcp*St!zfZ_jf8w%;=#Hx%7u zGc&(fGrH;Fbze(V8C|=0#2f~B<>vSHP81uyO4HW1qSJ`y**{?Rd$9t4Qrfn3zTz4= zCy(Iyu8B993a;s@SeInV@%ZA~QnD&P5(%>wz1itE?qA}u+}j8KhllnqLdhBD8eQj; z=iPDWg0cjhoU>G&jJ$y0{Loz92i~Pm=_|iiyq?-XvDcg@ic8B9F=Yr)hAsOcVXlqB z{VWIPp0L-%`X76&v~3YU-CrRfM5;c#iS4}i1-QPTa-*Ui%K|S2xPXa*^EHc!u;~S| z`6Sxx&>s~q_jDFmk&!tTj`|K;-WQlZQYVKxZO&|}54SB%D-M`s+{;K!`vLr>EaGMN zNtU#si01S!=4lMxOQlsUHm8Pkp;lCDWY?YvSsgnvY~*xacgpd-m%e~mM_1$#rP0T9 z!L0o3TccM=16DZpH}7%U@25hvjKO=NauF2`K8)mkpV(TQb&iC3K5D-IZfHeyyT|om zY7|QJ@h*9;)(mmGb=MqaC1w*!m9C)T(x76vh^v!pi;2++1&SfF<29r|)Oi)Oq)^cX zP=Ub&!V__fPjans@?m3!EXWnCY7L-`9qMfQ>S?x#8N!r5=VMM+MQ~=M_Q(=g!>0Lu zsL~MtOpBqigr>QnOr7@I+=suIf1-~L)I8sVQfLEWY@Uq~o$TnwpTR0@xO~=Aeo$n7 z7u0oSw7_h*Kl0sfyS2gaQ_#<_j*DScg7@ zNuJ4hcls9suh4@HRyp*=fOeJVlycdi>m8rrv2pFDl!;IpoxP@_RaHBeLSx%Z7)Qdk z(i9YXn#|7C7QVO2Djk~GiV<^r9BIsaW6n&hdh~Z%=+}%Bpk7Hno3-M8gktio_GzP6tJ&Y)Fm;>9xvckNhgvuBLwEq`dH8l(Ff&no`^)orRw= zdIp+6BitPz{}g?+1*)|KFT?UQjw!vSgJ{&ZdN=Mdc7XM!Kk9^5MSb&B>-cWN!uBqo zv;m7o#u+HpjDD4B=Toa9Q_r~|`N>n-0bPSrqo& zN=0JlTV9jTM|~@}->jiQbvFf`qa$nCGk%yd^FR&U@RwpH_H)J-LTH!(8xF(np}=Br zkVx+oxlInR`-Ul$hF*;El6&e9;+EXG5P%ZX1TdLt&&7i8k;j4eU8xXT$HqhNMF}MH z#Zl>a>3VeG1U_kNSPah5>Vv6^r2?^HQ3JLjpl~C1uO@+>zY!~D&!}EwVOxyqmW6OD z{i@!6Mk!<7Ey-KX^<53EX~f`3Un}abGDhgl&0R7$$CeAv@48js6A2K@DkM4I zDfjoUk+J!^t`$G%mZ;G2?du#LVCB&|l4(;k$D;HyPQ+@USF=o?S0jL>b9?GI?M!2% z$R^&nky|r6x-Ds*^C%d3B7ci3%)Yd`V_Z0DF`hPum}hginh3E$yyLu{J7r6QDpcvx z9t(#Cj=<`ZfxSiuQ7RNw^oqOL902()3&l$)@M_bjxNONS^WH`lQ7?@-@m#{kHT|=Xi7)1{%jVJSv=a@;jjT3+mxqC$vb2mpn{DF%)Qji5#kRcg+*v7@K`|`HB z5o^$t>7s`tMMyD-=s7FD2f6mi2;%ZQ2ysg!qwT@DKdD?9v ze_N_IY}zq%a>$i`e$dNpJf_1Yzx^x`JH^KERRk)Nmgy+x*6YT@!Tl-VwldvVyH>n)&nd|h%mwu>$M2Mc3#XWXwag*pZ-`8yPTq+h$x!IldS}`_XW2oAYT7!+CJPkC7 zUD*KE3r630t-6Q6bvYMq@wl?Ru{pU}yPS5SP4-&U^=?eOh)lVuS-2^IY@P2;FBN;I z9gk4@~-M!ko8d>VRlRZp$eT;OOPAuy_-O&}7 z80_TuTyh;bx2t=xC|(K|Qd6PqyB-LaO643rkog!%kt8jW&H5mrNOUtT8yi;`S7u#= zi?x_01cl+D@ueE)^y~#|7=f{a`Hu*K z;E>+uPD>9ic@-T^`wFFLn&5EKvFA0l_Y)?^L_}4Mm1)$IMp&=!)phCj7UGdU*I+M@ z#*Kk;6+AbAoeh=?KIlWNy^{%@R7{94kkSNLC2MKl0YrzG@*;?++|=TqAGB7)CDf+j zAy$-}()MMgFCs$@3$)6cgTkW?-UUQHWacF{G5l1pXZzL^F2w0*q{*ro2A(mgM9lvmMoyT9HkP5t2KTh3YR(yB|ozJwmllD4&tGykZvH=k}$PoBV%MQV9yGTfjGB?4w@tX8jDm{ z)~L{5qNK|cfTXe0<%d3fsS#PI5lbQ!`xAA=bNJ;mpK0s1bW>v5*pswO#6pZ8?&I>k z4sjWgso=DTa4GHPv>P5#G9IqN9XZhIAwRtQ5GMc^WuTX@)e6~pNwM-w$Mb> zn=ZY27p`MPNi98Iu)X??{7`DAnjG6c_h2+q=Q7K?m>%L5lZBX$&>?@#>zJh~bk6q3 z%fTkL-b%vFY5UPwq)y7>0R^oGRYbjg&tC7_yJ9jwK!MO+)F=y$kV=EKL@OERCr4V{ z*HgFgrr#SADu$^Qwa zYGM>eL0a&K?ym8%sF!p9hV zdskfbXtI}|>gJnrgeG$dqh&Z+Old$&m&ow4U2UpifwS1|mc&DNa>cd@;)x{R~ruNb~}X8JRDfmPS&f6kX$?p}aE_>d<|p8frUwt~@1 z+L+e82k(+s938*dC|Q#wN)@P#lW%v#ukaO3icsJC-*|IJKNX{%z-3MW6;6uRfWFjo zgz2J75|>{#WN&4@@R~G9e>8`B*t{F0c^@n^qq{`1`WaEGsSfOn8OEQ zqpn-OK z`!#hnwe@@RV|?C~qoXl4F|>odHHP$1;J6nZd@_62yX$+ueItJ5 z2jf1YOk$~w5OXB)zPZo6x|y@L883*LhUI1&LCNz&0xvdr$I@xzL$=2`6AH->j?wHg#MHF(5i^@_!hO$Mpl+PKi>oJWVh^3F=f zg4r`LU@bVP%zW8b zxg+8MA#4e!by~Wy`uyB5^cj2pQOQp1;$HkEB|?$-aOci_b?Dibj2BD=sZW|7Be@r4 z7P`}@G3)J<0eA|&lqx7;wcC35Lp8h}@(0#5#tYtjm!3(Z zd%Lsw2iLkJS!HMDNWcD+6BsX`xd$KzV>OBP(c7I_a@b@#+9_jJzlB~rcRKdc+-gD* zR&!G@DOMV4KqF*B7Meis*cK=;ABb$`Qe`mR_PdG?csy$QHvNRRx4#;nj742N9Tg6b z(RzCzMDbhD80kUhOEI>UBnU=Nx{s*pxN=8yrbWOsLb9Y9pMV9XY-J|m2J*96On=_< z03SG(;fU>%_%mGDZ8FxVoBy)5!{T2kj6BI_Nq`RQqFPw=Ga>^*R(6}_^TGo5`IpPQH zM86WZ$cr(VbBVuw!uia5xBFWt>U7K8>m#>~8nav9s#JR}oA&ifzfdP>*p9*2UrT2K z5QQaAO}qcwN7;*P@;19%08ShyWyM{g19jtgCBWl=GzQq4+X(mF<7U?YA2J%?cd6!F zn~MW!W8zm{F_kXqFZU(!JaYY`e!%1m(xw}6z%G24_ZM4k5!RnEh+hN*KOs+0QP-lL z^9A;^Rkxi-N&V}g^+#+iog|lW%LrHPFJB8Sk*#BqF_&P26$sJ1B);~qT-N22^cuL^ z^r!*f^a|SEp#E=sUCgz%6a#gkq-YVhO$Hf^3u7f*;4hnkxrQW5N;N3j%BD{kF{#Pm zLYLnrkA8(r-YHX5XEQs4Pr-&Bo^!9{SftqoXGXX(;DKDwb}GYaVq(yxsvU=0eenOU zH3Xr05Nc1+w`mzr8{krTYPe3~jC8-1uq|D0o@AG!265R7Juye3!?-HmBvZAWXa9Y; zfp0+MNk7Z_SI_57kDJXT(1GhE@n^&+1&M7`z8BlfwFkl^cqs8m)j*8*%r>NMz2ge2H_iKwVx@{EhB0u_peVp&C3 z`$c~}W34}+AT-QG7E4awtq9Rkwp{_oI*{|Ao#=HB36K{CexVGl!Ve!o9mTTWN{eA= z|MFX73G&BBEfbhFi-4Pj|8leM9$EJxpC5!a>}sq8hC_9`~-E`CO|6RiH zCnCysj17(CY`% z;C2IHSd6Y>Sg?D^d-0EO+ivo?Fmal><9;uHP@Jovm6r{!M_S)x@h(fX;E$n(&@IqCNngeyB```$Q%xW1Tpd3 z5j2Jc{0`UGa<#95LJs5veAeEh<&(DdLAq=G$D~;zKYZQY9~1v}GXT%!+_nDrSq+$` zX?CRwz`s2--YGwRy}4nX8xpeIDnP_X!H!0|7_ILQF#?xs8;U`p4-)pe#Kdlt2QX;H zYbCY23vm8OR@n7Q)Dh#iDWw(5N|~KRKJvD4ou~~1`Tl*3qo3c?!=n%#`9G$N&Qxu4 zeM}1%5DNfohEDmRoa{%M)ntHe(K+AsNIUgH_qiHN*dwT&8wecqxcF~TM<1SjwRM+Y z5ik}(;B_8LNaj3U)lNWF(Nvq;+oJzMPk(Q`JNPTiDm-9BEw4fq~a`P#`&gaj6Ha{&jh(I8@tibhN(dvaU+ zf!F6ioqCJk{>HhkYo~tn?ONu9T}Ns8In$hwZM310U7xG}_JhTqUm*bKZM*%OxEtI5 z0#pm&t^LTU1sWlLidk@#o5>Qxz2D}<9#)Vnx$|3Rm{;1v6tA%UGng7Bzm=m3#O5EZ ziOo**QjlPwV^f8f`Zsa}b4=M{<_)+w{U4GU@c>Bn=zmCNPbGwl*4Q&Q<}H3Lpe(Ns zw&93mZSy+@?E9+#h?%lcm{Hk({Rtfj5-{Z~$Ru1^wbR@cqeo|=K)hrD+D`CWS@|(S z{#{Gupe*Y}&;DP6eTX#6^3%{Xf_#?LuJz?r^hA4jS;hV;D+sNXKa;D890Ywis zzIKADot5}z)quOpy4u`*pqVPj1dGaMmaI}y_XOetoxPdoRm#$W+W%d^r-HjK>g(C1 z264p?BeOuF1)Kyra9UoxTa>f2lkPmwkbSJo)cjfH{9FVhXC+PifzM{?+YBZw3p?@j z0&LctX(E2fp=x|`mOS+WSD%BAZCR)9V*$5}bSz{xJg4yvEW@_W@3|@NzzoQ*EMRuL z=jUmoi0M3T;5`lWJyLGUxun-`-2C>Ae_T1pIxWC^{ujJ#One*bVstw$?&HJz4SpW9pidABRZvs-e~QrOHT2hog;;Z40KgES zb8L9S3f8TB*?)YoHoOD`VN#v@Um5`Q?MWTLUlRPUcq$tdM4iKoclJl*2)lrXAeKB8omi5**!7tP_9b47p|h(W)R+T~1{k_pFXG0TaL6-_ z=K?}we=^6hg6|TCL>BB&vGfGtvs|j#5i%1`P}ikVG}MO@Q`EDUJnl=CuohL-c)>Gf zpgR2p?Rv`QHCl%FshOApTLhHu{bl)SugoHe;K@K8#nY3YH{4rR>Ok?fe3z_Xd}G$* zH9=!wk9m)Qe{ig0fgjfH)&w>0O|exTjgPUr=Z6U2D)#gsA(kH;hxNaG?FCl>u*|+l zTLa_%W;!#vfrY7QQ(u;D6-P*hEOUYrcY&mlKVDq_6HDh!9~OR7M%}+T!@gMptL12; z)S6&IU`i2i=>c*YaD+~=S(0ZnWda+hKbQhw-bXq$ zHF`F_%h1Wtf2{~1gcnA|k-4i@|0H-@(bSwP*=C>kx^O!Su?F(TQ>@q%m5?!yWs(}Y zXs4;mrx>?Sz8H-Ri+PoyIwOO~=_xK=^9v{*EQrRsH{B;={R230_g7%nH{-|bRmX!N z!!$x?(FT*88SYGp!lzP1_>fqsb=Vc7uh^k*v#+|RHI%R|#HA1dHqJGbs?kU- z`^@wpw8cVmC-5JrjxOg5JuCJ3Z!csW>2y^81-Ix-V=F3WhU+8MM`zyx%7F$TI@7?4 zfrG!<=a2pB$62?G9U+)2>CT+flpN^Nl9h#HoT)JBS2b?`-J|@Njo6v@JalEe$@|phtaW&PFoi1e|lbA;C|WiB~a3ifw80kS>1d zUw>L6N5>))K|C1?Oj5=9e{hv{I9^3I5(z6S*mYS+XF6u&8hY@!Pwr%9(rFoukjlat zu1tDc;8g_?!QKjD2N5 zRPEL_jWm)Xt(4RVNJxW<3?QX+w{%Gj4H8n)h@?tNcMJn4(h|}=bayx3#>YUPbI$wy zot}NK`>M6}-r^yW!~F%Ud^oS?j{z{vFKt)IG_SR}c4hmei3@Jp`T#3*DJO-)T?rkn zr6#7v1bhr!*W@F#k2HB`{WdoS1}K0Ju{r$Gn&9eI4Cz78~wQX2}$>hCuB&eu&M}x0E8JP(-nS4&>TuU;CLzKX@XBkTvdxC!(c2wO8r@y zt{))BpH-$^-G0i7@!@ZkT9x*~V`shu#Jc6Ob6Jt(%z8jpm-)2;4N_x9;}pC)tr9c# z@U@l}IxYdggdK*vN$yb9B73T>qD+dMDze+b!~mL7opco4OyZeZP#wDenr7G`tbaKK z_DSjIB1-k-^|n7&R~k|YQL;JJ8dZG!9olIz?4@t5tFE#%G4m4^u)GL=Ye~&7rN~uL zDtMcl@W&1;1)6s^_%<0K30JnDN}vh|y5IjYVB(vm=hsUI>QW&iS#a|QULEnxbi&qb z*1ub+EXe}5ynl9R;3^*s)1#?TpYX~G&T3CkG8z5}ptf6=+6>F(w>E2(Hwg^8vV=xb z&#wK}WwQ*dt8ML905Q6yL!e?YhV%z4@H=VX;IYo50{fA|^+`c7Bdm5z_Ne9x-nLbN zWc55V7ajpr_;VqPWmJVcwL4+zFKM3RlHaRVEEGqRMynnF14NaLHQ&uX0`8ukHpjR1 zj-FcJEQRdo&6QPThH+0>skR2sGF&dKP5ATHBC`Zt<0Q%-7|IQ2m{rC7v54vnetM1$ z?Z7VeG3>e@s}snvBpOEVa6Lu#df<0#r(cTI(SI9Z1=jj3LP&e{O`PD8uwv`adr3+ zqXS0W?~o{2`@?20OSXpdkBn$;Cj^ZhG8VTF#Z>pNxk?Y ze2Es=1uovk+2T#<9VB)|0s_;NU<(ydSO@!yGKXzwlp+Kwl zro>O@-Z*cZrvFQ`q_HTt5_n>;c#-umH!rLMl515%^aAQe8D4*e=h*%rq&%*+V*mE z#k)l@yT`vIY)(5iV=9d?0dOEC+id~KEUY{e!cagnk9on(ivL5xvg!Fd2HtP5CZlU9 zD#yFrtM**0UOsQG3qG8c2MVLv%(N{4`leaHF86^ykOJiNlUa#~ech(KKTzcR5FAEK zB4R*oMzrHz$9AM&F>~GE5xAB(R?vXfEE?wLNpb61!i<0DM?qFr%O+I!XjrNWiC{}t zIUW_;Q9Kq`?0bn;4M^bkA16EC7Lu2xaC}Vpj|*@;^24qZa13AF=A^nmurKzWzIoeJ z0;CdM`#K9qr}aJ5WT-f{*;qLB6)yt>raK!h78aK{tX{WB)yWph|h z&dziy#)voZ?zJ#jhDv;A(&hscmc{RatZmvA(zvfB!Er!p)jpGtfieEoy zu>i3%Zx<-GEE1n6a|B;4yxeLl@6WtwZJ(33egq7;8T_=w?Y{~sEr&){3P@}x~XO6=R3&Nu0oXS-BS$a(1f@y-*q+8J2!qT#}4dUzJ z@7~k(2T8BQ1w~NPMjC9ieVxJohvUCKDz*&NL5UrcDPa8viq#dl99I`{=Np1G2)8$KZvRy8| z@leE1nGN)Ppf~ul`ri(_l-dq~GprXz|{3}c!M8~SUjo39oq43aT z+QILaZmdb574$*g`EHnEU$D-RDJY<3P61SK*&=dG=b7;+!u-weZF>HM@{QFl-xt#U zj#CXw<@#@K2)aE3Tm7hf`8?p4av}q*F`z);i2KQ)>YqeL$t)ql^iO)|?@}#Ld<2^P z9Tq87)uQQ?Ssf_-8ww1m(4|=AE?yEBqc;xgS9HGZ+=I$NVWR|7w4Ng`=@;u z<02P>p4DgMvfYL%x2i-i);v0wJ8WmpO7TvPIJPzw$1egGsP96Zk5S<;s4z^XuEv#d zpC_iG?#T!1ma`A%3p*zYWFUzrY>}qQ3niehyaro41C?YRT7dr{72{Z7+dAA(- zi@oFCJrFPT`AJ6s-uEFG1x&-Yk0+FCs<l^*807QyDvJ?bf{1o@b-|C-4dQ`BIv#iql2@?DAUOO7C9Eg6Cl40sC=Mn$e3S zIuSNP=*Lg4#pgYP&^R zX@?X6Lli08*nP#_uS*4YoGYtjaX0f~kXi+Pwtt|L57!xgba2$Wno=NV{Vmg8)$?dc zC*N8jf>Z=EKWF9X?s<|5q$S>s3)e>4EY%Y6Lp{@7vj#}t4J|mBBUY@oAW<9>R&)C^3yt!2$>X|CoW zpUTRCxRJu%6Wv9XvE@ilUDnck^DSXE{n!QZ1_GLw9&(f76tq$%L;aA{M)9nQ$qo65 zXw+B6w{J%d_Le+Hk1m#vJ&!Vbk1kHuj({C$P|=IME%`sOKy zpWC$GXC4=uUg7P#HZ+CKGvftyXLj}u?u{yT!n!2yY{X$7?G(DEB6WZLh=3IIf z`UAQ|E?8JfN0)lv^RoJr9MvT}d#bPr_av>oSg&bXI?dea+W#u@_DI?TO0%+FF+%fn zPKz;7KcdpVsj=uF29oWayx{R!`Xb`cv@Y~9s?m@dldK*slX0A3L(?b~uKzTVeu@it z^>sTHrK`z>`aO7tr!`J>Ym}vYm?t4Y+S`k|^A{|-vF9N{U{`*4N1Ybe2X0Ur zX#(tsPZGl-tO7|x*7F*vudw^^=y<~B3S9Q$;=<#=V~m8S^I`^iadZ?XGI7CaQnyla z@zFk8Vo}HLU~p8u$qssLXFQ;H#?@)3w~N~3G{>XvXm6J*`GRdQ6Z9GS9ID0as!Q$#$fa0E&2DlSvU(v~db`Sg|Ta2 z;y^`)id%n7dFU)a;iI{}P|Ioi30(N}tam}jquM=Ne^~Dj{iR4I@p1DZ%|(J%FYebK?Zo}T|@Cq0|)E~3oc zj+c*pyAnK&QHps%g(k++xNbQJsG?$XCjMwrY3DAVQUYYiUuXCdq@pm=kf&{dTyC@or1cR;y0&`q;G#Ptn2S>52Z-C;0i=~ zzZ${>FV{S4gpXBtpZ6|+F1EMco{p1@lf9Iw=$ahw$jn(0i4T`DG!QccIfvM_2iyop z%0giFTIR^AUBDidK^m}Oc=Q+(>!L@+tbmdRRT5FLiFR*l<|M_#Hk)y{4kE-)Sqy3Y!^WB1@v;9|Nuo;hldqJt+G;R*pLM-Lb zP_4n5vQ<&<3){s_J3#F6h|h+|h%@qnPY?at5#fwRi3T7kaE^OF0+Ls~EX`&HUI-sL zu?Xy9XS^%3fZTI${dEHT+#`P^`PPXFm0(+s^#^jOMFL$Mt0`IH9jAT%vn@FnIrv!$ zZ(WkdXDB-4WSVV>0yD+<@u#D@osLXu>js);N+cFU)x@N7YaN4ahQ;*Z?ipKl(nvZN zkH{AWkj4Y8Mb(h1{7g*j)jn2iVpnRkB%Rl<(;JN0POwX-oJ!QeM9wap zOgPAS-X~;<5?y<#cMw-R%kMkgvsd$!-R&5U&k7rFva^ykRvIST&c`@SZ||>$mZBh0(BNzqvAlx{B zwM7{(H}yA0X+4N9V2_-ylX37K8G3o6Ph$98Di3p#8#~6gSf6{jkIVKt<1058u+x+c zr_IriKOD+*Q!l=jVyt>~{MoWCH=DFa-_UcJ4y?1yD}_bZh?Y%rrwtbs%wc%M3l^x1 z^`!rDN<-l{{xu~%mM%9F4O($(FB~sK$cH0~<;)e^p^;#>emIv2Tx|QAY6R+ZjtEhp zCpKY6qGp6l5E#c!K&W;N=Uh&G)O$D6%qE z4T_L$a1)Ui>Z`O8EBq!Cbu6xL(4%zXC?fHxI5JI+A$4Zn$c&3_MJrD)B3B=v06{*j z5>E1dCiK!7euv;8aK0bKKgM`G8b?$;tY1?hW$^q}sX`BVDGEgY+S6`A;7BJA*&imS zv3!8j7ddvpN}bDNC0!N7q*LifI#JlXV^_h_R5Fulii&X~ICY$LWzS)lgGVBA=Sx!6 zhyshWtu4k~D6L+Gn#qI5%QHgp^MVTn)!}~6L(lZ&2Us`}C(zy?I0I`wDTF-Hn|o8l zV`_S2Z-AC`h@7xZ%8#N@T?DD#%qRdUCqVTqQEqZhSDRyYxFT#Ghba{3Af&XA^U zj*+DULOB{-pm7*p0+Uuv;xPXa-U;XZ5apP+-+cV4O$EJXfCUX(nd9@kmm?v!KUrwa zyCN)6Qg3sY0vo-7TgKS^#y#TP+Wl|2J8=7N>}Aud#XG$pK4YQOv#Zb`0PjV-YxQn| zA=EN7M|xQ+LN7HCRJQ3Xs+G#aLyK0X;K-B}Dup#FEnb>V6S@+?2zen=-q?NnP6Mmk zny4pH3dS+=nS$v%VFjHxB+LE%lKGN{Y*{PujxZ*+a3b1embUoh7!AFbJ+M%nY?E$5evrJe~86?D}s4Y~-d;9)K?P8u>E*1k~}_)Y@~ z`$dRJ1CnIbTKuj1F55g^hm|R|rsCFNiH%XpKmk*EF+(`@(?9(A@{6ZH~lc7zhs%ku`S{_z_kuh(@4F;Baiw7 zDA4CYl+=4_)1USftl16cJA?N{rUBQ)Ie_r%JGQM74vn*EUc~Z5w@(XEOVf zfhyQg?di0)%4gNmE~3`m6X9FBAa9 zrU%0UAZ!^AHF1M-!B*$vQ_l-vA1S*}c!fVHtagS@5 zGX5@Rdhs{*`+B=+>5UhSI-;KD@`z`^OLi*^GKI6hxyL3Q=cPX6EM7j0dK}s0M%J(H>_#lZ5N2L~y8+4l4m3O;m zITf{QX`9_8WzZ#=v}bx>9o~_=BriggX6^bok=F9#HwVig3rqDbKE&xXe7pdCsxM&R z^JO88rm2XzY+7##plAyR9G2*MNEuM%!v-TgJK3 zO(D+-sbV22oeX)UvH+itH}4ZYQ%e76mHw6j>x;&x7Z2}Zc^b|gp z(XxX@EDlN#A|HIa&Y1z!W03)$O?4$Jp86a`U5S0;o?C<`O@71V9r#7xch|J!z$fjFZ`(Ub4DeG&Cds#y zDsx~$HA1ZzE!FBAJM}~Rx<~O+;&+IPm*o-s6`2KyqI;4{7U&u&&SH0~5?nJ>hnVBv zMaqNgNtv?`gg_%)Qb zeBFstwHxqGwT2Ef3EwGe@nPn$k>=Tw#i?xGAmO zDFrZ5q}51Nf>fY>yiB!1t@khJ-6vk3A7>DFB;Df@%mwA6C^nl2ggwmG+IVn`1S@*Q zu^3wXK+L*)C$Ww+o>%f)Y~;Os$s!FN|F7#CA&OM0htu9j*}{ZG*Dy5=egfV%2GiSt4`4yM*6k~LlqTcGO%HdEI%)T;m zn%Z#VbY-x)nYf;Ket6XT8a_Uz6toDhBdfLCA<0y)=HiEMfIdYzzB%-dEA&2;z(t*w z-skJEQg=Vtnx`I=$qlH@t}YT#i83s@(DZWQ^h9VOH~c}rX?ucp&KGC%$9Pmj8g!wL zPTjOVT5~_HA0;3}um%oVjfrferHJ?dGa0Qx7a5(ilJ7)n#qk602@>O$Lq0sLG6!Q` z1%@I1OO1E@UHZA$a@o|rM#TfT`BM5h+OAV1RU6G{*2LlS@k(M$Y7W2ivd7}9(-`7f zyt5*mjx6C;Dvf(X$m)3&6yt2a3!#oX8Q~PzsGHWy)zyyz1g?jVnryDm_xA6l$gsVF z`BQJG%yCJC(dA*mv*^1CAH4BN254&cOLFi5ofg>{du!gt_0Z6|C7mAb>*`2s-<%nq zV*m^d5OWrl+nS={kPf{IAOrDq&iYzKw7|TRTYPk6!>jSY?aZ;s9hW~53OFnrMyanT z#fw@a%Ok)p5qrWf39?yxfLryY{HYv^l3l&o*)@b5;F(W=CI1U-*EZmhogI&M)nESZ|@s z5bS@Xz3f6=qNdAt1J~bo>ZU}AFg8Dy|3k-VXAeBX*b&=(O}tqyKhkSnTKS>~(Uh1- zx})H6DA-=3VVQt@d?|cr`BvH1U(%2Cr}R@`V41;$7H~=5H=g?KG$cs(;*USSP{8}< zWcn)1^Ko&q`CxDl61Yf=S@Nf(!8Y z?7_-ADt9`APi}?MdpVyUjFbGRH>Ww^aaydC;lcN)8Nc~>xCk*39S*BOa{Z?6y~GZb z79a<0YMl}nMr_xIuL?gXp9pj%%r%SjU%D>L;>VYv&$qu)fRLi})I9pi_~c(VgbN@r<+(}#t~8J!<4Lu6ldM+(tm zs=r^A?~ZIRYkd;{k)aon1RIlk^zSiiiqtz(;h2dPj5gM&${%OF`j4+8C<8F23QG=vyaD{giB)bDbYpw; zB&V-5R;1+g>kFr2Wb=Sfu?AFV5NfsWy0J{3fhCM{eK_7F=53G9t1E`$u--;F*qx81 z7?!y#?Eg#ieFZdMDRGDct-zhQHVJ57`xUU9kTQ;Ss0x0lC^=z+v?)E8g#v}8?&*w?2=dOrl8#4o`Y0U4==-FeiL zc5}G%?h`=mL4T{g8xqS)HGONeIr9cu#eEwaW*jz(6}Wiv+QaWekIwkBGoxR{+#Xd( z1#{;eJH%~!O#r$M2eMM8DCZJC1sk1&VL^N+07VDUctb<}$z}B*CIWW9?vpDiU>yK! z%LfWR}N;Bm!H%m{DEXC`svBjJ&YmZ1_e)_M-ocN zsjHvroTBblpb>WiHdfSAz+*Y;<~ZYVcBXubepfvy5qLp7ELHRwb`j=#;8@@jyGm3> zeKFd_qDSGBQabdxWtwzN%sVwph!6$Ur=CJgt-)mCO@mH<0V{B$nDqG1CMncl;;Y*JicV{QfxFbfguq~`0O-SzHmS?{w^OuBiOhcg82F2E1=aL5q58lUSU0KM9ZOJ2HvkQEc>in@ih=qE=gt=oaaWkH?wm$ z7AD^moX{q0U;hk0GTfJ$yvH|w|7>d~le!LCl|%Hc&Xdb+be>I?+bKA@g^JJS?p+Fo zbE<gmCYNnGZ4&{47)xYd_aJ-fOZEl5kMdtE5rpSELXHO75i-1 z6OL#5wN#Avb$2V@&8;)+j*1|k4mcxi0{)z+T3nmB$3%;O1pVcu7_E~cLh$>X5miHcJZ8Se|LY8s*Rd6K+$b5K) zz3RGfWr;WIR|_r!>aE4_`b2dV;W7)nZ)0_1fxD}|${9p!V-@}*GbFJQZhQb^kGFVW zb?Vy1-5jjF$&7Lsx`{Fg_o_K}h*FLN2^KXMtt zKJy@0+r7zmRD(I3-VNh zpr{VU)eYc2_SWC_9Mc%HP1!t+kK&ischLuM$$kB?9Eq`BppSRF$r@C5z2j&7J~=I; zRQJ8r&0i_A@ZH4z7OA!t$B`!|H#(6TK3#@>gLf15^tzP`W2G#tNYBUe{s%*|gI<8; z^t;R-WhXV?-bSh_0&}!nx)Q5rBSYGX@7ah=HN!PG`tU;GA3;WM{Wd7Ch0k+|dC`b6 zyZ13-V)s6V%}crU9SKR>3N7Tvm7%`XM^@@40vJBy2B%^Q9hK(oy?Hxo-RG+=C3M_% z0O+m4C549isQ}#v^o!&)DtOCO-Q~uHg30rOB=%?Gl0|E$_MTMI<+UQ~nOQPQlW}6;=Szje4g|GmueWFJF z5fRHCNz3~a`6JSl|4Gml;jhs1O$t1vBRl_!V?zFkV}drY;J4tIykK=kad{dhvn~{X zs8_-A6FOR3xd!T5J-*R~`^t7CJ{az$S@^3+_e?JbFD-`VpsTEjnGvm@9< zKLx!`^(ZS$`f6{iKH>&v?mjeK3Q{S&6pgBAlz@!UNj6;;z zqhz?;(==t|*BIC+%?!;ne83ldQZW7I4h}BwOS1*rohjaO_Gk`|hFz<5p%JU@Lc#Ds z$)gw30Ed{kxI>NZxO>oyy+*v-_o&S>Hj`bRn7q*EBLKC}j0BX1rGzJRILdA-bGkNZ z=RZx8ARBn<+stC2Kdf~qkOIi@M6^tSOc9Us-5Dodr?Oke2iE@9qct7beI6>;haKKw zk~Zi~Z`hiW1s1Hx)6^QK^sYAbJ5gJo+je|`Ebpttz+ud4>vehcf@Ivn;UFQXd_k9gtsL2^-P7}+P z{)!sGK-5?v?|R+=deiWV1C&6$2f#pP%LlMRHw=(Ao(<;Sbr>Q?5cdrfO~FZ)K8+QW7J3ViqVM-*@QJRqC8HR% z7?0oIfFg^{>pUq?-8`Pk>EJ(WX1Rl2Lmlw&c7hP$L*(~*pMlp5LRPXghN!POGzJlF zT6$sDUv`t=uA6EihywfLhM8SRJcWZF7ZCt$iJ%JLtuE|s7ev#THff`4rAIuLxFl+m zfxF(JeP>j}ua{a?!Xo5mrcUQ-yqDADct}^ZbkV`aru#rb-|Rp-vB}kW-QS zRf9`3XOL!&nGJQ0(%rJPS`3hoKNYodTnht$)#lmTG3}oBY}}@*k>a%dtj*eZBWb6l zn;pm)J?;#W_;ivVx{hUD=^f`n@n0QCPlHmlzYVMqFC!@xA+ls$8fvB0!`!Y&y!@_e zmLgDf?SX@#+Z)MH&hM65?Wd(Kp*kC|l=Yx(r_i6C;$;u+Q$i(q`kS%c2DHp!&Doq9 ziL$Dspab|BdUOT$PychAdy>BQQs}OVNMZ|ne+_1egTc=jBc`j`>B}2l&OxJOFB}7H zAOTnQWa=LMOgDV3(|qxWcc*syrTvYapX4pjTyK*!%U+0~IMKB|H- zG5D`Cd*_T(ATsoojNJ@dCP2P*(QKn0rz4;Soo7@K6WwhitJ?}X+`V8XrnVhYN zXoK%hp7GtfsmI~U5Qz4$!N05ewVn$C#J~zHfau=n^M^!K6FIvtvN=M3zBr(cN?ETi zf{b7eY>wQ)5;eS%@Xm^bJ^Ec-g?u4v&BVS_WxE4;r%aK;;GrAbnuRQC^#Yq#O~&JK ziTusO_LZ_`HY+{;TwY^n)ChLKXSD43xasQVM6%1|cN}BPoZJ}tMdt+oo!fOUh!ecH zd}>WGxa)76^s-IZ<1>vm*VGMMNnKEXoP;7_M!fx|Uew0I4%-K4vfxw1P*ud0K9_!S zGcL_OamXY%q+nLDOdWivCf0&!zq^8tjo}@~bVrjTxhKlU z$t&LK@qJ7U5VJzhggspq*LqVM^?G9=%kg=l&pjK=1g@a6xayDf+Gf8ScpZ?<_@UgA z5;M?u0IWA27Zwz~%yQ-q%uA@mm!J@&lUsw*+y%*5xDX8=q(#7^pB+{nf?m zI9{?o?sP4`JfQy>@YaTM<;-5BJTIZrOy^ly9dKeaHE6j`6c|LSEcOi8?C06hv@Z0zQc%Mw zg2KW%fFBw{*$~WyrilLn>jalAxAHmWNO}@gfcULaX`pkeb>eU%w5Zy{yRo(|ND&#s z=7tic--8I;$TT2sPtzLCXqtsaJ=QO{@k;TeU^B)L5i{TxCEaDG3QRIz`S{+)SoF}K z)o*J|Wk7Gm$eSQQ9JtI9@VN>CgIN@dD5M%d*9G@V*TpH6+0e+q*gV=ffbX6Z2R*Kz z@bhQ@dq1!~?;~QFz7Z?h=5adrbR?vf#(qKqJB`9sp8RaOZ2fM!^gd@zuTV8U zzdI7NeK^Kf7D%9tMolEu{|=$nbkcR_<9q(4>BV2eIiU~>Z^NTgiLDr3Q9*!6fjekb z?6_{V?=^!;;5`SKo*f$%T{G)X_MiqqMzTofUKevp7)}>Exe{Kk$y~iX{3FdtnUwJxo{9*(5a-Rn;Gr?PZqL%$VuAIY=}e=ZzRk+|w28Sj z@)HOT*wU4n@W!>UCt+eXz;gMNB(0so+G@o9k&WBqWx^=sh~UWLPoH`5=p+x~X~e=) z%jll7yxLL`bWoG3W5I}l#R`GRhIaZ;Kk6eZ%M$~2`_UqkS);Z2geAi(zeHofrD$Y7;}k4j5hrUZZTP}l^9tt+uN@P zCMN058$zb0ww_!6mu4IxH+{b#M+F|aVTXeHUO!L?|MECyy(!sCrf2`4!*qWi6#eE% z1E0>4h?WVTsLaF%=v?p9F&Xfz41>AwrrEbLBJuZa8%h3r4cf#JR32l;f zSAxOqnab5$?h$X{)pJK{DL}%rdW%OQv=?NuFY^z3pV2Y6Ti>m7&6LEk(i*Wr3m=_C z76t4KLX~zn9<~L&BH_XYHT%EF`|e{o5+&SJEwioRowe{T;wu*ClDh8#)UB#3p2T@w zGfkQHPh+!W>-xjkNV(sCzPoz%;8B|_7F;l#X57RFMa<{fNUmJ;jf@TmZkR=G%c;P| ze%l`HZXHu$)XO?gBus-yjmb?D@f* zj7qcxEn!nCs*~-%lX5!pdKcALpxi*9-{tmrx_#xc{qpwr+)Y94Od@RL-QOPNsl`Bh zWcAXs$%N=W2a^zO9uAbVP*K!fz&~}v!#a-BBo1EjtQgt4%h_YEwtlF7A4;ofd(iaL zkyK5~62yH1MUO2uEw;gZ3f}{k#K=0)C-pL8n=AC;G%nFre5+S7q0H)hhLGS8#cKCU z5OzS`b?Sz~NUHNxZIEC%qCX57DbEW1K(ZIK1 znN{z+^4H#M-{-hK+2HJ`Q=_q=OSjUAEfgp}|1T;~@Vg2Whku#Jx)>GvuOcuuZLB2{ zv)Otpy14f@+|k7FtPs-so0e$XF|@A{)V(i%pEJmE742>mtEJFUYbNYf&mN{y`oR+3 zgTH%^lL|FF$1-%l9-{&a1$Ynca4pE+l2_?OL$Q-h)0!AaLg8MauQ zRuQZRaAjSf45@zxJ7sDG5v$93qq!-`@ndi9E?Q#z3}=hg3W_RmE!G7KHU2ItyCuYh z2xvw#+vXf9&}#uQpU#7@oiUTLp^|#5;j5)(?IPjGKJnyQB6%8$4X|nJt56f=iqr~{ zqrb_$H2$Dv*R%+hZXbkpn_M6rYxw>!9+U}tV8D1-4&=OsZ4=&h+HPTsSqdI)cPFL z&3b}Go>6Ii1DIYX%6Upr_f8m~^Yq%g1(ZH@TK_Qj^}Yh*@~F#U3G+o$;0^@W z9jzJ#R3}Ffh*_g>57BBtldf;c*P20N{NgJOQkfT6fJLsJK>^UNo^uevy#Dx3F8rCQ zDPUH3Z&-&NlA?JKuyYr`fId63g7J^%hFLE2WKFrXh&16>W74IKt)b&ULn@>GkP(t4UFd?Zv=p@05`{%jnYZ@!UuI z1Ppgw3zLdlmsT%LX9$&6q={=!_Jp#|fqbl~B*WLa#C&MP%)#Bt1T*o*@X*`^Y-Ha& zMaL3B2k(zVUc}FUa66TGG`mfCd+R(Xlah`7EE%@BF`WKStRwJ0W1UNezEj~r)(MYY z(lg+bITf;EL*8-#h7sdd?ca`99!_^_n`VdJtnphykj_u7x~Rd$ZbO$k4628qekd7 zr?LOEs!R$z{L|xX@D;c#vlLeBy>!oY`Q2EYmvp2W;v?N)_+vJ9V_+Y9q_BLo8VqJS zm3`Do_JNU&Z5?#}yR*R z((R-T)yeBmR~So;d^gv>LQH?RfwSW9CWUjwq(c2qD**+O1FkoEqZ>Wm)D%f}5lb?W5>;p*n4AbJ47ILs0~?w6P#O?W%82(Ng&ns5j!X`fLrvs>v2`omx+ z3Kcngc4j#FI<(|G*8GL!`(Ewqin8@tUx{9udxQhx?JB%5llH7f2`(eGyawrnWJ02W*S zx5a+hb&RnhUFVa(8j5S%XeYvCP5h${p?hiv>(NCA^SAbw1DO8IbfSQF4H=$o*VB-N zxcutIL>b=ZD@Ysk8<&jN{rYQwkzzr3*HXyMV50PoK<8B#zw0*7tH0tLE}$NI2-H5_ z?d~aF5Bb*4?w?wBJ!SDG+M_Wj05KYu0{&_~ugEi%8YoW)BJ^*@Rsg9@NRZd7}+I!n!9402E@A<-kswLcXmx zZKp!*HtK&*Zer7(wesBW(qUvY%JlmUfXtQyj8fRW#^dzMbm6x(w3J`$LHw#kl`QHp zKLXt?dEy5=D^at)<|XUu%OjsE)VdTuV6S9MQRHL?(LC0K|nSgG{PkY z#D%T|(FZCjf_P*p>X7iruN!1q|D_+31Pn|Z5Ca1fY03C1=SHh-53=L{KavglY926Y z9T(*#GU@4pvX>LTW_andr=exmK zm{&4WUg`;xxEe1eirC$x;1#!^>#m5g*<#n=x6gJyYB-7D0oEDlF&;F!6tAJT z+9ge~PUt@R)7)&02gQmA4ge4TuIqGA3Epadvn91T)sLC)wdopmBec%Ozh=InWkS9@ zxwLGC)EZMDrSL=!NKeo7`7|iCj{65>TAO{Ue)K^=A>!9KqoCNU^a{x)zq%~7p5{O6 zJF(z^^|HQSd50-(QEL9JMh%2l-o?~rRu|5t<$Z6!bp5*l(_kW0+UFWN_F4P$uyQUR zA{;FX!3}7#Y{IZo_PS$}y`f*w_tlB7gy1SWY9J55_?*{#iz*IU=$tuzWahOJyHMeY z38dg5KngBfmpIJz9Ys_2ZX~9BvdwPIlV<5eup@UvXaP(m%^+|KmoLiL*_kt|?wB6K ze^Rt>vhO$O@mb|Us!keDiVz&{NOKGIrYX{85{filL159nz<_ z{s%{|%2uAf)31{}GM!35CrCSy38#?^mrB`tMbNOT_Bw1;G$;aA{66pb${yxbF$stq z##Zz}6QPWOjp5<2aE~8mdh(~4o-Co_wYE3&wn$*nJmm+>4{OG6^K+QnJW^d{U=(*U z9yI46Kf(Mn0bePh(zq?lxjJ!+@lSS+>4K<#4iV!-|Et@=a_3FSpa9<=y%wzOxTlAI znrTqgOybIu=_F^~zh)&&ga(G>~z<6J1x9Y#D9w^;w-N)_rH+y zY^};Y<@5Oq;!C&VIzxnVIZeV8Kpf4HvPTriWta=_tCQF`w9EStfhZ-^Ex2=*}Irn zKsM+F0$s@l5f=28Vq)sGH}L-;=~9PpCAPI!m7nZF;!qBy&%dh6SO^qhAs;0A7$49rWs)dIx}Gfxarg%+~WlXCf?M`(!bCpEf3aH z{jUUFF;-&Z@!B=|rrP!$Pru_2R|uN_#sv9hZBgCfwdVHX-R(*fYl1+<5~(=Hdq{tr zd=SxF4BV#V>}^88E+y+7f|974ydIbwysBo4#3ZDFhh281|r7>TelZOwM z>X3)a6OV|w??Ba(ugJ=nwP!{wN6wy&yBc9=fG&L=Gi;1 z9oS5wsvU~s33%jpUIgU>C0ndbnJoN04m3WJEJi*+KuIg$x!@l8ovOF@*msBPyv_$w zk&Z71zv{A4S4cwFA3pju)VPg8-^b4MZL5x$&i&76iLXbHuJ6+l_$Nx@GQed;!GP7l zM0vCpPs4;CErikbrVC~U-|DriTj@VIsSgTdn!Cl2OLGe zJdZBmc@}gXvUQw)13u zx1E zpP*F-#+`Ke-6j=tY5xVQU68!{y9t`Y!@!)*REZV#&!BP}7!e3q-7#^RAiA;R^Yd&M zhE@ri4 z34ussxeXkk{2UM$Uim&Co;#=sUT~e%`5JU`qgFwlhS^^gRRLg^z#t)wG4M3!v0o(e zmRiB;^waAV-y7BUex42(a+F)q3m04j>yy?j2cZ^FXLTJ9de%hR)t}ftymy7T=gsOq zKVS8Es#P?J0!)1WXwtJ=3?u}@c>A`5>X-i>i;(+17GYTwe#CZ}G}bxjYu98RFX6EQ z0DwcfYDRL1Tbr<@W^GE#t`U!8_isVC?foh*x&?uqe8!TR@E3EVl?!7-aLX41yZAjT z#AAR_8~_NjkCCnywvz;21~w=m~|N2r@-&gB15_SOMS{onsMjkJP-h!WC`QW7IX zX+cTp25AB50Rjdhh=d>@AOa%YAUQ(m?jF)TYK+?W-C0<#_vicjZ;Zv=z0Z5j^E}Su z@i+l^(t#SfIja5V-w${ZnX|2O3F>?5^o*F>zKvZ)F!&Lc3~1_Ekim6BDYJP+#a#==1`lGMMVXng8Y&bxX;lZbF2n66Fz0 zk&jQWOqI+S5FtF=pNPvzy6P6-R+FF{xoiwFyR=t&19u7lFdo7{4mM*E05m-LhnL#m3dnT|?jb$<2@FoznoN1!3x%4vt){2$-lhaL zL50IbEeWZ7DNqjhE-?4%?zyqvG=&3>>zZ#l0REk(f99%!CSH|AeFR7N+4YEoeED0; zlNk!4c~}7ouT76G250a9flRcY40m&ElFv#$!I_>@7NnQJ(u}yPT?>fTvsUyyoVxx?h>UYK9`M$C;FV9de1V-aNfyt>Lwv%w6)4pyd&Fx%6Yu zijR^32TFQmr)chW?W00~QxVnianmrNzgL(m{z_y4cvs)|F4I^8zB$F!Od9j2@A%C% zfL&|~N5UH(_SI-bF`i;`QqHrepd9li@fuZz>^L%96G1>|nx$wmp?J-c@)>JRN=JMm zw3=OnthQVEUK)??CBnLHMc}k(UD)z@!xXFxZOYe}RxtV)y+dZXyWuk~aYXi6ASeu2 zLEuuMB0D`{FVUE1vCM~f-3k*JrikBY5%tO2shYXacY^Dq8B>G$Vz_I)Dq%7VXGYTi z;&Lu>^o6Kj4Rrw)lSwAKfIbp7q6>lzN!LCyyD#jYALg%7Nn4D6*$n zE>I}KF@fN|n(FMYah*fjSUzn_Mw)|+^A);}vYx_I&Jz&}QeGSCZ??kEzFE9+_2BKD zOj6vPTQX3+7^)JB-dnv*2ubA8dOFRdjcd%(0}Aiv!My6T)A4>aYAP_W7=#+4?{{?d z5ai=`Fm&X5cw>E16C##*mxXzQ?8wM4={`cTYnkLDt0=!Mr?#`|{j`Npx49KD5a9AAAc}*M(%1PFr3<4#oRbTB=oB z6xM{0xn_9EC2e63WQ>p!yV)5x?B4@~A7Xo``pLYJ77@BxU!8+V^DZGexSEVV6@n#j zRtN(#0!T&jxiPaxUmW~ItpG{?(C0vnHoR3Hk`zp0pbNt{-g$n9niy@t!_1V|UuYhY zTqHJF-H&QmP}@<0Q+;@7@KFjExNA80av+->leMV}hdoA6jb=n7%d@AO01!;eNM{7f&}#CntX^jCM>gEcis9AAElN7(Un=o0ry`Y4GX!<( zUM_ysyvLbX6D7Nowk7G6y1G_=fMrnN&$);WjoPJsuX1o^k>^xFRfuZG%zWW>+>DGT z@cyaI#KgO9RH#l?0JH*pA3B%9k|dFP6CDQCK`3PW7aAc)cf~6^Zmgv-Hy=8#@okbg zT4Ha8UPSj@+~X!{fAn394yFqLSs=3#%ANUjQ^TpZRnp&KNmbop#wG;RG52^X9K`zx z{GvLTTVAl>H(ptLIe_D|I$z$kO(e0qru$Qt%F>E=-;lC*tv)Zi_K5m~P0Kg}X*3+8 zKoqS1pwseo+QL|>U#Md203O-?`%xydeK0Vw$ARty%4{4kL@(%)Lv ze(G|A+!rRE1&>Pvx(g@e<{q09wqB?7+3L^? ziahgzv>C)fQwgEy!xCRSj6q-t+|9H4NDHtcV0|=ItlN647N76f_KePa81=z#B@*m-@H_;VNiD7F7dj3|N&eC=j`$g?*+9F@(`{DVqc@tsPmA3+Ia z&e$4iQTV;;PC-}Q0=i^G)O;@z?FY|m{}(V$OU@n*Am5Q+DUJ7m_WxH)5;QJeNBwQI|KTU?b)czMaVy8y?%>{_-gFmUVVY$1^gghER|M|~8 zODww2;;3A%y|jPn-A!OweX84i+obvc#b7pSHh3wni97Rt;Tt_7q?zYI|08oIHh-fH{!fKyW&h-@k_74TJ5l? z6v`T}x6-X$I3xjh8O6FuAFe28!N+!w@jb1N68q03R2wq#zC1@$9FPt470f@s96De^ zPI=`tDc0N~JkB++N&E`q4E=y{rb;GD9b6Ta*7ibIky1C8OR?HAewvV+H(aq+@Hw5l zg@1;L2#9LuU+0Xa*e(p#uJ@~q{C9&>5;AL@Shg{3PF)#ux%$Mv7@ zo5+NVW%fN@xm)OfP4l(S0LW!8aElE6@@%}phgBoku$We@4{b1h=6xO+XA|Oix858$CT)1Xr zXZ_HrVZCrqVLM}nJo2E`*l0vOy=K$kdadKe!eqrQ{i2WRBx9MqAP=7iT9X>{`iCY}ti!?hn`MM}c2X8Q z+1RCF%cr*rXZ^GTJjFvWT4^5Pv!R*%N2!lN&fu@65tj9nrg^0<&)1y7ZA?LTF71@! zd=HheE*9}*QFCVxNT==&*FL$!{S%&i2T&JZwd1>p9nD~+{A5NfT;UjBbf(6a==c|h^Ab&Dka&kQXX53@#R=xH;L z(^176|4Pt_oIR2424j>l-yj_QZx9aA>oXo=xaK8vMbDpaM7%*BlXwm}sKeUJezN_aW(+BS;V^rSr#{+_$K<&p7uQ-8L zU?IG4xNhk<_~0*K{6YCQVEhBqoR&dMYTR%H)9;Pz(65c_d!RD;bwz+iIM8&gO?(UVB@=VK*vnd7BFXAn-56byfNLWHVw8{+rt1 z8CQ?FUgSU223{gaP)23G*tv-cep%l5^8qN??@*y*lckSZ%HfT8c!aLev-^tsBLRi~ zA}<1RsvEn(jjcw9rT-!?8Z6SW#Ug#C|Cyp)iKtuWu>TUXVV zoXtU`l{u2Df6AxoE;zGRs;-)h)Bn!|z4O8wy7w8JVbL5&i2b>M;3^whJ>{e^I&Mgw z!hO^FZX}qIXb!8=noVBB=1Ug-h14VEZu)yK6|>;aE;JPD=1GuyX4qxH^WPN>+0Nn? zng(jUM2EiY^IN(}sdV~z@Hi!^uzKDYg${l|I(3N9{Xt)>8XTL?Q3=%#+NSEfnK4Gl zm44E{^T-*Z?8P4Btem1_{zrx$n^q`EFyMQpb}8E`8ygz^qhZQf1}`=Dl5A!99kIc_ z=AP@m_q4H5|ZBEB45*G8G5qf81u4 zVPx;XN|6v7Cp$#raG|m{e6Z>jE`U|nU0r(UICY3slRnb#dsL6(#&&6#r!aEk<7g=B zy&O8M=sG;zz(G}OWbwCOwcC}m0KTV$6lYP$@ ztJ}w(?FK;w7!~X>ym@XyH2nMthaVGZpy@hTeFrp9J1+zhr@>)?wIlt7lJfo3xUQJ< z83}bMmp*TYCHgQQkL!DXB?x=N2q z$*H@FupHUp@i3Q24sD~<_Iv*`!xXB)rLpfEv`x;zlF#Ve*eCy z2Maq*U4T{f`h2e8jbl{D1_@1>*yqn>iB)n!zWmChPoF`Wm@VmRa%KGYB9JOYGe`MZ(PqBP6U}v0=#)5|z0f~EB*f+fkQC?s%wJo1HW7m+z^#{!dnggRQvJ8E0^x=yz-CBhDzZI$Ge<@Pmpzzh2yX>UH1q5eL z5#IQG`nw6o6{~HKlD;hD_M4Ry4eMvX3yL*<(`pgN<~F5WGp(q(KbM;Ql@qb>jT50y z|BEQq8N^c#U+X@a>$do<-0{AzFS#kYi!;6{SJwJF1kSG?20-AuOQA}(KK!J9)V_bH z3x1Z-=OA#8R+48>(aL|S3%2n~$JM-Uf!}^A{GAitXoo-3dwunB^y8#tC4gR5b7`ym zS5XX~Lun#Qs51$XvV94W@+?tEKgaA9fB&iB+4DF63{HQI!@z;px+gkLfJY(r?iVfJ zuA1MKfdaaKGEh7P9$DexrQJKcT=;KNxN(FR@se@#k`W$f6-aD?C)a`k!i=bN(u%lggC9k`nS-Uw)Gq)OoVldJR`2 z&(-|wvvfKc#!Ob6A0A|LJz?PhJHv=oaVMwAKfM>(fv+qdZ(Affo_3j_PKmiiEbYhm z(|555?YsD{qvH81;vBr)ZX1Jt*V3&zH)wIvwqWF1XhGm=sQPKNCBoZ_TDKeR29eh} z44+j~C!>ism_ol1BjR0$Y>ethhASyY|0G5L)V+=yJcW60#(rO2MLN9Sbf^9rns}l& z(&o!l+MgpdB)>NC@&RH*2Ntx>onK-_B9+t`)w$0iSdN?II`%8wCOVABX@*2OB;De# z{)$)9b=7V&3#&ymBNmY6YZ}pGxs70*0eS*K51mrrqSmi%^-aK#xA0fhAvp^FRZcg= z&2nT|d7^NO{#j4E!mtYb*pJ?g26r0fg;O;Lljuro0rhyHX|t_Qgzx?8LDf_1!dLCq z@jiMX&&%P_nE1mTa+`H!DThBhdwbp;AE=3phJ(A zuo2{&l}ltmecsJg@Fr_-r_AskMimQ~XAwqyKAr!T3wVV^fmNiKf{83d(|M&d_)3A} zIZ6ein;!@@ZX#mea@>9e%4kLVHWnz~H&?oD8B;SJ=e)HV5))*nFPmiW2HQspYLpDi z$-+Cjni1s(6YiY3OYf2q3$-iS)n67q2B+;%m6povl_@Ds(d|LRqYnn=-LCe;W-NKO zAVIw}-u^Lq+gg-+LQ=SGsn|9CFrvLgOZCG|BC6p65XRU|-{-S7!ijH7d{5oQqq#?- zE13q5x8Zc4?AsrlVc<;_i>NlQRSLZ_k)sPq5jFVuf_X(K|Et^pfP9Pwyuie>1w-n? zhPPUjNcar&Cr(9-Vc^IEQVsfY!w53sck_e7S@^kRc3W!PH2LBueornR0KX>aK4uc=_X}kEqQlTN9;_{?4g8&-`bHnW&l2;ZTHwyNWlX zCpuGrOR?aiVb9iTN0Umc7Y-D3nqkc<;FR>ELGt9B8;#r9wKBvvj0pWim0Lrivv|AD z(R>WZ1-4xeEW`{(6r}(kiGdXIn4J3mKgIQ;4NzRuLH@h6R?cqPdFYA)703MVjO~^r zUy@LbTd(vt?%jdk`i>RbBD@;=TI~nQpKjcD05|T_&Gocyb>hI&C&;%FG?RMR*1KL} z@W<)~j8d3nnf)h%Y5$C#m2gntV73#xkGJXrwB&#tEjjp;{1Y!)=+LvMqA|NmT~)dN zz!k}=ej95Iyx`s|A9vvoN#H&p2@Eu1OV&K5XS1Fn`Umh$tIlblI=qtEfNopYc;)te zZCm3y%L^0&p2-6A7lgQm%vwJ=C;UYOzm^MKm-M)=PqzBG#Uv--7s0^_b#4>jPje$rRe~>nU{MrT z0$@h`&IVsI&L+~)DBs}ZMr*hn{}dX;=cFs7073(GXGkIm0@t$EcJf#*PEEYY z%im>OvR`Ff#k4LfIZ6vR-Su5{dIo-XksuyHYYlQcyqwGPx@P=d-^jRwZq8r`t+<8b zsRZ_639Wdp2&JEGF}OKfCZh1CCJ^+w`{`+pN_q-yE=1s#*7rRl#3&vfwRnqXjEYO) zPf1{+8beIVs&yca(Md>U8o}r+g1tJ2(!U?@t1PfjhkN&f*6&;#BAs_Fr7FsQl5x() z!_VHM_AxO6H~zOQkp0GGHf$OR?cytsIM*kCvLdw6tcat>g*% zok;=dyNC9R0HFMq%T$!#DL2E}>2U}6*Z)yhs}8stR(e-b;r$o%?dH1gI}UK>I~)^U zQ^7KP53t*ULQMcm#yH%XK$sv-yaYUhae%VMpjb5&yt<`(iwO z;56`pvvO%2Ys^+ROAAAvw&K|3MvfTr4`P?^rG*>nmUa}79$%$9Gq$>WMqqp(zD7BieP=3-AmVfXXN#yQ@G=U8cl7YQV;Kd(OWFHFIeY*9p#7GVpOAW{G^X$UA`C^ z|85|sxF-lHq+!nb&lJt0*b^B{d0Z*??*y%M_n^a_ZBloMShhSJo_Orfb^~64Z44`dOGO!PPpK$^-&=j&Fcw!dPd4K@H=xXsW@Nm z1q=e!KdxgGGr&GG>|%K<^BMexYxfxWcOJA==PP@O+gg`4FNN8qjN+x7r~+>Q@egMp|tMTByHv>Nw7Nkxirl6#AinZ?>;tU_)q-|y09*`sre1^!mpjlmvh-J{3;7f{3Z*$?|&i-Bx!?RkO5;HAn$R{;FrN9$s00b53l6*%$G3|H#5kC*MHx!x7TpfK-$XK6#F_gZ>(F95~X zKQ#LTX>cCp^&@-3-M{j5M_QQ-o|~AtVJan{Hz55(Zy>Cv8Yx@eh|99`Iga69x-Fic z1V$GZOQX)N3CSobb}?@7wp74_Bm#0A0yXPmi94pRWmg2}BqUFRjtkBI69Km;Kngvv zFG{5Pcb=xao+LVDqDbn*73FEYxwlvTFfa zH2{s&#Zdj+9V!R~Y%792`DqqTRMze27$-6i){YGLN6XZZ>HMM=w}TF1{l2yU4LetA(VAyp;U`jft!n*$)YX96 zl=bCM&8em$e5dOESxWG)ih~gfJ!>acEO#r8f01KtODeA?BwnLg`=6yXIXkAN@AK6E zL0o*%UnK6G@+QW)zh0Y6Kz={=t#mj2E3Fj@!6()wlN<*3n-FbqPEqe_SwnhGp?kPG z0PNcw%#a6HIH=pvRekQbBrVS2EtdHY;$m5cUc%OOq0Ry^t-yYJ+~^YnF@~zazKE+W znIq?7>2)?BoOQK!6B3|@Xg8;MciU3m)?tFt{f2t!%s_aE>(m(exrbh!ik38rS~EEUfR|P5)ODMUuY$M^BnQJeH}o1>|0s|$g%%N zw|bjvsE@ow_T%}zvZDXW+KR;e?g@Du5jDZL&wU661m*yP(Oc~mpa)boi>2HOOf=uc zD*O2Ujkwqh^JSWt9xJK^DY|Zi_M-PnrvFD}jydRIXb~{LY%q&E7F2b1C{YPHpOhDc zsvmSab?l}QTF{xY$-aA)Q} z^EHnKw32cEcFYAc#a#6S9{r{WSDIn;sDr+OJzqp(AdJ^?#(8i?hCZw&k7{F;2f-#- z`@qSSQQiUjG(BLW>_6+J&`Ea#bmimFXY4V2p?`qkMe4WK?UD~(Cd=)<@MkN*TrEF~ zR72u&7*heWyZ~5>P

K9wNe3Zfm%YM9 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ⅈ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�$y*?{1_8 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∾OKWT2BCGLO07Z>KY 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 ?$ejku}Um1+c{1PT0%Us^fZ#Cg0gW<9Z_9N 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¬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

cq(PQOotA2 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

{d<_m)79C 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 ><+?>Te%|C#|FQd?k#7J^v$BG|7nORsMVqqJ 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 Pn;k@6#5Z{WnQZPvGh|pqzM`zY@3m^V zSBCu`p>$*18QpmP49O-D?&chZ#WK{<8T&wXI(z0jCY1mQ)bjZtSo5Nmy_vSxJWv8j zs30YR)6hQ>gh$wrG}&a7&5`l{lvCx6D`H#98j#U9^*G*mUb46ln|`eIJ@)1J6&cce z-zyV+qmX}3n&3_B^3dj0N+WXyZpC3XkMpJUgU_C*IR97Cpf9Ck*v;ExEwR~Z{UA`v zuUe~_c)<;hD<9^o7I8{TYIR{E$D7uIpoF97Z(J`UBe*n&X9Xr~3{B|6eNK~;hn`B# z0M9MF+TlW!q3&;Ammd6{>9CM4cQ_{6hpJ2!b18xHLcHW#4zWbmxBPH{ zS34zO8hurwA({%1Kb`=o=Omv@z1IRM+vt|niHzK|W^B5NGz|e_X}oaxcmCNRW<5?= zX`PEeC!%u|!2UqFWDnF*xD51Qw98lr5m_M2O2H|%k%Yg`83ml>H-3v*Sn3cE5(O)J z;;S|2OV|3Qu@=TUsZf$QPO;YJ$ypCiVT=u5HJc;8c2_%Wkdq{$7se4#9N66* z1a-3+jWLLocZ>u;;P-yzaD>IFtc^LQrT@EoaQ=5Ub+kMRY{1`NK+llT@aggI=w*lD zx2h3fw!DpZ)kes)*lzd7w+g_z9`Fw!tn1b@Fr1+CFcPlkNugTu_#Z31UU zi@#>-1y0eiYEf>}Yt>LuuRG8+OS>@vNV z9*Cp^btkGu4yj!~Wkf&Uu0g-nm#0G%Q{$&u*U>lk*ZtJt)v(M-!*gLh;!v-f*YSQ~ zzpl;~&!5pr?gnu2pQZf^0^|!YRlDE0a3m6?U2Q+OR${TcR^3BQ1_tIT4}-psR>0}e z9P%gzG1eR_PwhK7hLU^5o4cDWYK)I`&l}LBWI8`*n>E^g_*6%QKgV;!Mzr&V#ay=P z*+P%ko!ge))7`s)h!<0ihqB<+Yv`{R&tta(fz zuhJZ?5|!|a&#!5cA=TlY-NAXVTJ_-`8O+!~sHv|!2L9J~!?N}0;)>}cWtBHv)(JSW z4!4y*V!js3qh`laUM2qkc~oP7BH@1MfkS!XekTNkolcb@fL$5*un~-8lN`4`R**~E ziJ}TlYT*mvXBjfBY1BD!8nQ82@0sQxcFd>)dJJBrJKK0-+x;W;LY*aI#y z*kzyXi>d-i-Eg}Ajp@^;mv@JmQ)~+!4*|9Fe#5V>HSy7YhV!VAZ!6xxXr2&>Ru=cB z2RDH>g6WG|ks_mC5nOv$AaKrlcLFADES5*S@E zf*dbS#0L$ii_eLKh~;)0tSgFR3ZSP7QSVu3D%wMk7C+XM)NDl*DMoHUhuK13%0OgNMM==Wr z^L@_l__T)cTL|U@pL*S5{q6*iMFaS+0V0MtUJUjckZSXwb*s z^IfqEe8iPVC3_e@7zap2pI|K$1{g;abO_jpWv}TAxtl_b>r&PwIF-^pVCRVMx$jK?^ukhAcWZ{seId%E?Heo=wSkCc6L)=MehL zcl#aug64v*)afCPmTJv4phrT*J}|cs`}vG_imtbWp}ZL=2)1C=&`sEEmMGPg@D7)@ zhfTsHhBwOmIUo|M>y6a?#V0_|;4_7i7q?ZTafQ_oOSIk}qJq#Z$4NWhslx&}lhxwg z@-r@2e)I}$C@sWO45I$WK_Z|@wgQ47s7P?OIFNP+?b--cL z#B*``7xAZfxFXW$o2=D9nR_aIX|f=-_vkAEEbJ&LF2J;C=w<{`q#o zQ~5;+`L;E>IG_-E7XlgoNithOA%kCcZ#9N=9(V`rBywI{t^w`4zQZhpi@dLZdb{Q` zmuJvS5-wxoD>9KU;x__0{iyWOILqYA{%WApF;n2razqL!=m>&PC+VvhR^UQ#isx7G zZ8e}1QZ=FDAhmmj(h>p**4G6)n)(AV#+*=^8Fhpcp0UI~qcyGzn%`dnKS%m^P^N%5 z9D5)h`M|A)5+-!c{NY_{g1G`BB#)}_5pokp6|*lo&J8ZT44T_6-#YT04@CrtMNP`{ zDp;*Hi%v?ha{wWY5qZ`2MLz$(Sbz7UY{UI~nOrGa>T^jKTp$I|Zz8Z`3Sf{Igm$|O zuyIX;C*o+EC*lc9Cwp^%4+l&8mAWqWFDz)6Wi9t>^vG2qP6N+l%Yg3vBG}IXxWMaN zBbQ(6-@n?JOZBELTNHKzE?-aOlk`2+a_Ufg@18{)JV}t@YIgWDY?b!D_gRoQeI-2)|Ok`isC@_bxRL+8lR`5Nm}v=rvoYg0>NfR9<7 z*WiC7NCGk*tdT>$JKVOMa^idbzmtCmyZ!vCcGkP^M{oDnt8)y0p=M3T>8?kji7Y(OhOQRWW)BZuqu#civj&o!MLu$1SO?U+El#O4^of*<*`>pPtdY07$7Fnc*RH|SJrB*zK8i+~S#P6Zbc_^yp|9*gigv&JI=@77_?;ZV0?o?;b>Y{CzWdzPw)@ z?cXd?Y+XQpi!tIgN<&rjPtLC86I-8pD4=?wNl32+_x&g$bcMWCpnP`@>KYlMbtN&( zz8j}(naa(ixXCN%Lvc6hBz#jsASX+!(;L$Oi5+qQ0I=rvAw;ByHJy*wEH zmM(=c1T>6=OW5-!v5>xBCr-{y)TSjjkuX=REV||TS7OW9IgHjRx<}_Z#uC)Xr##M) zdnhb+Q6ED*aE+bm!jLc8rWe{Lp1_L#mL&D8T73=Ey={cN0hGPyAFp81vd?3t zTCM9~n;=N=XtjrmZ-oj?drj6k!kcRwKeRLFMond2r1ne_l4ID~ps1W2>P&aoUTV^5 zlTKlcu0L&PqmVf1N6~$ir1&0x9UXXr7+;a7WjV2e38O*;QGS^$Uqb%HX2i6X_IJ!@ zH1WD3R&4eyT~K9o`r zSMuc0UyYICyaYy7ksrCu*E&-Qz+dP4o>}XRb0B?_U|UzTjMR3}+WQ&KR{I&;oliru z=5t;)&007~Ei8TAaxLr-naplf;IT=3Dx`USejWP6H#0sc8$c`b6qk0grvQUa3K=$k zKbs_5JQ(MHC;QAf@h$0kXIf|dl<3lmFF{S9PvrymSE(O3u}R>Uu;=C|!bGva)x~*I zxC@j8OPwP&K@nMRHi4)5Xrjjg&8F{vU6w~&k_zXUvdkRW!WZSM$$mRs@X z&?tyX7my{WBc-y+nmo;X|JX?^*jR)uGI~cgHU}g|NLVpm_z(coyJ-{l>j)WkCVoW9 zG1M9B+<89tXqjELp-_|YFzl>us7|9{NiSnWHE3>>|HS34a|>rFwSKM+NDpf=f+gEU^X<|DWyJ*F&%}w@M zfQ_F>y_dZAi>|;AA(f^dwzqZM2Ib?!@!=AtV|@K&y)xevIgrrnFu(n&g_3YkZ~|t? z{kU3jXDADl$Y>fQJ0Lfs_Zsp&ef+F)_4&RicV2W_MZm-u_@#KErnujP#rD7g6~t{X zUBM2KORpx7aNfk%VG5e6yaz;23TqFF&(bmyWEmmS%aM{^%Y8p2$n3=(Jt=-MeJl-@ zs&n!i@GY>DSUfg&=+xN7{c5+I-5#Fu11HKeEw0k4AeNDrD9V$LRM(_&j2}y)=4S(D zh4nV2S-s1-X%wPD(?CK1U@>h;iGttNP-C@#|L4p|JOg^?N-c%t^Aq)Y7HH`r7YG?F zyg0LGvr>BtC5Q{)0gQ!+R%aw|?&FqO{by!fWe)1qZ?MR*YUtg|ELx&GapnzFOj?+*k z&?YkZ{N%NsTZUz%4$nB)xV-sTCV+*c8bVtnB;T@-MLfVlN{;tW6opwlKl1WQk~GWgcAkf_#G+m+^FS){?Xi2}=7Lz0#jXhh@4+(|{(jj%U5WZ&zi-+&=5;^TvL+er3YriIP z0v;yaLorkkq0eA}E-RdP@+rOpS02j2IQPStLF-|xj}dVRqlv7r^x8APCMtZoTbQ5E zuEv8S&`O|mTb8WQ01v?Cm|I)~D}kk~;j1Y$(L#v+HJ}Qgk`{rohRVrz(;C64Tug1y zs!Q)b} z4pmI8fAXAa?}>G+0E_i^#pEc()Dv*1U^jO+b9SU64TCjqQ>IfC7Le)$+t>&*qz%}VBBP*ROm_YC-ePufdLqFPm`y-1f;MWK8XG4!>sq5 zStHpMPmv`zRVutjM3lp8knRNsmLkXa(1uSr6tDu(*u0@sq0E)97x0S5L-!un+=b9vtnkQCg+1R-u~f*4-5#)aN_$oYU` z=aA&f)>RM*BdmJ#Y-#}12ikItF%v;VYKQ&AJUm7<6C)cd?rOf3LM)EDj>|0DpWgbIhI#pz()#y3eyd4;un~!Q3 zL5)*jhVFYv*nxa2{>=JlnG43$!=K1C!WW{JN9|e>wDArFFlR>}tBQ<_nwM+VF7)yI z`p92T-crjl>&^}!NX@LbA*@Cm9w^)*j-Ol{s0{`0F@0f4n>`e+&d9dURYw>lw9!@b zDGs0U>lZhSVwIrLcM%OSSQmTaIX_GwWp}bNdXNP7EP-)x8IJCQ?>|&rYuI(wxtEZ$ zXOZ$V%3lfT*8o1-NMX+F7}WdmWh-J7l8X4m^-v!vKHjTGGd$?U94gPe6H`GO&tzw1 zU@3S6ho3rB@9Y+9K43L6uqwBZv$IkbL#E%$fzsMrK5`9LEY?v+@Jq0^;858wrr)y< z&q%46v9~~Hb}sU3#_sMj8zfD{JU*`I(zG2CT^r*;~zqN*^wJ@?8svn zXmxBzIX>Z_KizO5;V&q&8c_$Z&PAg@*;&o#VPdz|xJU)CPm-Ocx2($@hhT4=6=}g~z`kF519= z7qYA07pe>cBWh?%8cg&M#xfA9m5{&`DqFlY>m^tj z0#2y@^t@C!Y*u9uvH6?p$b+H6E{qK7j1_NXzVvU~nc8^jBLD;=?ElvTW*3W+S$OTy>5(MOXScV!_>CYyhakTY?b;bYh=-S$w(! z>UUNML@gyPw(0>q%v~W`4=0}8Dv|XOT$E*?(~L+PrBk>ciLzQBoqLI@+EgVh^NK^$ zR=Mh44+Z^dmtg^=$A{*Z&rq>KK`^8DpLO7_* z6|#YCTsLng{wUt+U22U|N#?NNm&{$jP{20j&jHjMK@HNlf*`YMr@t*q9zx0hcK6;h z0-Qs3o`4!+Uy?S=p8miWwLjbt=RlWPnDcMmqJcwhVDoSNTh18p=a%`XD%t3M4-~$5 zz?-`tP3Hi(1leuYBoidA-->A{{BjP13mKQEEXb9X2|$pRlj3sBD?3L+^31d>)`=p7 zabWU%>Mg+We|2u18)FLv!w+Anp&l&nHNBDTC_H?}xt2v9_*!ZZJmt@Q`%wF=Pz%xTc*{14{Fl9Z|{Bw2{wlVNG6#K;m$k`!3QHt^q`HvcJ6juWo ztTktyj>D1SxjWo;Ny2Z_q#|krM3d|FpID&l3C98$+3{!^%JJ05qH%H8l{AF8Ve*7) zoLRZG8tV1M2KfR73zaQru+-AsV!)O8klNd*6n^sgiQ2p@)Np_Sz0_?*|{}+{Q-c* zgZzvdY|`o`cu3;eWCm?uHfINSV|G8~??-}hTK+gI7GqIuA%>xTuYR`At5ylsHL6Qy zJpz%%dwADCOK~38sIiiPiy=>q*msH=081IeYB_gSWTuF>=>@9@9wo#7Ad}&nDA)41 zNKe{MQ03LoC>DeDF#z}mg7^T!5yYF2E=y366~SH&{$WX@ItPY`=RzB4{H63Q_rFnd zCfAcw@k!Dg;_01HAQqP)sSffcs^P7!fM<71*mw@a=$%Af+Y1DWM51sNsU?sYv5B6r z^d=b5zx`Ag!ql z2j7-pECbK@bWTI?5$YKe@fLiO0RIjXjv@B}wY5UOs6Wl7ENAf#2Wz!!yL^puJ9^;3 zf7ri@u4F@4hp*Sz%qWvwstVyiw-8SBsEd~oU<8~fy3(F%KS!_?t*2$meI?&$q(y_X z*F)^&K{FepYWLT2K31`rNjPRUu@LDw3P}>JQvSL=6iIqO7u~B0*|oNbeQjg2jc0=( zTM(+};<1r+2+rhU!gm@Pl{Neyr2YAx+JHpzh`+8!9Dlc%arUX8#klrI%}xh0C=+@T z|9d3)(}j6LhAj*Jk_YdROygq+oL!A=@O^BEAFG@m8b~dw*ae!*K*=LyR6RZRV4V5# zL83zl5nZe*Kc9bs!ApI?>%o#HUn?{V1X>GnEwN9VF*nNWqumz-ZLEVC45}JlZ(@Pa zkAK(Z#t9#&-x0HEGlu~N_Wh|pK(WX};sH>7ElD&EIIGx?{`-F^qwz2MR%~)#d!&0V z_)L@U%nuHxm6{u}ipSE%PE^HUcp^}@`StVxr0gAzJ-Q9zz68L7XM8wH)GTej&mit; zVagP>);s}8EJmHW3)D;xEPA;M(kn8NYbN|$aC#W~zHW@?Q7i?z9g=v*;*oS-k$nLkUf7JOYCf9DyC1CSJnF;3C6h&GV!Ol(fNY&8UVoK5Ai*$n25 zUNRWy(e8_0ABZeX)De=FAAlfq{J<{8$ka!ELCR4OG?Rcvd`}cf>}>sLoon{ZFg`X; z(yuReHRKFi2uq>fwj8KuZw@MQMOQi(HY|RX<`>6H;0h<3A1K4Fng-O1LkMuz%Hae0 zbu{h3XlU6vG@!Tb0ly-w8MaNvf`py{gF;girr)7KkT}k^6Jbs$o*OJ^GDiRrLQ_I` zQkr+F4C>kL@c(uH10%1%5vE8t*^wUR;FOx>bYU_YX%iBA;1Om41tUbUjEgl}iHFrF z_tQ{6DiX5tTeH?KRPjZsVzfdrz3U_C6F00|P~>>g7pZ#yftOag@LNdK9-BIsd5X{G z#{JL{7xTw?Wg85#cYCOW{u4^JWv3Fl&j1j9^yKcW2m8UK=%6XRsqd*7IW;f0?Obw# zO2&PW+TZ-TnELRIIU`6fwz8CeTECblfQ-5ii}gMmGAMmk1z5v2MBHil+4YJVPl;R#%pENQ;dzAFbz{a2OcT zBak>BwfwPv?_065eo2PI7o|e4R)Xzy8^dzgf>I$1e-qMj+3y}mcV3Jbm>aM-Qg2lP zC9nmToQ-JW%UFaVPWLy*hlUZG^8@KylK}5}vqHpN;xo>J?tqB*fYKK(1IS0%` z=ZRQIUM=E7OG6JkNjB0l+~!|US_qvWrT>e zR2Ftv5*jSeoC{SSl?C2MRA$xcam*w-2&u=$^d6YDUzFZ(z!|Q%WCWNB z`KtKwIDqS`Fy!NLJwRAY2YtqT?0)O(;!@^Gg?!`6xCwwl$)Q{>da_w5wY@3#EG`5< zoPuAP?bJjx4DtV_&i&g|HV85gOx{V{8`S3NVXk(&jyQm%t6yS1(yqgg_oxq-e}S5X zL&#prEdbI=b4u-mCJw?9mJa{4#ZSG5s5pXSj~H&8AZq^xiwdv6{}zGd|^f&3KMI2g%46mC4x2I|R9ad+2kj$iLtZR0s0 zI1xP(v(4jsNCk~}ft+@ft>byIa%m~wLGFKCtZ zOhWHz)cKacYOwRNfM6q1F>7xUh)_z%zd%ViN&uAmBObq_{vM#+*-{T`MP!nD=ApQ* zz=&+A5-B?wc*Q(QTa>9pgG6u^-?CsQpSsump}azwNtB``YIhl_4kOTnvK7T=XO}CG z!f9DjCVx*Aq8d*RGrCoVH*8gh{|as&dk^P2n7dRN>Ei!};&OAmC-qAx*4X=xy@@UU z=3;>+`&A%UbB4iym%#*8yIe=0DW!QOfiRm;6ik>{>Ihit`=AEzq)N2pQm3AqWZ!0h zASRq4wiJ)uKo(;Zbt519lgBq;R%l#CC^Rh!zd?~0tARz}JVBvox89VWhs!93oy-4O zf(|F~g4$&bv*KV6Q*b&LQ#^ENES?#F2hL6oufL4T0L0XaN$v)WsJ7x?CAa**>Ucuy ze-C^t`;EiL>L9pVpb0tcQBLydv(6-s*wf)l^Q-M00OYkqPU@{LU5034NwxtL3b!uG43K*#fxZr>yNYC!yq%5# zyiVvi-~{g}r#1>v!Ul(i)2lq|MDm#`JS>3wj*LdZSI=M=QApxFTi~2#>6un^_s)M* z0zbar#cHGdD&Nwpi0T>>!KerxrIK-YhNa>ZSgSN;4p($HCh9P8p*%@EN5L4)pFb>` zT%!8@sQzeb&^J9t&w6_-Sd{I&spE8FBvZ=BK%VS0HL2Kqu__xs8mkcy-f@QbTM>() zyo83%y%<%a3?h4gCpM6?`mbqNO|T=i`~BWBMS7+pyAfzlj1;ndaE5pSu^qO8#P)jv zQa8lGnLSBI)~P#uO5Av7&0*&hVBCr$XQ7Id)4yp;QyqkJv!yUU2xzR<>$6&*J0oIF z;9?!y@=zub)WfDa1SdNfRkE+H+f+69A?HRCHzpwAOjE`cy}1!GbfoMUAK|*dK@a9< zo!88vVNB5VRyoc4F*{n74HQ-EzX6%FK_5vS$&~ecfKCp0v&?ZVHO=7U8YX-wfwC7t zVH86lR@Dr$5G#VIBcsDHHZ!ZpL>XaH9hvs49zxvO!q;wAM3IbUf=CdAV=5&6 z0kDa|9uOT-6KT?Wt%lREmZr}mGU2enWW-84{4g0MC1AH}48^C5=xO6ISZxDmCXkb9 zMU<&&^}Fua-7kiLoZ1-3&WYitNaBCN>t9`zYvD>XPlqC&NeyZ~rVd09Np@D=to`D4 zAo5I4lHsgX6EN^_u?z7wPS4VHG>8`lE}y*YDY$ zI0RHQMgiC@1hx(yg3>Dmr#S%!EefN4fq=^t1SB`bVk$dO#{JI&0cySmNSj<6FOg%R zw2l!vxfyCu^eU_!;|G#ue2mV4R}dsd^jtRihvKa#!vME|2P!ljK-$y*P6MgP@is*& zqFRKFzo#J!LlhV>qDM760H~#5Om#C3x&@HB-iE9*cldCoJKXaDt3RHBtwxCfAFB}{ zl#dOUu%;fT{@IMe@uy8}CG4z3xfGajN8wH-(M}Y3=_qFb26Q$%oqO># z^jR$O5Vh7;XiIVrgh#&rkG|G(Y{&XKMh&gf9jF?b7b3pCE?)LA6jqgaCLnN;KTr1hGfbuRh%r`7jz7>)v5gsFs~lUz>o zU5eDA6ffz@Fe<_*gzUsLh->`Jnn3XG&vYsdBCMXo63H&Y2&q05xBm%M3`=s+sEqdT z`iHmncvfd{g?G79i(pZJa?E49#e$^zacj->p^8@6mMfhM8^^dYp*`$p% z3l1w;Hj8h|tsdL(DdBf#p3c3=GMjgs##vt_lF^cJmuDVk?mc(|P0OO;Gr>&?Y`*nq z3iKg)`)6qB&E3q_pP@JN;ZMf;+D@>gg*OADM~+HvZrbT<%a`JYd;0He1C!gYuGSZ( z=tW*Wy1UrBy1Up4qPunaR=6e6lbM|J9{niNl>SCz%Omj6LtKr%QtW+D;4S;2tui%c z_k`Pd?rFmaR_O-Ocw$Gc;5!_u# z-yQRqI!8Ftj%=(R9#5@zodyLow_djIJ(GSW*}l0ca(F&*hqu45dDqs~e)a2m{rFCu z=k#Sz+)~!niE?D}Oi5=T`#D)tSzvtq#cy5{qrnA3`BZa}v zxXGJ8yCh4~;;KVcxLk~eCWMC2*xTRd8Q$mKcQ;$NhX)H6r(K&vD?K-BiT`g-i_1Z5 zyJ_IX=0Q-cjg@a`LdIQT7wy@>`r#$nYJiC3U}R&EXP96!MKMk6#VBqmN3Xui>(E~6 zGWENn@ska%PfsMXJAv7uR^fSv`z{d4pwJXu)ctU3aeJ?>2 z`qD{l|yr$ z@rxu3U|e|i%7o^bNzkPSkj*^8P0)A`YC85|b#;&X*tl?AYpiaxVlu#h;)C-r+)mb^ z6PrCHCT!_3r=)4|pn!@0pm^zKe8*4f1klN#na0)0uUvC}D@W}eaerGo+cwh;i7vFy z4V{q(sIs!$!cVvdF@`YkTWSd2XHI7AF`1@62sKONR~fR|tBJ+ICQJ2{1#e$jUMs5t(SBMdH5!Fm4~hVi59 zIO89yrTjZs0Y5RG!N5j@{=plbx;xlHAKw08b~Jw>h`?!1??`44<>zu z&mJz4Xgypa(Q#vTUnEm>&&&9-6?|X2)-dmV=$T{RK28?*k4&I)rlm6~{K*UEDT`m$ z&(V9-kzL+Ep5Zy1g2(wreyUWKro2j<5%=fZYEynftZBK zFw!(R+KGSpHo!C7=7Sp#I`?jV5;i!QSCL^9Bd*DNzDEr&jsiPWv+vdXAJOpwyBGsg z4G^|xud(mM$>T;T9#Tq*nCc!mq8BvYK-!|5CLgJ0-@|B;EgPH=js-%ooBvB|#$VuHI}bsE|q8kUT`n zmO-iU4E#ZWEq~tK5`PaXRRwME31>}`VBvULg~rIQGSBk0I**IKo8762rS_&jCx61( zZV@wQ6F{q|AezR_;5{Sv%FErr>{lOudN2|Vkb5zLFNNRgQ#RrbFy@@yPv63oE&Fx) zAib7Ve!~MCArhvK{T=pX;+OFZP^E1aeX7caBfG_BievlXP00yX{E?8^BGZaj)KB80 z>mHTJ+P%HN>%)ET$3W#@=xz9TY}fEY-`qA4cizNebc%r1MR}yx#of=P_H$J`lUv(M z+YySJ#uZC?I+KYqcsn|ay?MW(w4~{wWKzrLrq6$7h7T7xb3^n%haj$@X-f6zjZrFHzCXCi=^!%i=v$?N}FYyUn5#&n^1*E z{%csAu#35p%{Gsq(zvH}+eOJDxO!upqOS=XoF*hwKGC?~7}!EU&0VU4IdbT8hrM$T z<(UQ!nq6EaOt7MX@&wp>n&=$N7`3GS7V7Vn?=emUVQiLsi=^d^R6g7j9-^B+my`dqmB z`rpj0M+TXg4wHR+u_joVWuk25w$7FO`jfVVmm$}ESi0XsX>n!2@9>FL;Z};yr9ql6 zR3><^et{Qu)+2q%SVev*>4wYqb}EwvaEE~6Bfn5owz-UsfR&`f*S^;To~MUH>q*}h z-n2HiJo~+Z-@bMralCnV9q8-d6sSCwE-e{IQ^(u9#o2m011= z^DbhJ`>EhvQdd6Dd5Rr>Gh(vpSHit_+TpDactYnKvz#Gg*v){dIr?ws$P-&)@;7Q1Ah?q-fwytj8OamaLe zzT&g$XchRAmXE3+d0V7OO!C8L_1VZ?we&BAt~f@fO%+j|sco4}18B4!NI8E1KEtzt zeAld#aKg26Hhr2mM(q0Udd*fAl1LunD&7JK?OSs!M*8R(QDhf1v86l%nMKo-dK#bS z?R>A;dQ%+kkrh4>V|-8Xp@u-G+P=B^{hG()%J(t!F8iF{eOvRnGB6uLUx=rC+~j`} z)|%2ua4umhuj#ruTUE~SCPp~-#YB1Kq=$hTjt3~@n@f#3C9ho7rN)zy(K5&F)j~se z;5%U7xQ?^v{pl*Vo?uF9bUjV%Uop#-K766`dG5eNG*?O!!>N|kuK=xTrSg$Z(bR#5 zeHBan3$U1Wt+?1a-d!7ob5eHIc2z#NO;=-VSNYJ~TIZ@BbnB>~Mih-uic86*CJ~D$>Y0R6oGhH~Hl7Z{TokP=uMA@I*y<&`Qle*QCBQ4A)qdU!bYpRL(_hq0o5RZsw!1jUZHMc<{~nVXx%(@3wZ$AAt0CiUFraY(I2n1z#gx{zdZ`<37gfhrIlh zmZS=>w55oz{o+>P-<0RkEJ<;V-m=@{QN^kLrm${pBH(bd9;GIgOKS?31-@d&X3!7! zdU`1Bytl{NGq`ZGu%8&YUA3+vy%a?G5_x-iw4xP2_G~!!d~HAfi(uf$0^iy7m}=Bi znCMW4Aw{e~dlIseqPLQFD4Fj)mXua?L8ZpoB)9$N^BxKMV1BJ8P7t>06*!HQI7j|#27YNdD-P_iB? zUxe7qJBGd-DUEvx^=omAF)@`X#x{0tQbm5i{A>(V(|wu)Qg|=LjEjW=x`rEgsgI`* z3~*h;w@U-(M5~)PS-kYo9s%D{Q|ZR<`r4I+c$zb8{%N%f!=n}`n{#7#-1!*XaacjC z$7q8eiFxWb^IqLv3gVS-gC9bIf3cdoNXUV}{%=(-z{i zz%OJO%v67z{KD*zHri#rmgU2}I-0Clx-L!?dfjb>VkG`I{zwv-EmQz#C-LYHYFS43 zIXw%oJ6|o?$bP%%sH9l)`b5PW9@+1Ua3i(A)9tn43!mwI7p9X?`eF55=nQqQYvlc` zSiTN*GwV2|S3P{j^Ow!9szzp^Rhqowll-8+J!kcRg;4_FPI0e+ULB@yI) z6qtJ$?Gccs^FG^{%-+YjXMxdxuW)sPlB}`&66}QKfHynG6DHWI*)g1g>scSVu)@*zDSqx z7O&)G>9}Vc?~N-8v}{Q6N!hVIKfDxvW@5-5c{*95K}t8&wL+Iz%Oh=0|Djw?NkKXM zr-#!+_Hfs%Afl>cLM@#4g_thfGZ?S3JpqRinF>@lJ|EPr;L(y$K`s-9z30KP+ns=5 zaADVn0KY75PR~+Ca=7n{kKU&h*Yt0-?>7ez7`FfhN} zAN&v66j%NM=Xo~DOf;oeaj@7Y)^xc(t!c;)+@2N#(yg$-SzZ~}9NVtp{3)jR2lv@p zi%g!@NAGF^e9g+yEqsJJPG_PaKY~VrzI|T#4BF9O;-ZoVcq$6}trO0=fYvggqXsOz z!;YT>F2cG*udSQJo)+Q_#xFQb=&o?Tz8t#qyLp1Nev-}=50 zdfD;aZYNXs`w~NKYq&difT8WtM8vIA+kz_jl5$d=aHcY5Tv6r;dqf{kd&uC<`T#bU zTK3p@{SAH)ryGp{e+3V@oqf7g52{30#z84IE|}q!wwNpDp5_-|pTl^!=BF2>ahM zQ+MVpgog^cNqt=0@}%j)`}jDq?!Zv;!A{SyvOahOk6M?L?!ExK2UWtt?X3q}#X-37 zNE73Q#X3g%M)ydEuiUyzwRSpr4vYy00Df7&!~c)2TO6^cGhdN_F& zSS()NvfMw;XurDsFwvE9SItv{AlxdwI6NCU&FQ<^2a21dZsniXENjo11t$F85)47G z@I0$t`$RG>OKQ&T<2#Mg7ZYV`_LmyNnm5PCF9v+d=088_J`D7Ge{CU+LwTX|ri|Fu zK0@!QkzQcgD%Iht?Vx4a#+x!5&!7umszskvNSP>Y!UE1PS^ea%DUvj26=7O++ZU-5 zK7#=TXvSVs4>`tCp`Yt@kCCifd#RNs8a7`D{)ed$XovW_U3mEV`||~KwcG8HY$i2` zId)8!O-e7xh!$ZCcdWQ~E<7&~V+#|wb?x!$%B>nAdD&X)4amZfUkM+a-fu@|8Li89 z#b>=w5}kj??QE?hdT%gBb0nQ=%wj`1voXO-Cs%jMYxG;1_8uQquwrdhG-LzSzAD_f ztBzK~qPEW{Z$3eGL%#3Q{rmTFyWcT@LuccwemF~@Ovq;M9r79%n|IxWiPqGXabql% z^oamrci=taxd4vnq>@ip6^-|la+q{di6EJ-DTQSB*R$teE7D3*qUFkw&ptj>aP5XA`SCHM{gYiX9 zefhd&)pc5Y^yEZb(%zypEAM0b5+>M|(`kxk(GL!&WF-S}G-R)e;@SCBMf1Lon*_10 zOi|O8w=w8w#HYtF;=Yk$QQTN<2bH%oR&;fpo$w1ZNjhDMXfu&ew*#PPXL76--cNHn zr?)a|AeG5}%`1Zi+EKTx*Ey{`P{Rt2eCSq)8DXfR`)R_j?-{=XZ`u>Ika@hD8r9Je zSE<8&ptAu(Oo^29L-}}S#(v!p8RAjkPGk34?5z3IJYUWfZ0KfN-Uab`Q!@(p=1 zSqRLUS55mF5`BNYDN8~R}_X+kMUW!b`fPT6M1#Gh?JUNEN9Q>#NY?BhfW3Z5RT z+ISKihxSH^eVI`IAbv6BXy&MwJ21{CSD`d&Wn+LNXp=b@==E7J{u4|Xs5QPMy)WW&2t=|uwGUaZOPSd1!O(bEtOSJ znU~6kQD&J|^t18GR{hZ!>n57@aFUYL;mmV-EUmLB6qFZ&}kZWJNgTHi5)!O8-)V zUWFfYVngT@&6R%3j}tHKP$au**F_9%6s9K|39hh6tAgX6@@!iqHzw(g+4m?_?Es>B z7-%YYa6~JEf^0xLH0gfo1Wum5e&uK?8BkygDVkfnX{iGEzLxm8GwvpNZ)^24GVe0! z6{&2XNRX*?r*^+T=Zj@ox3gp=uU2R6NV?lex(6__#A=Ev(Q(9!%R4}m-?jyV;=@zX zAViL=>b|jscPFt#RchC+6XTXmrv(1XF_VtyePqt}C%~6r{YZWobP$TX`uT=AIMavn z$KTchF88YxSfuxDLZauw^?E>Cr)yK&Kf*je&N@F!(&6P_XuvL+;P^iIBOWNGXU4yJ zYoIiy5(Kmf`3kX+7?7X{G5g8pk`)X)BG5h&KQogGh7D2_$7yck$HfVN2U3uHm~ond zJ9svw;B2zbjL$=16+&Qx2I7~W-&xlb5`JYt=taw>HyB0VxxMz5#@5^0+YkJoHW}|t zZ~nvU2mZ_Joy&CTf&?F1G+64<{v6Qj(Qi*MP;9HzeP=yDp%X@jt*4>O=I@Z9!(gN= zIc)>^$LweMB8IJPyO2HSX`_26!5^*$9ZUJwHR>yweWz>V+GQn{+?(1;s~Q-RhnhW2X3 zuL9^e`E;=`mX`eMJ*iJ!vL1vMky9n_fApFk{x=K&x@Y_i0@B%mzWp;Tflkt6ebWEY zmw|2>bU?R^*FW8nC9A@Vr_e*mckqumm;FTRo=nx~;4+|5M%PV;uA61biV!o)8{>JP z&rhgGFQjs4-O58xLnH&xi@8^Xp))5_pF0mFGlCqx&e%K~xaE=-X5pA@g zpQBB`ojd>jHpxX=hB8m*$s7h3>mp-Abfsefdd#T&{Sfm1CI92@G#xtuoE5xPpS7p!UF=mv4GzN>Y*(WzClbZTnO5t8yvAyE(RHEfG>A&FE_iA2vq zt4RX7dXAf;v8p*lJJINE@dnG;yafWV&lexj-dq6T*H(RooUkFj@}+VLi5#2T9`#(w zc6nfe0ulrmXYg=AMuMa*ChDItTrir_}?su)SAqA>8{>aYVkewW8?H$S(eUc)U}SqbrA~H~L``OMv5^ngF2eg50W2cL37wUcR2Q zx!OaSdK0`hzp^P%FF6Br;z(gzs(<-)Z&f!UEmU;j9XYp2jxYWrH4pDU>@7aSk;zf1 zp&r6Xv`1=%!IJoG+GK9lCgd74bC``@~hb zU}ki0)$=pA$vq3cu$+e9K)I21_UlBji7@Nls!+bl@2d#L)6a9hORjbEuFv@)01Ab` zWd4gnP4JYP!rRMVcBsZt-!$9=*@mlplEU z2WN>T$=-(GxM$Z)2M?^(y?LYC@#{zA(YhYo78lInt9wM#F!B}RzFG75_m%ut2zu5l zM|0lff@{=q2|*la|7*_>Vb9|PW6=FVN=bEs{~`Zd;s4106pH-k zj*U;&3yd8c5K7ciW|A8NJmZ8ERpXA%KAQ)B@c%dYpU=Rs=ZEoq*%HD4xIY=d{k0?? zKzojH^m|{0$5W9%3e6-H$5-4B1ln7Weev-=C|&4T$vnW+2kD0Mq=>gn|G1f55`N?n zpTW<{FFapT0+OX4E#iIT@p3N6Rd4Rj$&l=_ekt&O^~Q?m%w;8Zmsih>@|mTdxV5~? z`CsaPr3_I2(I)#8u0NX}JtMMv-G1RIBbl4*yBy%1k!PrN5W%1R3KzDxCdG^`c6oXq zx9?RWzWzmPDWO?Mr|im($=n?1>AZtVH%>sbUCNu%4WOKZES*$4-RYg1=3|a=Xz7My z)jhJ~k#iBockR~;=Rvu2U#@N6gluc5>0bL>ZTRi2-JIVAHqiwY73jJ0Z!8?YzFt`3 z*{{8AYWBP6^Ip2^dvW&~t)9NUPOEL=n_(Gt=Km+{XA68sK6;6MCgqu5F=>!hnk%X8 z)@*$!ur8o{ETugmf#Z`GAwmaBrQCdR4bXh$zcioJl!0H?;*pewxq;WhLyqBO=$F4t ze;vj2@y=&vR@xtT;k&=~d~-U{W6t5qLy*ty;=&W*a`AZh&1%V-L9bzT`Q|i0^)Cwl zZ>ry-lfhbx4L8YtHvg_@#%O~h$Jfxtd-NaI7oP`C!v1o795TO^lvr|sm(N>0>x=0> zR3hHm)aJM+en*pZH&&D9&j%V#V#j-I&*QOauGVf0uZ>}U&5oj@Ht-32_WbzQd{Tjo z{pTjy)R^Z=a7^IX^IK(s{2O_3IX=PNUTl%{DxnyWvR_#Y*+ z$*dPGtA9fm!uxsS2cY&tC7}5RMY0#BE2BwCgUM3u(SF zCN5?bLmkQC#+mGCy!u)p4^`4P1|>~j(SCfD;x5~~_Vk^i6gh_3jfQ@tTILUhueKZ* zW#a}9%H$G*rq1IJl0EDu-I$E-;}OwB%FiDUns*JdeT8Lj}^j1@A+iacfY->Lo7>m&2muak3qq z9!7_;34bLb?tfzdIw!+(3SNu2A1RM9#Ds)lfs2~51O5_z!5 z2Ti+g5-@%?nf{r*)Fob9>5DTZDE{S#vHZtMD`fJd7gnfDh8v6tS_87qQHL499<5EM z+MkWlc4(Tt5br3)Kl+pf`yO?t84Y8pTIZVK3$R#mlzS@3%CjrFq zP#})S6ONbHM}l2RhyfK6#q?d9?0*i96d8@)5qKM~J!+B-3Sy1w$e&TpFGchB-usqg*8uV`Fk`!Daeer%wYe(Nn+F8oMm)ue4}TyNNR?pIKz z$227y?X0<}i0x^j$SS5Y;x+?gmV9k(Bz{49N*_%U=qtry_E;Fo>e;YIw>8iIn96xF zEPQe$qG!)wBr;rJxyqF#Lp-aI_eoN>5hV6kE7J?KfRb{5sTzi7DxvmHzOQfk132y9 z31WT_QHA$hnkohR8OnpnrwcNl0*8(7bhva4UR!n8_`MkDm(}{p1^!z5DGq`eW;Tx6my!%I@lpq-SN#D2VT@*v$4zHhbr#pRgxxCsU(5+MYH51;IG_J|VMfmWltJ5b#w zJ2Ba7J41B$bUKF(dQU63lBnsr!vhvd5UGoLWv?P-`kj30R~tJizfd9Yjb2Cqy{P!3 z&cI)6Itxp!s7N5#_54G5%cy>Ugk<_!O86H)8ki@Tm#g2AcU%^52m4Y|xuFeBCA>f2 z-GJz=f`WBZnK{v0$Nw;C|Ma`ZQ)flr`~#C0Txs!=$SE$L;coF6kQXebjMO8?`N`eKcQ zHs?a!t(vx}&M(uv@zrTK)pf;yLk@mDkD0xf4w;^|BeY~Pb?@F}ZD~mTHInLeVM%mnE_+YDgBA>+ZMpEvHU zci;OXW4_@0nq*dZ9JW$s7||&y`k^YT-r--+YDCNWCB)t8S-KVEm-Dmgfg+s#9RdeC zxF!jy7ArN-K^_msRz`;?RSfsXoJ?|Kf}Y#M2yK&b!F**ZCbdu7_^^3$7Zz{zdsFo> zc%1dUbv~XBLh;UFfz*)M3_&v4C*GoO)C9eHReo!8JV-N8$zrgG5vD7-@5{c;SgN#n zrdGI(#~we#Fg!OZh@y`x4ed}-K|!r79q0TGcdpn_4ar$g-2`9iEK>BcZH{DVqmM;M zGT?;jBgy0;0vA5+@C8bGNYFLqN1eq$4igbNxBE3cGc$}*jXSc=oi^TdVe?GSuw%q^ z5B*h*f4>m`^rXLMRPpBm?02%ZZPS4)t{dtH?Pne9a#2Ezdvo}1`tA$GgX$WJWyIgkt5(ZRi=agb z<_1tl*Y)eBSBu)Fof4Zf+OrjS&G3SSXkF3G1ep1vq~UY-b$Iz-%?1Kko^;h*n%5rl zvPNEmXb{T2Qqf}9G#x+hM=Z4I|%w)z)IZc zTX!ilMq=u1p(54~f>)1 zQj>&6tDI`Brv{I}_Ny+;kUIruv6EPX-38sL_-#zjofpwphs(I%;e;#~iG3$}!@cO_cecHvGTfz+zA)?VTITM&5#lJ&PspboG%uJyo< zj77{68r4Q=^}}>ZZfv-;fJ|+;9B5d3mc5^)qcc0a>4B3I%BO#IZ*3AcYySOe=GSU- zEjoBxI9ZMwqwT{{n%9eW{@yoz`I5i+yf|C8U%F@Dp7#14K~w5~_(hHi8&Fx%_{j3k} z{XP4fd+&39xqpB!-5b_gV~+VAW4b#w3B+YlZIQu{6G4%SLh-S?iU&g!0sZO5kTEW# zI$Dr+2w`AcztB^#U9-5$T!62|pc(GjJRCcQ*XegXO0PLae?ia0Z{AeB_9Thii)}|p z4VM735|}b=L69x$xe%z+c1bG)Kr4`HQu+!ZUU6AJ;XdsRR4X8g#aMosW`*c?<#d#8 znW|G6)A=DFp{N&^hSB<@qP8{ao({{_;68j!;kYB)EL!)i{mR{exHza^zncSjcZ-Cw z=NGg9v4qpFpckHLtrDwW!}Kt_yV>C0CgOnX9bc z112k&L2+lTIw8WNBJ6diLF9;_7Gw7HT~wA@T=!Yiq8u1FP8prcEIt#2oX3F!HI%+u zbr*gyi~-a!u)2up`Qv%=P5_=KEe>L6KCrKd2kk2??yws&l{$9nNr&*Blvtmy-_V5C zkyPHkTX7cvpiniRc(gVAQ!ClE!4TUU1-{cn`(&4}%f;yv?{6XG+5=5>Nifv4RTbR8Vga&*);A|8$(;%(Lyem;-8pzy+FE>CW30G-~3kU@BjRfUdf`J(5<|{ION%W##MA znVgYV;%hKt%8JT~?o^R0`HHk&p`0e?BWdrewf7>BRkoT!sYv4#0n2)xZip>V;kDhjxXe_nxU@L(Lz?J|UYu%KV0G+T8ZUAbQ1F?{J4p;?&YD1qfdrM?{asAV2!jx|$94iFyeu8%?D z4mFyf+c&s`z+(U)r^Md3({|Bc9bkqfTwsO+7j_#KMsIdx-@&xuPuGxDI>1gk=ao>q zQK%hIb>#f#8Ovs#v@bne5RrTO=VJwuX-BKUhn{UG+l2)kCR=x0Q6U2r(T+e1z+m*C zZ7G7zmJIH-L@V&D2SrO5Cm*dGiwtB!^lsHgb-G{y^M(yDZ!q&;4jMx5_=HOaN25CV zjl`+kVaT5IN2e8YcTE~rO#j}1(wIMo$jWT;)HEx2sE zGqfvu=g*`oWbUsfjJ}~6I$@M|v-9>IF<(ERbs5c|i~IG?tZ z`|I#PRz{phdn`-f=5aEEcN#LOWtR$$TZh3PYg+U zUBz`^uBX#bqv(CluR>cw6D|jT`5o%Clz~#3In5ooitznv`&eYJGQ@C^g4V6RDsZ_Y z(tI-dJce?$YBe19uOze>75WmoDZ2|SJ&BlG1s6ipWUpUos7|Ao1{Q=H*YAW)G~cX7a%}-0J1HE*&*}yXrD(z3a_~zivye+}QK39*dSq z?Q%B6W7=cyjU#?vt{X(BB}7va*f@lzcq14Y%Tz@+ z@-if&Igru1ESrH$?yx3+#LIguVEwzpTLtLwR?JQut6Suv$ z>g>WaVMmz%Mbobvt%EH57x2)bn^TRfvr9F4F&P=hO7LTdg6ZQL^+Qs<+1YHz`D32 z!l`3WJtNhZdvASYA=pv|1_7=)ruJz8=X57cGHgB$djxKg0) zVCUH79jqJ{DsAd9G0X|7?Miwz<<5-XyaBQdyD2L-)OKkrH!bbdrm``;Q6(8ATvIbe za#5F;#R+L7JS{R<8>=W5cjVq-}{nh$x4%xLsKbN^Nt}Tvy$b9p(@M> z#YxcF&ja{j94hJ+Rk3TTWulvjGEI$X2t}n(&u8iq7XFpNFyG85mQiE^OWna(J+tQA z)gaw{&nb47G*RNX!id*XWLEesBWqCaYMt20EPt6O#`Y&AS<)G9OR2bO9#uWj}{qv+sn9&b*&D(wp3l%n}t zh-^c%m)>P;1NWTe?YHaQuVhd@KkzsA(~*pb!dQWREUZ$e_4y-@&y)epy-_YQ5OYoS z$F1+hE4&G^1$n05-A_#`47haEa&U|C8!Qt=(3AU-hoCAO`7=vUz=sRe+EVpakZ1#y z>7^4BZ!)`#EnH2b8qq1*Uh0@8cGFg=71VZ*n(u*AY9@p4Hmnv_x>Re%lkFTBSi9jY zl?=hH3{Q@5swQeKO9lD(hR4-9BZEIruMscqS6j$@>O9_+Lw6q$s`eX;1-`9@g#%% z2pcM{V&LybDQCw7xT(C)Rtx?#Q9R1BUbD`7nRDi8hXjYc=|N+!pjp*=ajDd?tfar5 z9`?uBMWJ3`0~YX;3MgwV?o<7MEN($8C~cmu2p5mUk|F%1Q9$^Ozc{ERy)V(B;D9H9 z$5p|7r6*m>(Ng(fPiJdI>tEhpG-K;;DhfaGkh%sdINU!NH_xd1 zgZ|oLW+^^KIO@rfxp@h~_AfuZ-Mn66iPX8x|2v9Q3qq0VAV4UR`j8_CMPmB?zeSM- zXPJF&v&_Xmc}S2~f&=&?W0%_wPdL8GPeQA$JtwhH>7l{r1xDn=Me_845EH7fp}qn| zv${=sGiQOpTJA?zcN<;z_M_sJeC^}4C9UL=noJnIGWL(DFnVG^LM3sr=ZrMPbW1nC zTWu&U-Isq(w_-E;wW@K}28Ru_n=~RHH~T1R9nVERA|#gZ z^D3&IAkmkzM~-ERD^brw(Pc+&<_BwKiPyFdyl=DHcKfnDw93EYMsjh$c<+AOJq<_; z?PYoTA2#B~zvDiDH^#bTYQzoMl*F8JmOLVJ7zM1mt2pFVd;>&1KrN{A<=W#4s~g#| zO|o-#kM<|bUUH?R;O_(ILjFuZPif=PY0$Pjhd9vrcLPOJP$i@s#bh!I{7;$?in1tE zxHD~Q{vQNUfZx^8^YQ-G?7$`QUxmxc*|Rhzih3bq{2L-zZAgd6DCwAvC}LGh8D+!7 zMyF=Sbb!j&L7f5M!NJhqY})5be_3j^BYkqv2n+kRJm~I1-`~gUti|9$FpSKVtKawH zam(jN-J4itx-xnkMpbKf#GN}qiJoGlg>VZg7n_Q41S0M*y8PADV>}oHfp2>X-fEQl zK)(6NWnH>oanRKUnl*FcL~Wygk{EB&By1ptmb`C_Cxka&GKD}UcQaOtZUIY;wnoLEra^bSmsid81_V(uiXKPPR1A zS{3QUSn!QDOTijN7yBeNfw*6G&XP<$0I_sH!n0B15eBb&&DXbx1zY)jl3el?2kzXYwMvQB?WuN!)><;y=LDYUqejCHcrN%ypU% zJo9CEtMFW7+=(anhkn9_zD@0MTd43U>#L<(0@BEZZIk|*G;CkC=*p@x!0m~m6|Pl0 z;&q)=cJZ(dXq|vdL}KV+abQhq-ZX3#;+mS{1>W-*I_b~Kx~2eIvB09Y$Pm<;-$nf9 zTicnZCU8|b3bD*3;eqG~dUxyKf;^byJ$s(%%i{&GGyg5j*H=Sf zIA@d356#vcau(`KWkJ=M;6bsdgu!62dV_h!l0d(%1YPRP7)PMELZU8xrJMZLbzJ+} z+ao2EmVtA66d4|)yMx7eIxV#{Fa@kz)^-yOslrtkp$&V!hBC9oVQYG4b(QyuQ|&8> zM(a%!#dc|Fx5pI{nNkE5^GQ*l#+S?;yVDXi?;n3)rWEtLM?2 zKLZR0ooW57akLhdtZPf4{FosEv{|tKvsq9jlwR;dqQ zd=qQY1^XOtw}Rx1$hq?rtx!{Tv@=RNN;tYCYR_*{+9VtSj&F9Et8(?KR*$ACyICb! z9JO%P9V_g(soXfUPY}?+fqb>E_7E&8s3XjrN z!MTN|jOhkjreqm5HG^~3Bn5IpDM-a@@EY+aGEjy}Bhi%L3)HY^S~}eGd!ofYiJ|;1%Hv|&zEXme#+!wwsz!rFdYjV1r?{XFSEy!99;!&zUC)gk$B1z zoPPp47+Ecc0t&w-a*-P$;Ch*y^rbhXqFf3|ai?*bqB~HgE${`td+?Xsetko+xCI%XydB^wNW&fiI}&792*ha}ns= zq+o18Eu=Sd?MR^@JRLdJu$i!3t2SRF z0yV?`JtB~MSM}9M$RN6|ugvr2{jZnV^uft-|G}Mv{gCRNsWo$^okg^ma?wVFSwehu zHRwdGF#h=8e76x7`)W=88b}@BZ^#|O(*V70B~wM@C{~*GNlb71pM$fS&36u(EdNsL zn%OQ785{-0cuuYK@$4e4qih7>`1$L5Ibd0;75mco6KZp|@HfWE)2D?s+BF(r_~_iT zaqp0(PAa2WE4rB|^&;p0l~SF5n04>`A6Iu!9*j4B2>jYPSRGA>7?a_hozNj9?V;xQ zqtfI0^;kHxibGKlNsV(?-YtWKq7on!u>f#LM9XbRa8^h zrRCo!k*m7NPS;7Mx3>Dps#N%J5G^8N!uX>yGG(tuXpDoUz-jJQ9GAI>0rmq2rp_{# zkMIgn*T!d)W)(j+>MvYfWHq)p_L$toii<4;az7V`A|?}1c~kFyjbx^Bc|DhRg*9L| zXQXmXO@q|=X>me)?l?_LyC@qz7Zkg%PtD%bj{0i(Qp?Cd%X#mc4+g&1;>(Aj=;dVu z1)X*uwe(T#e+Z+Bw6O4?j|DB`j1ZA;Ts1`^=;ilDO-X2kEUWes+1gO`F-SXg0ylNg zEul|PEDa%52z-Vid4P`ce{uxzxUFICj#8gaRuv-gg>|sah)j8$3ZUP8>jW!;Gb?9n z*>G-oJGiOd4tQRyQXbMF)0SkAyW@&@yDZw+rWmcp3X3i8=@u(%O3^1Sob}^W%WJe4 zcR)u-CKU0)2*{{Cbiz~OA@Cdkk-k%Jef3VX`63EHh}J?ye_H|~z3{OC%Gfui6ZjGQlG7=JV&dYOfpKI*oM&y zu<ZF~HYcwu~ zCZ(|B$R+}34U+!R3nG4Zd;o#aPr`|-RA8-P|4LhDf|95V?j4kE_D!n9M4+Mls=6({3q4yS`?=@?^uhxT7KhYUD z!0v@X0JmQkTx(Vt?5V#U_Ti^{3^PI)ln#fK~$Qz`B4Hv#(7m0nWlm6@5tBTy26*qea1Cs2+#*b5N-oKWR`alakPme1#62I@!X}m=&W0N-w?D9P-~z57~6I@ToNH zqxcOHQJu^2pYmQQ-2*N$N#Y0rOu<-r!}*vv_vnUW|rj!r4{q zs|iT6zpnXEc=rM5U(L$KV3FXg?w7(q@)-dApD676ln%Z_yW~N35-*@2e*eKC>a(5= zxC^_Hpz4v3$?TTAt<1TxCB^&`;E$`%e0!^`D6aXzx`O(NV&Ba zwS^6dN+BM$XYc06cgkY6_`8TQu}buABY1x3yxPWg92ihI^^H8t!qEXXp?K#ux!o^`J#esOYdu*@ z2Pju3>)lGE$Qmp%^wEz_mM5$kk&4mw+c!RU0g3iKK(rIedx_>2E)wd^V?oivGvK&FDA@)Jjb)!f$cKQ z$TK#ogTXx7skiA994a@#SPbS}E3FALy9`^VmvoW~E}n&2Q9G0jn}v)UX#Bl*;KIxC zFL5+X^u$!Trpl)R?0C9=?D)!CD4OrX{ES+DUx;aD#D}QAir~iOT+`w9`x?!ffIQ!%KMWj zN8s4g;MB&NQjMz8{72fafyFl#%9kLMB9dUfZ^Z_8y(1xT76ZF@>My)W0L3BR^0V5f1AesK-AI^lR5IteP#SJYexJ*Q60qq(gP-CezaiF zygUZX%UI(z+x@FXuHt|S;hn&ZW2wn1Ss$b z?EXpE2LjNMwe9H@#a6@hd*pcs1763=>M+ird?BekQWx$=^$mJnkjH+%4<$^YR7gZ; z^GS;e?y$sOwoeWjWM&aD*P>|D@+>xoHb}ZAaW7&E2tB;ns6#-&2o!^Im!qzmvfko7~xUXcWE!MS^a7PO&7Bt%9G=!7IR`2BWSz@3!GE>2cjl$M1)5>L3X{~pg_pp7Rvc(`-mB#XyCjK~6h{x<2+VCM|&M3JWBJ^!X zrKy5#on2SUU1Pg(-bKAJ)7Rfm{W^Cq9P8&_4L>~XUEOc(-=zOUU5w~|Nq^u5T7I7H zuXo7U)u=XHedAN|lxQ?Q=RXpO0s-A9f7R-$|7dm9|EbmYBjdC1v=PtrC117rNj!4%==#raSlYe;E_M>n$xA81 z_tLe|ewpya_Bme&9RRmkx8Bg5+sE%C5Z+IM=0^w8zb#>Yq#ZN=oX9KzPGp*vFh=&% zZ!y}}gicg91;vBte=F($_gi=022f$!r^E@lafP!8M-BUvIa7U8Zd06rd~f%+#NFEa zhu=g5=i$~3gB@k>dVt_Bm^ow!rf4x_qvE080)MWhswg4{55BE|Dzaq-LMsR6yR;$; zU`8(Pt3E}s#CEBS5HR+AR}d~W{Wtg@-88lI4t@Wb3)6HERcio`I^;mHiF8P+OOqv> z&g=x)ir!Q~jLvG-%NV$chipcpxB4a&uN+wi({x75cd^;Of$cv=h;f*KaVaIhHbPT?8{EH2FXgs*pDLKIrS*0o z)?}Sy$%;BmCZzFzicf)rkD!7_Xfbt=%DSH?am$HwpthCb6LW>8r7)&*TV)nh8J_{| zm$-(JpBA@?>egS4tz6lDeTBBx8?&MuVQf`SFXG9QeLEJLc!F#xQL%jDt;T3F2y|On zN-#Dqy5aP|Po#G=4}^+hIIZ*-g{(1vub~s~dYmZx0iED#qimy8J*rX*{l@#}>ph8{ zPftFE&U&(_|eb+#%r>Vc#NZWsR4xf8}i8tI8?Haj68 ze2lfODBH9lQPwF;! zfVT~x*q?DAIw$N8V5Qjt-dtj}0zK`#PG1B@8EC=rPaC+44-VwR!pSpQ(7eC2ooV-` z@G$g@(dmei1$KARf-7QSR&D;TaDU$oeu5z8_AA`aH4dv1;j&(wTHaM7f$sHVav5oi z)(eK-iK^#Y*%a|td)u>L3O3Z0v7Xy_U%v#VU}&C3asmUT@)an{`Vk;w-WxqYk^R57 z)00p_IggTPFV=YC-@z=s4C;E{Wua|NH#B^4kQd**8@9M2{Up295Lg|heVNM2^S+_w z1n$dN-^5tasO)e`Ih`-%L|mEO2`O?hiiI#c@|;MXT3?YL!q-{EmM#G8kHj~;dw=U7 zS+x=7qO-_2rc!dnw>jD-`oA&LE%7Ho>}2=@mqC7i3650&46u~_n*ruETC3DGhGTsn z9Xv4Ini?!=5TcFC(B-J)Qg8Ckg=xt?#Mi+nIhBv|?H4hQBPk{IIlg{`edimtiar=p zevPnb3G%W(YkL0EFm#GP_T4lH3%;l?lfdKkSq{ZrmbcuHt)yuT1-K?pf*YsAXN9Q2 zed`ka)1zP6o8dO^eR4vH+$w=;%|^h>>+mk#F1p#4e%0v3AdSv}%q%XO@opmT5tgnW zW-M}W=ja;tJDHfohHAk9JertxKrV)2PpP~ccrM~0cX2_|E|uj@Bf=R&uc50 z{WW8x&uej~#Eo{x2&osMQ044|ruS_^fV1{#tCQ6Y8{5{P3G(Q5t-qSqx;3I3y*9Ry z4^H*U&U|JyTK!(`3=@kjdlxL*5;l<9^qbB%rzCl^N0aqz?^f();ckwQtNRm3A5-C% z*(J*Y?|?vxE}tYei|KsxUUY~v! zY7gKCcz>%Ob!iEa&gQ>O5Fl9x;BAlOUdvJw2d0nzDe+@+`Y8V>3% z6(S?noiC|8NTY8#2#>7#GmV%mXTh`Wm3lk06+(f@6N1Y_-@O0_Hc5Lwqqam%A%0~@ za45tRc~q@`&WO&myy?8fLA+awdS=@&#y)9JCoC$Y0+BN;j8uL7u`oB=5>E~YOE>P( zV*ujSv$1ZRQt=h2$)^0{r2phXj8*!gmd@n!1)2ul38JzP-nw=ZIe&ACJ5ZxaZb&?F zc$lA33$vb>Ch2pV&Ea|D^|~-AmTb@@zohL3?H-DxX8tfo_}dG6%{oiydJh`8yb2}O z6XfXAq{xVwOFRs4c1`3?Fcq7r9Ymm)lj3u;zqocyU~1zteIrDg3Y>{CUZuC>O@-pH zV+1!^+{T<{gSrna6QAQ{Zc%3-(yw0*5>q`+f+GO0QGvJeV@$F=)gt#%OtkOmpBS#@ z=zLq}uBR{57=&>!hwSf^^Z^XmdV>+bK=OL*8?lN=kw)zK5$cCn*cqFK!0utnl2RZ2*lS@cP-jxI_WU+_t@DZaYpMI)%`DqE}zlcx46r3IiEI21tR5`K#u%vjh+98`SExJN=4M!p#?hC!CKXxxK5EljMKPB) znNN(p5O$=dDXsP|1t0AdpIq9|-85RI2=+HZ6RGI%s2a}*?ML=}e)+p%;bTc_bmD}9 z%29~Bpa(3+fuf!Gypl3;lL4!wlDFzAfeS$I*+P*VP<4OIg;)eWA+1Mgvf1n+ln!tE z5#%qw@h0oZt~O^mc6OW*R<2@srPW#86Q4i{*%^uRD~ zd?!~t6dF2~cDR5Vcp_bM$u?r1!oAfoPRMF!#?y#_a*?tekn)zOa$py><00T3SKNy9 zv%>Qv7OocBj4YdEp6ipmfQ_%-xlFQ(DB)%4sjnx-DS{by^b`*cC0`BcM>J#m0!^(3 z9pel~5#*qcUv+eOJv6@lQjFE!`Ss_^m2*I||Ixuu=KjX_cZ;JD@>iOVO^*LuqtBS| z{x$9Y(L;KGQDuRiG>yV`qPp)?YA{7Zv{-X1zUV8;%T{MQ7GoZkyugelTvXYnM|e}U z0aO_{rOVbU#uCv~T>{4x|1ZT|wTtRireY zz?NNNJ%4%g<4HkHH2h&-i$!3^I$jUWtgpMa121{yWV=a{>*3^v_D?*+`IzAyU|+d)1ah3bVLwPPoLQ6x%h zbYTZsSTQIE2DVwz)#PYZ;%~J*E-yTi45g0F)RJ*k?-zb+#e)qJ+up!EN4g5#`qSFE zeWelXZCr`ZCioliTAYYL`|Mb7gQRTM|1if}lH}8d^{e$~*&1hH_a0e3YbYm;$CR%V-62urPlFnM<$p67s z!gLIMvI74}*-{N!TP4#1&iM37>q{Zhf1GiOVpqO^hXJ4nn`MwSdonu<493lajLPK> z8gu^Fe(RK0R`<`CeJTRmD$UVHE*G5+Z>;sbRXa?1mS zJ31)=uK%U9=l7}fc-=5(O}EPKS7ga%Hc#85P?96!rRd@(JxUtjSANJ@J?bkqoG`*K z$lInaPeKvZRsz%t%D<=;D_2uuJN6YAE7#F8%zc{7SiM!#oK;}OP};V@6=&;^Y+#pV zn4m8TcHryA!3tNu(G(#C+pY`IM$R{UvXFNlh`v*tW|20~pEy43JN1QpHHe%xTX8fa z*Z{Fukb`Y7)gb?BxU^Idlx|A^JZ!aW_b$fF%j4=veHAqv$nSsLaD2MNioWpt8JETJ zaJl?M$t~n91>0LT1;C3g|CTw416}axsxbSlV8WFt&D2a;;;F6+5d3K!(;H%w$CR#S z(8D?mfAZv%Az++RUIw&!3P*OH*dqRf-Qoud2sZF+ZlwPrR_v-}hl~nCB6nMmvcQrS z1%syXNONkX$AQBs&U427DplJE0YGa75vw;W|18FtDv)D?m$se7_7!%fSnWf9V1!DG z&0{6Hx((<7&U%HA@9b`Kp~ms#2U`dPOKBBN4@Uu)l#sY|Us@#VRh53w*TLZcpUD$P zOA*w8Z*L!e-)s%NL4CvIRQI9t*X86%Rr|SrxY=Z&_iq@WvrqBn%8gfbqqqlaL+Ncy z*2Mt>%zg^LTPioC$u{O;yfGJGvQxQZ9wf^SPM>!~rSa6A3W$T|2jBlnxy^P^!}&~< z)KV=B->na2b)H!5e##{4zu@^b@#{(WtMLX&ZJt{5Uc!zi_G8Hwb1s4Btnx1bRn_;8 z=U3;>H&>2r4^9^sLP{S50%#t&bKj2?{h%Q1t9B=?4zvCybFl={*E%45eFNz05kOyC zfb_M@tG+I12-KT3drUfV+oARB?oDr8pif}5B2_NTJfu_~8pP>*I$kXe(!!n;!pY!)utAc0>7pKV<0UK|uWLo%(t%+|y>!8m_t_xf}v? zW3o#3H)R0B|1Qj|K4}PxM7a`KgW{P-aZwAFZo%N4@EWH})(psdTL!Tz*!S){9K0j_ zeSZIPz^xQ!Lv7bQY1d6BqfQ2J@k^ifJYZbMDxMW6CqS(ER)#CLa_yahPtJ(IH?DS8C-voYeyxJNh4e9avq- zmD0|~ZIBE3#{hR}Vl@QGYn0ejastt0o3Q)z=@W(=DC*j18|E@xg0|YyjZeT4_v9&w zs527`k9&ySnL|=;QWU4$-IQ%=9KPmk5@tu(5?7VaE{KtppUk^B_`Xc+%OaG>2;qXs z=`e0FZorxV4y(YiBPLVXU~f^^eDaQJ*cF_S;0WyoTn~UkB#f0_S>tY`Z530>PyaA4 z2x~AxHFq=<$)M~yqw#4xq8bM3Ga%*n@wWG=oN!n~_iD$DW4b(7uFm zc0L5sQ<^0^1(78OIWefV!YUNmOdghrLO`Y~`mGOjtMyq8Ff?Elv<_dWK#8mBpVe4w zELR$gBbc11qzI{VHu3ikeB{1#rGW^q95Mw6y`jz|;6#mBVmYUVVKY>k`8#vVv>qa0 zmxk0I7Sw?zhydW|E@V34bGw?o>fY2$Z0CT^?g}LO^(#PPs@F;Im5U}_$vRAvZ{Vn9 z-^0a8nn)My1;tNE=?0Gdn+@Ile!;OEgt0K~*n^uG5y%tuxJtIBKx|wIndVs6wu9i< z?!l?Ma3fnA-(4HW8n9O+J+=3(W{u*7Cx0?Acd z$C_(BUq1TsNkumx1N+vVZY5`5tDPT{Jy}SG#`u1U1jzMom8#J@-7g341G?MWto~9j z3lxFnZ2c2~ZIrf13;&S2zd#qb3rbKqDE^(Gf&`L-8_LY@ySiru4z84@*XV@0&M3LX z#y?PX1+te~M{_wE;>ts%4zORm5QtU<;)6VJkML4^#=?{DKyd1>zdi618^?nmWKTi1 zYj8C0^PBodzR#@1AI$Ch$N_sL!&mcryhb%%ctzgNVJ~}LcqJ0IZJeW3xr#i?7PMX% zfU1UE^JLRLYbs>V3PH%UpOXli8wnr0x4lu_BKkz9#rJ6rBC)A8T5DQ&0Dg28*!P5z z)Bg-1*Q{OwLPC+!bZpgA7-yIl;lOb!JMMK)pH=RZR{RtDS?kZ*Gq%hn$^+}0%06|w z{&XWM%fyXNM%$WjsbDpyOTsfZH}ESNz=MK9XUtXL;8$xWdn6Y}Rs$`DHj*1x*`{WO z+gcE`F}=yXL~k>4$;><@ZFf7nPXFXjQ^AwqfwzP*p})`Z&duH71}Jl41N}nqI4v6$ zrkCZWwTV4Y1@3y}&7ZWHdeje}0oTwrfoo_^&bx9nZZi{4<-yLy}+cHq);{QXlWc&2yY(i{QrSqEyEc`(jv(i*j0g+P}+J#~UvDB7QR-qLVj z96I~YzSTj~-@jxdLWUGGFzOkflH1gIsP(Jt3Mj?|i`J*1!Fpbq2<`7e>(b1biXKK$)?R zY1iQdZ9Id2H&%WJHCD36s|y=`sAQE$@XIoE$p+6fOq*sI16yah09%S>;}rhxoc30; zKmJ1=kk&A-kAdTYVndlHjgS`1)4+_~imItST3MLf{}+ui{eP!X+UwDxQW6w-a!Gq8 zYSM23W;qSVaV&(~T?g#$`Wwoq?rpN4j^cNqVFiZ~a9DLfKuR|GRfz)1ZdSUG zE1#npUap>J%MdBQ(7Cuge9VF%l$KiRY4a7}yP*2)jiR8dAd~BL~#mjLT&mSwxPC zyVOOqy?vG3;)bMsMae>ZzHf_`EIV3dYx6B>w_Jax9aHGsVd?{hh)Mao=W%DuI}IMmNKG`&zbG4t{Z2#l6c~&4R_&< z*sN4!smVv3%%z)m;jArVA1s9`xX_Z@o=rPi?$q1095~Nuq}UFqFkY26AhSoS*c)MK z0qt!=jKi3lHB8m~jSHp9+Y!R&XU@ty>`6sZuSTHwX1g8UTz@{lxQ>f^YeBU- zne*akoz)IF8>z(`-&8$9v*29=o%4MDi>NVInG&5&(~Gb#Y;#Y=CQvFZj5`!jG?B0` z0Z6dO_3FpUM&mOl;jkMqOwF_c+S@wPp@ZMDX6KUywlQCjB2gpFRjqA3$k`_T<7{sj zlB*yLy{DLDjlsx=HHP`~x)BBfHR{_&a_%KNRgA|FNt1%2iSr9}PCp6(b6bOFW*r?2 z+l32ruOtVM2AkGh5h6TEIPJkNJb=FqRR2a4x$>|TGZLx(5ZX-7JZIR7EUkkC-Tfni zFGGlD#e#5_=x1AMFN5q!+?I)X+4%_E<8@bsJ`wwIxMhup1+mnjPvcDKW{U0q*V83% zT>&+{brGohe*|&^2HrwD4OU_TA41x$7fPSNI-FB7%lT*?nlXlo5=gBVOhG(~jt@IH zl~C9#kFsYa#_u8o@ZyquPL8lL%`~3h3I*1b82taJaE+Mo(BuR2W81Hy7c4f8GB+ z-?<%{jR^j*bCfRdtmsOnz>i4WruX4t)m#5@e-I9dz2}&FqA%-5C|p8(+#RDn!P`1% zrWn{>1%!k!@xNW}g{1&&!eHiR_mS&ES1cCF${3>xH?x`!XC=;8mm6zKsH8A)x_hC8 z0U3$W=daZ!RQ8Uem%~*Au5Nj;NE^FA<*-RGfvxE5JJ#S7oZXIvM?bSbab*2xmNRyvKGxtl;R@m&?GApXVvF? z`w=3t(xtIqrFby`Z-(t$*PYgqvX|moSraJp`O2b%2~zfr>4jaA_}T37I~f8G)AJ0?SMRrNxt(V-E_7gaLoRaRnDX z0GJdI(#Uy)l`DM?6wFaHMosaMX-iDk*z`$yN9jI)FcJlO?(oDoPA#v%ifh2 zwaJ>=Ynp`8{Jt8W#GP{-{0k`j?oq?Ga{}PmkdnAS3$g3{P$>AcO4x;l;?JKv z?7;_7L-r<<)P`wI7dL7Px>Jj?@@H#W3j|8&7WA2U!zB%I*alin^b|rP2$1&&qMlc= z>Ra)N@CST%hGp~|eT0GK(cdUaQ`Fwei1zW|JN{OaQ`T)o5nT@Oam_ApA|l|9jjiU9 zH7M$d9s>%9LIYtOv3zcocd6 zRMMoFJzy^eel+yv7liP<3Z7xUXz*YiledTh`V21bBSjt%214t^Ei+I47~rc}#3{Qd zetgPaqj){06$nOA3~5Ize8Ui7G{m7SC{5JuLE@w|9Bmh}Uh?{@hpbyScN!BNKiy{6 z0Sg=^t4SDFkam3_%7+~qCTee#WCeuHtr0Oh&KEl&cIdCH?8d{_b<2X9JiPdUx^gXd zD;H`?eU4zCjz3O#Ve`nJ9CjS3$IFr!t=84fSzYz-Y!sr2SLEvo7JHag=Y;;OLyE4j!=anb0T5Ncnei&6wcv~^br4ugY6m4u} zQfG6u!2x4)`~Blqlj9l9yRsQWYcJ3Xe9QkLCq%Q8(o6S=S4j z1z}I65x|8?s?qxsXLnS30Tolx(FHOXD|pde#e(hee`&y~q)aSknJ(aC;U9~rmfH7& zg$ly2D#?mZ>GuQmllj9_OmZeg@~z?QCU$K}iM8d4*g&9pm@6FC@tq^ZmqGPp7kJ2goni)sd}b4RJqy$lZY%bRnZB$ATr`AS-!SwZ9DYZM84Ya%C& zdU+FTX!uE7cr^vlIA_(!nf(xHUxFL(_kPL-;D1JZ{+!;&C4R-;7MVC{jIy)bB;! zU^cW>jFhj~v8I!J)LhrE0yH{sqm1yyH97R(i~%`s~YRA1>z0_ z6S>%sn30C-E%6<3?2Q6Gg|dlE-Rjoe3rcTM+NAt6$NuD$jRpijE1j%!HB+Nn(|rs) ziGR|8MPcE7Q7B{>z|bC`DRS+EvQTwKUN}|0niJAF_Ng=)Be#La8#HMa6RSyDuD~;* zELORzV~S>=`eBJkqFuYYaIl%cZl49)blKuQCUNtX{qD*$mg zyH{`C|MCysSU3y^VuHa7nRc~$(1?Z|>4z3hk=#)AOJM-^4D z8g7C(!&C)F;#M~nT2u#hPL>IWl2u()PTyCPwdx(`sgMap^HaRn(iysQ7RT#rA@DOi zWn=l%xQvzo{E1Ll-JZ;`wiwtkK*)@-OPZl#`EX-pjmaqH{SJje ztIMUyxsqs@NDHXQ*fk_|$Anr+(7y|ssX$H9TW$rXbm#Z)=;~&iZb#;xPim0EL{J0# zN#RW$7xqNoR-|U5#>2?EVdD4V3wnoKd7!5vz2kVmjj@g&xa~-&A(P`s6URY0Djmjd zQUkYRk7nI_j6J6>wVJAhnQ>WdDl`2fo({;$x;x?+%g)Bit(dfu+r!2;t$K`_O~WIk z%y6;QOd%=iy8y3k@@~&XhsE{)@toDmHbyGw7HD3{M?nO8_g3Y!31o`0$CvbXj^AzN zxD(&0u}Ic&*K_Qdz-M6TcsD1^APBBtk5ECc%t4H5N_R>PX&3ev8IlDab;RvXhKtfG zdX}v6$#J{v`qyTSrG1Q_uIE?sH0N)=FXa9L7krkk6*-k|(5^S(?^AgIi zI>>r^6H}`aFeV`4?fpGijZ~HH$q_0da5SgwMeuc#&hc#6cFtH42jj~=a}dM zN9&#%vcuspBS?amSWRC<)ZDgHU<+uCpeVovowqPSeTC3Tpi?-FKAU6{=Cxv`X(>En z=Tu-@b{u42!Ilu;_GQQTx<@#GN~BN|d1ZE7(muh`4zR=}vzZtxZ~FJ2Fc1apX?knF zuC0BbEeJ>UN@Tz6c}(!@9QHKKGL}Bz{q<<(+S=CjB4dQqhCq$ieJ(wK;e<+T(2D)URD4*3d`(|#>XLY+n`IY0SHQY-nEs9AMr;d# z_g_ed)81j4M?#J2mwcnap=QQ;{AXP1UQxDnsfm=px14JRHwwcbtHOf3? zM|?_+L$?!)k>83hMUp5qB6vkl5``T)K7j;BJ%uhW!*YGDvig#fmV8%l5nw?x$X2(x zMo_|~t!Zn=AZyOp1s3E46lsdWFLm|_C`FMFm{Jk3auAFl!6Jpdr*(phBdVHJ;7AID z4i_?FJ$-sYh?8QQhX8VT$VJn&tF)4`5n~SGP)U{lA7gJB6xZ5q;o|P@4#C~s-Q6X) zyF)^7cXxN!puyeU2_D=+NJ1cYb+Y&OopY=1sr!qnF1iX?z1Dcg9P=5xa=j8hGBIiz zAD7hbxk(k-4Zlf$S*;fI^>1=|9HfreS4a1--vL}pX05g($CcGCXX{nUb%x8xZ&X{UWjx+&P{mUz2abMSBk2lcgzFl!ESiQ4_ z#)uK0QYva`Xw%M$BBD&p9d9^84>r1dorC@Capg0ym(m3 zqU@18kiOyJ^8amPYUUs*Ni6mCiZWoASp-5x*%eF#Oo*Agz9;CU2n^G;|Vk)Wu zeC}LJ;jAuVx}jb8mNYalX_!w-yTG6#wlT-4&k@~0?#v3J3OEf6x;Y|IEq`&9TDc|b z+8M_AUezOk+cz5>d>Hrbqt(IpW53D#Pz;SSRFm@Wo-n1_SPk@e07~zF0nKzYI}?IR zp!R#@P%3*I(s{#=>nq<%RO5=X?Y|1WK_u$+HDIpHMg^#}jq(}D0~u~`d0Ahe(e$c| zb?B2Ud)lumK7{k0&rfrzLJCbrT_cB@e&=CFHq@|U#X@pL%u_EE*v+{hnn$b_yh&7z zRW_D4%L3;*C+3>^v>=dsvPXfgH@ajS%~-|`DG|Cf5lI$fVnvpxwUPGc`lmI`s;|@2 z_XuZ)oXP9J&|&(TzSs!It(lGwmLmRXY!7uWYLp@b$Ri{nJTLAjqF6)@El;QD$G=&D zsn(^}ydnr82>ju@h5yF0f}@H0=fAQSbt6K7gp_-Ju#*uc-Q(*;x< zHEm%kC~lYpZ!{?B@L=*k>%x?i+(J~_ojqk_ovALxBh47LytxBVRO! z0*1;As*S()T;f(+x`32DIycc?I|5E|>SPU>ZA7qRb*w4&W9|Fx?Hv{Oz3%7kJyO&) zovDm>eZScS&voAS27JUa2}@YLc=`TZ!4g-HgWUPYKA)w zP7&_o16e=;Qqt&T*+++c){4-MEo@kV!YxaD>t<) z?=ydD7_K+!27V*QT^f0|!wQkEpQr5|kuGy^=^7ua);6yJwK3unUL$*goil|)MR0aa z`AYjVT7}-m&brQh*j|dvv^EA>#foB>Wic;sR6xew`XnqI@GfASuKiR+n-N&hof435 z6U&~qBec0tD}(B1J}a$zvt)lw7tjkH*Mj**1-izfB-?;yZF|M*pq5`OiMzfrQc<;# zdX#?9Kcm_uiVeeQPh?Jvn^lBunOAgc&|mKdE?G@wEp&DPoYEkj5&wMr%ao2=mtoS`8O2h;#^4&TobroQp(*aoLe7vzGPNyl0umlVH2C(7p)^VG`?NnD; zD6xQ{MUs#h+xA9Yx6M0krO=mh?mJ0<$1hY>w8}Q^SCWm$P%2c+$L%=#h@!H{yRVv> zpz#?=C5O(fx2)gK49&uelUyYyo6e=VVn)HOFN|N{y$jG2bvEHJ1&%A?DMr(=DQr|- zJW<(V;$XlJfiL5etY@7g?b$9@-%Q<#k%?ncEWUmKxeV5=}AFQ~$)TUr^BO3ZPf2c=rl2=XGToa;m{zZx1v6airjJMW&AE7jI>Z3Ei?eJ8>njGA)w~C(|Xu+g$xodJQRalF;X(v5p-=H%J`tI~Wt@%R5w#bF@46^xy`?j{?htIx4WEvx9@IJb;scOu??tQSA3xQv z-EE=uFZnC*rPKDD;22ItE|J0KiqkF9H8}Tra<;-7xU~7o#5SwTNpp34&JQ)WQ9Cof zTe{;6OJC&rIOKfEsUsoK)X(+tP^`|wfK(iOfE9L6GU_zTk7XB60;s0Q z)8x3tQ~kPuJnJx}wa<2G*X^8P^(|D9d~&M!TZ^C#O8NyyV1x3p=zQ7#L7Tric_i?y zmgwT{b&rwt6w0~*0iCU|GRwMwenM6GlK)qYUw#tQPw7)c_;!_INH?2JiU($L72m$- zVNx$m3@!E)AJM7Ufy<9tn_IvcL8tPs&kB*sQsDJ2U%UjNdn?wu!-ms1m{`E|*p0bG zlj3DdJ{JRYKP2hy(LyXL;u`Fw(#%%jlPYpSm=ryVkbF0uoLS+#gEc}!{&tE^7uz8v zBMBcUX3Q_f+)06U8R66A&*$Py$m2bIT}As7wd9TSLkQI$&@SmiJT+lf`H9e&^|8*w ze>#ATK2t(`%VLKtbp7JJ{a^#{<_QC@Dgx9hEN{Kykqz=@x#rLJ&o|&$LT)`?I_y&=o^IX)58;4|9fAEV7q@Qy0jG3-Ue2DfNEYB|rb{PvW{&cA9 zs7A{PKS04)B!6h-(eb|Mnz4*ViUkX2vHY{NK$O_tl(QuT12AVDypI5hMjK#(0~LN8 zjf6+WjwT!jZr{L`3DRb|?{6*hxM;J!V4pNCOEqYcOaaK^(hvHKlz=irTgP(13y~cWnTkC17zhUq6~U?hjSulDm+GH{qSSphLhf&Jv3K+#b7UwJQN3gLMoUnXaJ6! z>`i||uel4(n0u{^IpksY7PY)6gA_?79gI={rRw)s zLBl*(7a;}}(V3C9DrCH2uq7gIv9aC7H0-c!$sHqt9I8i2QTx!(nKE8~yiVQL{%PM~x9&PFFk|7|R$=w0z>ht=0X?r@&w^VTB=mehVFd8* zVa|=<9rIoRG<3d3!^MI%zFU{l(G9vg{j5<#%;2?^_HQ(UUi6incKVJL4dS_w>jw0- z>2?Cm5!1}2M$5U@^Q~}2t@Vmg-}69yYhb9d~TJs_N;$JR8*5f`g&rMA4~ixH24$-o!PldD*d8vUqhV}X3$p$iB>2R~R%f3JkK=b& z;#Y74*uSibz)K2v|GL^G)&R z2`#*J4O=mOFNSXv>vJ%x_s~fdTt>ZP>6EMmrcf9~T{IJUI0u_@1{zy6rq+%`mI9ez zn==eU`ww1yu@-acR|+nlKDei2U;jK)RcHl^vmF-4;*!oT2#*GCvU{#@%Z_)U4D}7+I2+S&NAe9vmR1aWt39vlqPak0bJ(ZDB3(`|u2g*FX zCj^EgK}|7Kn*MgvcT@WdQ+D<)1tHO?JSpaqfjYdjNV$O3&Mo{cxG+4@WM$KLZn;D!}aF z-Z=-Bpj+@h%a;t6AdR2Bk7ttNp`YvNGrQcuh%?dq@P$CjK534yEsW3{Dca+ z*3_#3;_I3P<}>O-bWBVZ@OS)`X-*d)*UZAVDR}egbA2-agX@7n{uGN+@np326eztn@RPvHd76Zk@@)pqE6If|*E4fs0e(4I^B1-B zWOB~l#tkjju$N46xtyd`xR*?IQd<7}nUb1*;P+0dQ6x;iCyDUoE5(R5+Rc$k(k4$Q!F#+#@UqGMd0ti_*rC`d)&U$2(Qr@cjW>tibnX)Tb&TCwkFK$!-lY$Th{hmU9pfc9* z9?p=UavYRR3Q^b`2)@2sYgIs{YiV!_nyCGdMv^LTv)(#|w3>wP;>`n(i##n&+hj}% zhMAUXIf)cBTD0djS3*6$f?q1ytMmi`l-1xbbDUe?>WPP(Rca6Zxlk*uJy@0)ED9%G zXYB^hZW#(3IDb!DehVJn?ErQQNa{u|W>kd$@*Z-mhwmJky3mH~?!cembAj#N)zPB!O}rHuo{ZGJX`ygAx8KhS^l|BPYzm z1l6I9Gm#O!&Dr%8@WcNTOV^wa&rk0jHT8osj01Q6Jj}L@W6Z1ol&^5XAkE{!6$}Tp zW#CN%CX30A98#rAYq>85B*Ga{4PbA@NqLZS32l0(Wx+t?1T&erz(M(8HJ1+u8CYXJ z$zwpC8&%pwnG@}bzZKCzVunBNfJ z^8>74o;ZW3W8Q`^iG}HsJ9T1ia9XIphsCwx)y#uh29Nzl+icd;SQS0fGkzQ}BfPJ( zpu?iLw@wM6dcGHdsfCQ$-S69nI~NOeEohjjfsK8*P)h6SEtvR#YKW;-^xxhPGG|@E zbWXhkNxHN)S(?U}>DcS$(Iq!yhhw-jTH3eGP2O8ljnpHW#-bZ$_zvn)$R9MP9<07L`}ZgO+6v+H>a5>=2wpQzTzOPl8%v7N?hK)HwEkpamQNw16Vc!?+1~ zbuGc^*;f=`7W_0e`Rzd!g+|$QHWW@Kja}bRpj?eSSlZrITRoB!^7i(>>ryemx>Wc7 zy)K2Ib|54(Ip<;lWeSo@py*&Gt(6)MKVy)&r(FbfG-{0;UsK$WdRfFV8jSKQfSxr2 zUjlK&3;;Gk4!{w6|Lo%H`W>_{1#N8-(R_PwP0j!`H z>3Zmp>cgaHUJpHRVQ1ivX(oWZY{*sD&VfU&41URk-Huqm*jx&dOa36aROOFW0mL_( z{*7S%ER&%%C%=y4hX;F1_uh|&OUEOK> zc18#&VCV8ag9<}`^JzS%kQIhY+iX*SvUUdQ_~n7f0`UR!YF0&j=dxOK>X*cMW%d8| zpX@;X6T{UX$#i}4CYHDT6DMa=3>i}hKcUng`-y6CQ@>q zR$`LCua2$bE31oShd(nM-Cd>&$SXoBL*x?zB-5o*9RhomzXtGO6v?w+HY0rH>C@$0 zGz;lbIkyZ1z{&?zU=f?-Z@hGY{>SWP5Na9p%K09q0Ha2LZjk8nFiK3y!BDW((M87N z6r5C4gZz<-YVF}ifq*JGip$5=s5gVDVOMg#khGN*0QHs471JJH9>k4 zu=xOFG5ujop4n_*OM?;rjM?2hKA#Skk$Qgk;MQ1jly{RCz)hks>fvVZ@59N*wPeC< z{t!$S;^-!{ZsVCvR^-QISq$B&>}`J%)GsV(b_dx`qAcBze%FiN9&%fZxdm2b{tBj3 zUHNC@5{bm&<9iA_Gp(W6H7T*$c6YaDZ2&4pHMoEW9HwOF?^Gd70^(R3eHHyo8hWqqm2$;0Q zTi{wYT9jSP@q&w!nISsUFt%d#jxl{43i-Ib(ghvtc7t(u_k|KJyA4{0&GeG}=b7I> zLdnm-#dnnZj_zF^c$G)T)A5hDuBLfD`~LuaF}nR5U_vhqT*hQXZ;#9R3C%LSU5LgS zx0yb|tOqNkIV0EGeuD89PLupa5VA)2?rcPYCV_d3+`AZPk>M9e?+QE9b|tBdeu{KK z;G|FBf%a9N5XY?2ws$EbzcV(ZTV!i+?QMarm>}5xu_haue&>@du5d9jMY|CJ|y$hd0he5XZ znjS`JE)}ga^7UVv$>~2fQ?%V1AvPtjDF5yUw>&NZQ)kY*0O3sl6 z4$Z~*WIA_?alU1;@Qf=~C1`?lAG-u&o+S1>K}Oe#m-V-(P^ZSElx?%kc_{7fbFe^- zJkgfU4jNu(`kpVO#4Px43h0|nGkuA!1mLbK%Q{#u{FB?XH3msuY*DY+)__%|^Oju& zJ7K^geX_7(TdA}~1?2i=gkw)3eFV$yiXL*Yr6pmOqJLg)Wd4qw&eW-9WddO5^sv?Z z@Qjj7nx>E%O>Z{aJ_(9n1owXX307HI%BW!l#)OyC-yS7ZiH;P(9cYfj5)+o}|On5)ERQv#M>12Rb;^B`v#3;p! zC7VeJ=Tgc2-1bdS>w(i~`&*2u^2FlvBx5iW7KASJR8&=E+g|9nsSjG-YP^lv)o`8n zm*PXGbUykJ9poV%Y?}SWA?2(-66rAr?7?*qzm#32ut@FTzRhx|}o{A?d>Ep_-YLgWmI z3UfO4lZvi&|9__7={8v(#&ykj^OQ9#=+f|APIT{1fa1c|0bnmzI20ln5@&Tdnnw=c z^2u2hwspTQwwi{+oomGktfOr!qUGbDNC`KVFlgD3mG3}dhr%#|*DS6a{F!EFN~|Gu z=1Dh`A*fiU;o1Tv-cFjqr8oDX)g^cZuzw+JnTz@>w zstuX0ZdtmK<^aYeN{6KK09$REjRpsY)Mo913mJ)egP-4o=B3GFVU94&dq+ZLtAb2PEZLrn9Bj5mkS6W8-MPLbOV(1$~Wpvwm%~mc6NM z?qk0%S0h4L5T-bVl3G=vSzrPdm-`VBI(ussLcvc*OjqHbZ~-T5%Y}9N;Jpkz+V(E(<9f#f#dA-`JqKv>#%J_*&pDFD3ONQC9*v>6 zcrHWp%KM;gLEGx6LTyJAJ?-lHR5A8PykOaT2PChUrP-spv7@#{^u!IE6zz#!r;8lt z1h{2u4Bx7dlZL{4IhMs7eL>?7W4`Hqway4e*1RGOTFk|F@;IBTI!J$49DX-@2js}P zvS4>n+<}X0i5@toK@ZgpYqw-?zheCOA&apuo3#7UJ$U}UH3gDV047HXrGcq+qZDYM zAp$J!AvI`TyNdvZ5d*COABH+B?hSCFC=VmRpadvBI9p2c=!@9XPiROo5Cz0hl12j_ zu3HVk&`i6XWFd?3Y*3A*x@azW9tnoK`(lPRY)an-6wVxJnmxB^26ng(lL=Jf;BV^n z5~c(S6xkEMwJ(Uy%h}#ux@5zaV%WS%|7R*AUvNwykkNsju||KTS}1$FVu(8o0@Ozy zC;L``ulE@K_|ikkR?AhOV>RAY{{0cg%+J^U*{{5A7oG-ut*Jy{iq!8bkyz08P1GPE!<5I%bpTnO5OBC1l{A(vihxtS(GHBnSm|B@Q1$Jv7q8#;?+;il zOL0@P8srU;p2lWY9#>RwBdVf%zw=YMMgUA`*#?&Io1eHd0n40v%^D*)swF}>s!44Q zK4jAoQ}7)SE8S&KehOLsIVGDD&UyGM$>(NEA6k%N#=?%&Mu~c7n>DXFi|(l$**~JR zakG~yv-@D`Bx71vvQA0`SQud^30|m<8Q2mJd75^~2MWt!WY*FU)Jq)InzPF9Mes*} zyc354_p|PSz{&?EsABXnLX*kmz)Fa#=wFWWHfybE#ic`s989@zrH|}CprZCI(kqdV zil79KO-UyGs=0HfPjdh`ydjFuqXb>=I)nu~cuqRvz&wU20JQoDqWT%u^A8hW=i0bI zp}Jy&pM0T67C}VT;_R+=#MUA#NoG+y<+q42z`VqMjL(&7RTQz*+X9LzL`6pHISMnJ zoRTtd84zOgrd0pLuD@8OtgOB3(x}uN}QNh9)R(hp`HbJQfQ|Sj&eMfm<)Mh|hx3L6D0df; zGFm?kaYrVZ+hG{itjJ`qpr<{!Wgl%0H8T`Bqmd3&J4wN<65|gqhOy+x=xIaPaA-kC zE^{yWI5MnxHrTu!dQY6cUNN<`g<-euBEmNS?*)Ew5R?)5p&uM3Qc}zguWi5Yp{eeK zgW!uR+T6JXlFjND;Q13YpEtjQ(=r60@F3x;0+6;w?nTUqC-kf=q4C4V;iyODYvnzZ z5cn|zJQ2F?xBO&bYx8Npq-qq8r7}*7cX*83<-Qk-@QGzS!y$M$wGrl(kUVPE zj_Auv_(^M&-rnRyLvDn=*5J{qnT&64?DUz*!i;Dln96in6}uKg$?_O6#DdftJGPtG z^B%K4htn-hhpl3@DJ@XyHed*jV$@nvY!rLz>PNxDLh1e@*1)dIgj(k5>^?Txg+^oV zC7K84?(P307ig08#>y-y=`--`{pj)Spy zaG-daT+qV1$kcgb|MW28w#o|^7+T@Qc%3QJNi#Qd)Emfpr`{>=r^Odp>#nL=eaq6;zn2HI}$H zwUoR2qs*AtD;CzRG{z~k#9DS%(cVE^b+2g){rRhsckyD7FaP;GoT5}wX!Ml8e>T+$ z|MRR8om;ck$`wmvF14GwU0lw2e{S>Y+vNZ}r2bj{EhSEf>*>+ZAiG&k>PcZ}edzcz zL{sv2_zEfGx;NeBa%3c3IH#+?ODe}s^f=0zGB^`||1&%r0tSI#6+>R^b^~3>P?FWi z5Z1DBzU+W_CI}5r*N8bRwCjuz=LTsm$0;UdTfmUb6*Dpg`vwRt#HRE{d6#-f#rtmm z0wFDA|D>PQ>w7o8Z$){BE<3Iv+yCy`=atT__K~SzAD0T0Qk+N%|rA1-`msD-cBX*v@{2Q)sP+_4~lcs2YwXS zPO%Rfv?KicS7ceouYnt+j`-p(P=u2>M_fIqgI22v1_OSE<+uSxE8NAL&Z%NGZo^<01epo{K7;lTrG zGjsc^S>PM&5J`K!qNHmb@1CznnCulG&DopIUoZy8uhLQr=Qq{_zn;rdl_(%F)M^XIFxZNH5A6mmkzDw8>+j`GIm5D;}xH zm{)&Htpt%bJAn#6-j8ENHI%V*Za$e0FAk|trF^Vfb1y;0-wr_77A<%etmv&7Jeb^ zQ<-DjC`s-Ddz%pzYXjc2yyjR+Wp_h6h-S};4mJsM#Ty`z)ikd8E|fT8sQ6XYN;t_P z^vaR8q_Sm8*!@j-(Y~8A$w`Uw!dPsWkmbY;%CIXzg zk`)z{Rb$kzYHjh+YBNp1JI`6AX#BvA4He-^2##0`X$~f6Lz>_<-4edHD?_F?1NmM! zQ!{eDx2+N@O#vqH^nQ(Ychzg|C$ z4Lz>hmpvVl{!J2&6!a5K|G0I>;C@&C7Ns1{I{-o#u{U^sS3E=7mrWk(LpnSyvI6WT zx}wS5om&#l+)55A4YDm@1BACOfu|!wBEd%2HJ|<|{jvk93Hk69z_Nf4S}G`nW>t9+ zFqDnuzkM300mGq*Z*AB~mzngvoNzLk{jUK3A9soPbca1?6iN4p zN=Svi4Vh1%(AtL9v@ErUuGz~CFj1ujVXlh*fy%mbD*uJbUIhcjEdZ4@qc)2fd}jwl z_g}x-+WEVA0VD1#`0npa9*D_p=)z`16qsJx4ZSm=ogYp}6k3g`2ZfU#8DkHt1rf{V z%aacobxRQs%hw;%p#`@3IkvJX7-MU)|1xFmSs+!a+TI5SeE;=5QNuxiv_a3!9=qZF z`JkfH0P)F_zVy%|H~f|fYGebBob=j$o*KYyM^PubN7+GFt^}^ zoa`gV7$PG|kKmciPD8q_G0uo=i>`^SO0+D-ArR-HpM9g9mBKX!fcSO4`utn$Q1D!Y zQ9^hq1+jT$XquHO)4$~LW2xk~lQA$|KNyn*5TUsgz3#5~4-71cP}jH*3`zn=eGgyI z2YzDW?9EyOl6yFsGoM`>e$(f3UXE4f@2_Nlo*)^G0(70|T04VO}@ga)5uj zlteY8=IvlH63w$oNcc^pc+3I7m5%8Q023CMQeE6Z)Z-qE`)X4KAjHjVDql4SJ+o)W zv2xopVmZa-x`^RCl_>M_Q`wtiC4g#zcViu?kLZmNzu1Wty+V+a*}rn^OO?M=s7-5@ z{2b(0ug+BJU2P2_N@Y*rO=MMYV%?aAHoZtD?%@CGu$0xBIb##Ya)PqQh|?9#zZ9P| z#&QCu$}+@pxfF{JesXwlWaGw)QjR{OvSs(2`4uago>aO%N-uy6i=5B93ik>X@;%Z} z0Oyugl60X6mW0xX!Ed*-<_s9Dk6B=(F@F2cIX{1kQ+gzd+L zZGA(9DXCX9lQ@0gy*u+slA^It=D01W%!4D1eU`?a037F2zJ(w#!u_-OVCakAc9m15 zy`flUbZT!YZl$V)Nq*v)eXPc9cWp&4KeX&)E|j|58Mf`kwE|$=bXW48+St8(pN{Iv zn~_v`bf9Y_8#Vws25gN6sW*N{+*FPYMBN^-M6LNdr7SEn=h&o^GlL8nxQugPi}G8$I%+$+naq<-sLzXvH>z&aipJ0@o=}vq?&P+ePH+dtY8kg zdj8v0TrAsz=DB;TTO4(|m`KR>HXHaNB`rFjvfPYz(^8-e?dXkf$OeN1K55QrkZV5nC?YDR<_@x+6y(ExoH55lhbBf=121{b{lw*=vCU2 z-J}A-i>=jb46yG1wg5p8wXIz1QuexdjH(a*kWJpNZ`WGo#xFCU-4b zZ-535bs-yX&eIVn4#ZH=fdjW0xr)uaeP0eH*JSjAyt>Md(8E=B-udxV_;36r*`$5^m0V+a)vjijK9o{~eu*nB4=X{LfQBoa z(ZnWG-%^BN$Q^IEFt+th)h!i}!1j7MK6zD$^0EF{l8%GAgggx%Vg3zc7)>^jX}2jT zuG-muk!lD2^MIt0G9KGo{BJ6!$w+WJo_O>OZpDF#!^ z5xCNPbp(_TXzP=9N@ww0oKD0>(Voj&V(Rgag8E&Q|507!4$ALh897UA&27vRPSmgB z(`S>{7_VkMR2g_6NZFO9l{wuad_ue)^Q@(R8i6@-P{rWbh z!d(t#YL_Uy%}r3{e*JDqEo=beTiybK2LwOxkAPI5wmWvL;cnn$a59GPM^cngx7O;r z_p~0XkPz}t-(uf2y`Um|SB-m7^7!M7xgDs4lLY!=ui95O)jrRwzC|DKh5rtg_D@%% z{lXyZm!k{!V`dTC4>FTe&FmL=_Fwy@1Ni~AwEB84GXU>9ROV)1QievlL~^JsLLL}O z!o(mV%AzTW;|MA#k8z0*wPzu!v#eZzCORYHJ$J;d=Uz+-vrIY!n%0KU9jc4s`t61j z0Iogd26WgEe`^=OmX-k6(tE8`~Of=2p~0e@?SN@xlxkMPijt_ zlx_2&X>`kpQ_WuneN?w33e1%I%h-O-WUN;Cy~O2uAO?e?rJ{6+n%S}U)(72-pY!2P zZE(W`g$ugh0{$%h*Bb3bt`^M*9}dMly~TxThW!2Y-os5^Zq@SO&t&0i2>{WVWCZX4J1eqn52`#!gSmG`rI^$=B;pO_@YTW0$gug9Y2P&p0CjsC2 z;0Z-^IAB|5r!$&qBup;qJRDQ;N+i*2vVs;HJqn2jzG9QJ;M!u2`*D}-w(Ted&fE&% zzA?w4ZJ*440A?|?m3hog#}7C?on8c?Asm07gBadFo?{mwG;E_)Aa07+}K+Ho*; zxMRhk8G4rJ)2wMYztO8=St&G;OLehgG32a=I&%UklkORm zXsP@fGM*d{8i}g?YxRiu8AZVY08~*7Fa(zZhTs?@5zvX8%2$n=z!3b8mI94qQyaz1 zM7TsjWm=qVLVVo-F?2dK>kw;E8eb+#2OoDXl(=NPBa4-1e%stEv`;=1Sfta#AJg*1 zQ7jTAwH$aTqOuyO75IcEF|w#JwRy>xry0Yz9tX#ch{F^>mels2xS-?dA(w*F)v^dv zc}?mO&bC?b&8-UZ+7{L2d*aOc>|2+WWzu@}WHlRm2g?rfNY~A8z9}gn?60C*5tDb# zh8y>ei_RFsuWH>R9>~T8Tc_Ps!G6>UNJ-6Q^*!;PI&)h2C-BS=Uo^&i?&m4egqING2%Q>aWtj*okOQ7Krnfu{@BuaiKd+y z&BH^SJqIIfnzjye*^+mG72R2O!pRnymrl*ak>)EIG8JBd#0(;TtTx^%S*G0WO{?mC zWA|@`JaT2N9ZOhaks3RSTmX+k95`X`(8?U70H^&7&}rW*3rqVo*<`hMQ<01Q0(GvY z>Mw+aURRN8S5@qXEo+c9c^KEgb?i@SeG>h7Er`buhHpfn(z zr)w6NAKibxJZ6;3>(BbpX>sDQ%bc}6{+Y{CJ+zliI=jNzgoNBMe2eR1L4@NMTRGgf zaE12VS9m-NR+w&6!n(VZ28$3RNBad4z{Y|y+BIS_jq)vH)|W4Av$ClbB%DZT*gN4@(U%5ypf z`mUAhMPkNn`-|yT55zN+L*Y+`qb2M!if1UOPbk!n)tq~=a_(&cpRW(h3s29CJ2ftU zLii~}a-5AXUB}9_VN8PR&A?xPdb8PB0lLMoc}Jd8w*46q-~XkhczD(04JJv zhI}ii7mN30sZR2iMy^~m!Q&MTc$1eAWvm&gbN{#lE#KQ)3Uu`LR3W~>6QyJ5f8=ll z9mi!@%58F(Lzq^|kT}YN(BO0povP+7EpIz8Zs5#h4RSSiH=-jAM00C>tO1NwE~l(Q z|J7$I%#nk<|9V)-W->R}=*3BZC|dI|kG=hteSqg$eL$Sv6ygJnyWq$bMg)*_#SC#l zdg`#P&Ty?4`dLTkQywG*x;su;3z@!ym(j2d^up_bPk@iI4)?B?FZw%FgBVDmuWa&t|W=(O@;u!%g$y`|e z%zpziuaLE=`B#9_Lt*W_pREe)Ycq||BtP0h+4VE>XeERtBzb`gkqTpb-^T)FmmIq& zcG(=hJd06FiWe{vA2UnKjIVORgxKM?^mK~=n<;e86RyDRq*RbgTodt~NX4$3=BUv( z<;+`vGR{8#WF=!q&BASeidC8L?;L=7Z)TI>C^x-zhL7)Y7J_JVbc3z-1hlNF&^0BH z=3fI~gK{Cgzt2E>J^Bc8D@#Zo3)4ROBWa0F0OU#{yYj>A86dB4=n&C`w|~Vo z!ginuU+@4ZaVRg2hj6q(M#mY!!8Z{&3EKa)`57>UBLpV(qDsU$v$|wIQ}dH0er^Tc z)ky^@?wv>Cm;rB2vY&z&bfJokrrwFN>BVNsNzpe;r>-YQX1mn57Q*%Ud|NwIMM^2a zOo?t)4!Ar7vJmrct9Iq~e-X|+<-U*NG|fV(plif>5Q?KTDnvKEdk`86(LXB(r3Hqt zLyjL$-w;^OJP|oP9iP|^JsmC9B(JD-lxdv!1I0^7T02q3wJk@?2{(Me;zF%_+Qep? z_jcY$qXON=s)OyW_T4w_=yc19iKkou=oFQDi5g|NqH(fq1TL+>uO6=#6+rU--Lh<6%NEF-7sP%9h&e64wMCeKyX<4)o!NNLaVrVM?U zcWYc0y^$Yc@TyfJqdRNeT?ugY>~|a4UAeX2JT98MG!kRjK+5Dt6)_g48&-}ti6Cld zH59DHX@0EMb?!vHn9+9{SCyU?JmyQpc;j|B@b(t(v;ydM^JNlfX)1=q;9tB`bn1a- zT$>X8GkZEc`^iu~S0vm)BP>xBB}3`;-KmU&TOuE{vQm2%Yr!ShRPOU3`}yQ<2k}w z-nX5)foUBQ*@2@GQ9=U0o({g9QxgA1!yWn{WGsk8D;DMpLdDZ8*omiKFC#|TSUTJ) z+aIorW+4QJG%hzi`NpBdg5MSfa&EHC5xny!{XnJV9YWJR1DgVa4y?|Fz_nR`p}P-} ziG!JMRl_B5x92s~g-|&t79pgtqI}@wJ}K=j<)jdD%okMG6+t?Wd|}cH38;hqk(c`Inyo z5if2(9_L6$Po7nln0{|PW|)vTlR62%@BHl&$h-aC_x;0dLV+`j2njpoF|EG&65gkI zNzvpdKi@qXlqqIef(JEtVjQyHLT!Jc{UA3Jfc8W15&&yFpdAvgfv7)AJEC&yg^dLS zg`^E4f!Uk+xklSU7FL6kYV`0sgK64u4Xn)h@Ka^uemU^&kTXK*RgX22>oU#xVXlU0 z)&p3ZzVCCPV?4~ZvATgi+it9_EJr19xI;Uu0SYBN9+NFAyDJk?QehF{Bdo32F^2T* z@GoI1YZhJfZiv^cpVrt3>O17tU-(Âv}^~^rfFCt#i+2x7FQk8{E9?G?S$XpgT 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≥R$#7hf%&VJ0+QiYvrV`sPh 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", 90, "
    Step 5
    Total: 187948us
    Memset: 90us
    Percentage: 0.05%
    ", 2796, "
    Step 5
    Total: 187948us
    Runtime: 2796us
    Percentage: 1.49%
    ", 69317, "
    Step 5
    Total: 187948us
    DataLoader: 69317us
    Percentage: 36.88%
    ", 14091, "
    Step 5
    Total: 187948us
    CPU Exec: 14091us
    Percentage: 7.5%
    ", 1115, "
    Step 5
    Total: 187948us
    Other: 1115us
    Percentage: 0.59%
    "], ["6", 98570, "
    Step 6
    Total: 175153us
    Kernel: 98570us
    Percentage: 56.28%
    ", 1947, "
    Step 6
    Total: 175153us
    Memcpy: 1947us
    Percentage: 1.11%
    ", 89, "
    Step 6
    Total: 175153us
    Memset: 89us
    Percentage: 0.05%
    ", 2762, "
    Step 6
    Total: 175153us
    Runtime: 2762us
    Percentage: 1.58%
    ", 57669, "
    Step 6
    Total: 175153us
    DataLoader: 57669us
    Percentage: 32.92%
    ", 12968, "
    Step 6
    Total: 175153us
    CPU Exec: 12968us
    Percentage: 7.4%
    ", 1148, "
    Step 6
    Total: 175153us
    Other: 1148us
    Percentage: 0.66%
    "], ["7", 98596, "
    Step 7
    Total: 179733us
    Kernel: 98596us
    Percentage: 54.86%
    ", 1931, "
    Step 7
    Total: 179733us
    Memcpy: 1931us
    Percentage: 1.07%
    ", 91, "
    Step 7
    Total: 179733us
    Memset: 91us
    Percentage: 0.05%
    ", 2877, "
    Step 7
    Total: 179733us
    Runtime: 2877us
    Percentage: 1.6%
    ", 61257, "
    Step 7
    Total: 179733us
    DataLoader: 61257us
    Percentage: 34.08%
    ", 13768, "
    Step 7
    Total: 179733us
    CPU Exec: 13768us
    Percentage: 7.66%
    ", 1213, "
    Step 7
    Total: 179733us
    Other: 1213us
    Percentage: 0.67%
    "], ["8", 98623, "
    Step 8
    Total: 174564us
    Kernel: 98623us
    Percentage: 56.5%
    ", 1938, "
    Step 8
    Total: 174564us
    Memcpy: 1938us
    Percentage: 1.11%
    ", 89, "
    Step 8
    Total: 174564us
    Memset: 89us
    Percentage: 0.05%
    ", 2841, "
    Step 8
    Total: 174564us
    Runtime: 2841us
    Percentage: 1.63%
    ", 56453, "
    Step 8
    Total: 174564us
    DataLoader: 56453us
    Percentage: 32.34%
    ", 13420, "
    Step 8
    Total: 174564us
    CPU Exec: 13420us
    Percentage: 7.69%
    ", 1200, "
    Step 8
    Total: 174564us
    Other: 1200us
    Percentage: 0.69%
    "], ["9", 98504, "
    Step 9
    Total: 182172us
    Kernel: 98504us
    Percentage: 54.07%
    ", 1937, "
    Step 9
    Total: 182172us
    Memcpy: 1937us
    Percentage: 1.06%
    ", 87, "
    Step 9
    Total: 182172us
    Memset: 87us
    Percentage: 0.05%
    ", 2788, "
    Step 9
    Total: 182172us
    Runtime: 2788us
    Percentage: 1.53%
    ", 62690, "
    Step 9
    Total: 182172us
    DataLoader: 62690us
    Percentage: 34.41%
    ", 15025, "
    Step 9
    Total: 182172us
    CPU Exec: 15025us
    Percentage: 8.25%
    ", 1141, "
    Step 9
    Total: 182172us
    Other: 1141us
    Percentage: 0.63%
    "], ["10", 98641, "
    Step 10
    Total: 165983us
    Kernel: 98641us
    Percentage: 59.43%
    ", 1798, "
    Step 10
    Total: 165983us
    Memcpy: 1798us
    Percentage: 1.08%
    ", 88, "
    Step 10
    Total: 165983us
    Memset: 88us
    Percentage: 0.05%
    ", 3381, "
    Step 10
    Total: 165983us
    Runtime: 3381us
    Percentage: 2.04%
    ", 48185, "
    Step 10
    Total: 165983us
    DataLoader: 48185us
    Percentage: 29.03%
    ", 12773, "
    Step 10
    Total: 165983us
    CPU Exec: 12773us
    Percentage: 7.7%
    ", 1117, "
    Step 10
    Total: 165983us
    Other: 1117us
    Percentage: 0.67%
    "]]}, "performance": [{"name": "Average Step Time", "description": "", "value": 177592, "extra": 100, "children": [{"name": "Kernel", "description": "", "value": 98589, "extra": 55.51}, {"name": "Memcpy", "description": "", "value": 1915, "extra": 1.08}, {"name": "Memset", "description": "", "value": 89, "extra": 0.05}, {"name": "Runtime", "description": "", "value": 2908, "extra": 1.64}, {"name": "DataLoader", "description": "", "value": 59262, "extra": 33.37}, {"name": "CPU Exec", "description": "", "value": 13674, "extra": 7.7}, {"name": "Other", "description": "", "value": 1156, "extra": 0.65}]}], "recommendations": "
    ", "environments": [{"title": "Number of Worker(s)", "value": "1"}, {"title": "Device Type", "value": "GPU"}], "gpu_metrics": {"title": "GPU Summary", "data": [{"title": "GPU 0:", "value": ""}, {"title": "Name", "value": "Tesla V100-DGXS-32GB"}, {"title": "Memory", "value": "31.74 GB"}, {"title": "Compute Capability", "value": "7.0"}, {"title": "GPU Utilization", "value": "55.51 %"}, {"title": "Est. SM Efficiency", "value": "54.68 %"}, {"title": "Est. Achieved Occupancy", "value": "49.13 %"}, {"title": "Kernel Time using Tensor Cores", "value": "0.0 %"}], "tooltip": "The GPU usage metrics:\n\nGPU Utilization:\nGPU busy time / All steps time. The higher, the better. GPU busy time is the time during which there is at least one GPU kernel running on it. All steps time is the total time of all profiler steps(or called as iterations).\n\nEst. SM Efficiency:\nEstimated Stream Multiprocessor Efficiency. The higher, the better. This metric of a kernel, SM_Eff_K = min(blocks of this kernel / SM number of this GPU, 100%). This overall number is the sum of all kernels' SM_Eff_K weighted by kernel's execution duration, divided by all steps time.\n\nEst. Achieved Occupancy:\nFor most cases such as memory bandwidth bounded kernels, the higher the better. Occupancy is the ratio of active warps on an SM to the maximum number of active warps supported by the SM. The theoretical occupancy of a kernel is upper limit occupancy of this kernel, limited by multiple factors such as kernel shape, kernel used resource, and the GPU compute capability.\nEst. Achieved Occupancy of a kernel, OCC_K = min(threads of the kernel / SM number / max threads per SM, theoretical occupancy of the kernel). This overall number is the weighted average of all kernels' OCC_K using kernel's execution duration as weight. It shows fine-grained low-level GPU utilization.\n\nKernel using Tensor Cores:\nTotal GPU Time for Tensor Core kernels / Total GPU Time for all kernels.\n"}} -{"device_total_time": {"title": "Device Total Time (us)", "columns": [{"type": "string", "name": "name"}, {"type": "number", "name": "value"}], "rows": [["aten::cudnn_convolution_backward", 273428], ["CudnnConvolutionBackward", 273428], ["aten::cudnn_convolution_backward_weight", 142461], ["aten::cudnn_convolution_backward_input", 130967], ["aten::cudnn_convolution", 126619], ["aten::_convolution", 126619], ["aten::convolution", 126619], ["aten::conv2d", 126619], ["aten::cudnn_batch_norm_backward", 61939], ["CudnnBatchNormBackward", 61939], ["aten::cudnn_batch_norm", 34245], ["aten::_batch_norm_impl_index", 34245], ["aten::batch_norm", 34245], ["aten::threshold_backward", 27298], ["ReluBackward1", 27298], ["aten::add_", 24098], ["aten::clamp_min", 17860], ["aten::clamp_min_", 17860], ["aten::relu_", 17860], ["aten::add", 16038], ["aten::copy_", 11492], ["aten::to", 11492], ["aten::max_pool2d_with_indices_backward", 4677], ["MaxPool2DWithIndicesBackward", 4677], ["torch::autograd::AccumulateGrad", 3030], ["aten::mul_", 2409], ["aten::fill_", 1887], ["aten::zero_", 1881], ["aten::max_pool2d_with_indices", 1420], ["aten::max_pool2d", 1420], ["aten::mm", 275], ["AddmmBackward", 275], ["aten::mean", 212], ["aten::adaptive_avg_pool2d", 212], ["aten::addmm", 197], ["aten::linear", 197], ["aten::div", 144], ["MeanBackward1", 144], ["aten::cross_entropy_loss", 60], ["aten::_log_softmax_backward_data", 53], ["LogSoftmaxBackward", 53], ["aten::sum", 44], ["aten::_log_softmax", 42], ["aten::log_softmax", 42], ["aten::nll_loss_forward", 18], ["aten::nll_loss", 18], ["aten::nll_loss_nd", 18], ["aten::nll_loss_backward", 18], ["NllLossBackward", 18], ["aten::ones_like", 6]]}, "device_self_time": {"title": "Device Self Time (us)", "columns": [{"type": "string", "name": "name"}, {"type": "number", "name": "value"}], "rows": [["aten::cudnn_convolution_backward_weight", 142461], ["aten::cudnn_convolution_backward_input", 130967], ["aten::cudnn_convolution", 126619], ["aten::cudnn_batch_norm_backward", 61939], ["aten::cudnn_batch_norm", 34245], ["aten::threshold_backward", 27298], ["aten::add_", 24098], ["aten::clamp_min", 17860], ["aten::add", 16038], ["aten::copy_", 11492], ["aten::max_pool2d_with_indices_backward", 3822], ["aten::mul_", 2409], ["aten::fill_", 1887], ["aten::max_pool2d_with_indices", 1420], ["aten::mm", 275], ["aten::mean", 212], ["aten::addmm", 197], ["aten::div", 144], ["aten::_log_softmax_backward_data", 53], ["aten::sum", 44], ["aten::_log_softmax", 42], ["aten::nll_loss_forward", 18], ["aten::nll_loss_backward", 18]]}, "host_total_time": {"title": "Host Total Time (us)", "columns": [{"type": "string", "name": "name"}, {"type": "number", "name": "value"}], "rows": [["CudnnConvolutionBackward", 90989], ["aten::batch_norm", 87977], ["aten::cudnn_convolution_backward", 87772], ["aten::add_", 78125], ["aten::_batch_norm_impl_index", 78071], ["aten::conv2d", 77781], ["aten::cudnn_batch_norm", 71527], ["aten::convolution", 70394], ["aten::empty", 68147], ["aten::to", 64332], ["aten::_convolution", 64243], ["aten::cudnn_convolution", 56998], ["aten::copy_", 52853], ["aten::cudnn_convolution_backward_input", 41445], ["aten::cudnn_convolution_backward_weight", 40246], ["aten::div", 35158], ["CudnnBatchNormBackward", 34608], ["aten::contiguous", 31137], ["aten::cudnn_batch_norm_backward", 30460], ["aten::mul_", 29081], ["torch::autograd::AccumulateGrad", 28494], ["aten::zero_", 27597], ["aten::empty_like", 26064], ["aten::stack", 24346], ["aten::relu_", 24181], ["aten::add", 19289], ["aten::cat", 17085], ["aten::fill_", 17059], ["aten::_cat", 16933], ["aten::clamp_min_", 15665], ["aten::view", 14027], ["aten::resize_", 12406], ["aten::empty_strided", 11829], ["ReluBackward1", 11656], ["aten::clamp_min", 10311], ["aten::permute", 9775], ["aten::threshold_backward", 9482], ["aten::as_strided", 7600], ["aten::unsqueeze", 6603], ["aten::linear", 1408], ["AddmmBackward", 1303], ["aten::cross_entropy_loss", 1180], ["aten::zeros", 1105], ["aten::addmm", 1034], ["MeanBackward1", 987], ["aten::mm", 860], ["NllLossBackward", 716], ["aten::max_pool2d", 687], ["aten::nll_loss_backward", 614], ["aten::t", 584], ["aten::log_softmax", 567], ["aten::max_pool2d_with_indices", 562], ["aten::adaptive_avg_pool2d", 561], ["aten::nll_loss_nd", 495], ["MaxPool2DWithIndicesBackward", 484], ["aten::ones_like", 452], ["aten::mean", 445], ["aten::_log_softmax", 433], ["aten::nll_loss", 414], ["aten::max_pool2d_with_indices_backward", 411], ["LogSoftmaxBackward", 359], ["aten::narrow", 350], ["aten::nll_loss_forward", 346], ["aten::transpose", 329], ["aten::sum", 327], ["aten::_log_softmax_backward_data", 306], ["aten::expand", 229], ["aten::slice", 223], ["aten::detach_", 208], ["AddBackward0", 175], ["aten::flatten", 164], ["TBackward", 103], ["detach_", 100], ["ViewBackward", 80], ["aten::reshape", 55], ["aten::conj", 12]]}, "host_self_time": {"title": "Host Self Time (us)", "columns": [{"type": "string", "name": "name"}, {"type": "number", "name": "value"}], "rows": [["aten::empty", 68147], ["aten::add_", 51013], ["aten::copy_", 40255], ["aten::cudnn_convolution", 33121], ["aten::cudnn_convolution_backward_input", 29324], ["aten::cudnn_convolution_backward_weight", 22804], ["aten::mul_", 20515], ["aten::div", 20135], ["aten::cudnn_batch_norm", 19843], ["aten::_cat", 16282], ["aten::to", 14834], ["aten::add", 14329], ["aten::view", 14027], ["aten::resize_", 12406], ["aten::cudnn_batch_norm_backward", 12238], ["aten::empty_strided", 11829], ["aten::empty_like", 11742], ["aten::zero_", 10693], ["aten::batch_norm", 9906], ["aten::fill_", 9879], ["aten::relu_", 8516], ["aten::as_strided", 7600], ["aten::conv2d", 7387], ["aten::_convolution", 7245], ["aten::clamp_min", 7106], ["aten::_batch_norm_impl_index", 6544], ["aten::convolution", 6151], ["aten::threshold_backward", 6090], ["aten::cudnn_convolution_backward", 6081], ["aten::permute", 5515], ["aten::contiguous", 5510], ["torch::autograd::AccumulateGrad", 5457], ["aten::clamp_min_", 5354], ["CudnnBatchNormBackward", 4148], ["aten::unsqueeze", 3574], ["CudnnConvolutionBackward", 3217], ["ReluBackward1", 2174], ["aten::zeros", 659], ["aten::stack", 658], ["aten::addmm", 639], ["aten::mm", 575], ["MeanBackward1", 541], ["aten::max_pool2d_with_indices", 477], ["aten::nll_loss_backward", 388], ["aten::nll_loss_forward", 266], ["aten::t", 255], ["aten::mean", 234], ["aten::transpose", 197], ["AddmmBackward", 182], ["aten::max_pool2d_with_indices_backward", 176], ["AddBackward0", 175], ["aten::_log_softmax", 170], ["aten::sum", 153], ["aten::cat", 152], ["aten::expand", 150], ["aten::narrow", 127], ["aten::max_pool2d", 125], ["aten::linear", 124], ["aten::slice", 123], ["aten::cross_entropy_loss", 118], ["aten::adaptive_avg_pool2d", 116], ["aten::detach_", 108], ["aten::_log_softmax_backward_data", 108], ["NllLossBackward", 102], ["detach_", 100], ["aten::ones_like", 95], ["aten::log_softmax", 90], ["aten::flatten", 84], ["aten::nll_loss_nd", 81], ["MaxPool2DWithIndicesBackward", 73], ["aten::nll_loss", 68], ["LogSoftmaxBackward", 53], ["aten::reshape", 29], ["ViewBackward", 25], ["TBackward", 18], ["aten::conj", 12]]}} -{"metadata": {"sort": "device_self_duration", "tooltips": {"tc_eligible": "Whether this operator is eligible to use Tensor Cores.", "tc_self_ratio": "Time of self-kernels with Tensor Cores / Time of self-kernels.", "tc_total_ratio": "Time of kernels with Tensor Cores / Time of kernels."}}, "data": [{"name": "aten::cudnn_convolution_backward_weight", "calls": 318, "device_self_duration": 142461, "device_total_duration": 142461, "host_self_duration": 22804, "host_total_duration": 40246, "tc_eligible": "Yes", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::cudnn_convolution_backward_input", "calls": 312, "device_self_duration": 130967, "device_total_duration": 130967, "host_self_duration": 29324, "host_total_duration": 41445, "tc_eligible": "Yes", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::cudnn_convolution", "calls": 318, "device_self_duration": 126619, "device_total_duration": 126619, "host_self_duration": 33121, "host_total_duration": 56998, "tc_eligible": "Yes", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::cudnn_batch_norm_backward", "calls": 318, "device_self_duration": 61939, "device_total_duration": 61939, "host_self_duration": 12238, "host_total_duration": 30460, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::cudnn_batch_norm", "calls": 318, "device_self_duration": 34245, "device_total_duration": 34245, "host_self_duration": 19843, "host_total_duration": 71527, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::threshold_backward", "calls": 294, "device_self_duration": 27298, "device_total_duration": 27298, "host_self_duration": 6090, "host_total_duration": 9482, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::add_", "calls": 2994, "device_self_duration": 24098, "device_total_duration": 24098, "host_self_duration": 51013, "host_total_duration": 78125, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::clamp_min", "calls": 294, "device_self_duration": 17860, "device_total_duration": 17860, "host_self_duration": 7106, "host_total_duration": 10311, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::add", "calls": 414, "device_self_duration": 16038, "device_total_duration": 16038, "host_self_duration": 14329, "host_total_duration": 19289, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::copy_", "calls": 588, "device_self_duration": 11492, "device_total_duration": 11492, "host_self_duration": 40255, "host_total_duration": 52853, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::max_pool2d_with_indices_backward", "calls": 6, "device_self_duration": 3822, "device_total_duration": 4677, "host_self_duration": 176, "host_total_duration": 411, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::mul_", "calls": 966, "device_self_duration": 2409, "device_total_duration": 2409, "host_self_duration": 20515, "host_total_duration": 29081, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::fill_", "calls": 978, "device_self_duration": 1887, "device_total_duration": 1887, "host_self_duration": 9879, "host_total_duration": 17059, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::max_pool2d_with_indices", "calls": 6, "device_self_duration": 1420, "device_total_duration": 1420, "host_self_duration": 477, "host_total_duration": 562, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::mm", "calls": 12, "device_self_duration": 275, "device_total_duration": 275, "host_self_duration": 575, "host_total_duration": 860, "tc_eligible": "Yes", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::mean", "calls": 6, "device_self_duration": 212, "device_total_duration": 212, "host_self_duration": 234, "host_total_duration": 445, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::addmm", "calls": 6, "device_self_duration": 197, "device_total_duration": 197, "host_self_duration": 639, "host_total_duration": 1034, "tc_eligible": "Yes", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::div", "calls": 198, "device_self_duration": 144, "device_total_duration": 144, "host_self_duration": 20135, "host_total_duration": 35158, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::_log_softmax_backward_data", "calls": 6, "device_self_duration": 53, "device_total_duration": 53, "host_self_duration": 108, "host_total_duration": 306, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::sum", "calls": 6, "device_self_duration": 44, "device_total_duration": 44, "host_self_duration": 153, "host_total_duration": 327, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::_log_softmax", "calls": 6, "device_self_duration": 42, "device_total_duration": 42, "host_self_duration": 170, "host_total_duration": 433, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::nll_loss_forward", "calls": 6, "device_self_duration": 18, "device_total_duration": 18, "host_self_duration": 266, "host_total_duration": 346, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::nll_loss_backward", "calls": 6, "device_self_duration": 18, "device_total_duration": 18, "host_self_duration": 388, "host_total_duration": 614, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::empty", "calls": 4404, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 68147, "host_total_duration": 68147, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::zero_", "calls": 996, "device_self_duration": 0, "device_total_duration": 1881, "host_self_duration": 10693, "host_total_duration": 27597, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::zeros", "calls": 24, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 659, "host_total_duration": 1105, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::view", "calls": 846, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 14027, "host_total_duration": 14027, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::as_strided", "calls": 432, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 7600, "host_total_duration": 7600, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::permute", "calls": 192, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 5515, "host_total_duration": 9775, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::empty_like", "calls": 528, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 11742, "host_total_duration": 26064, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::contiguous", "calls": 192, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 5510, "host_total_duration": 31137, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::empty_strided", "calls": 402, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 11829, "host_total_duration": 11829, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::to", "calls": 414, "device_self_duration": 0, "device_total_duration": 11492, "host_self_duration": 14834, "host_total_duration": 64332, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::unsqueeze", "calls": 192, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 3574, "host_total_duration": 6603, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::resize_", "calls": 1902, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 12406, "host_total_duration": 12406, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::slice", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 123, "host_total_duration": 223, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::narrow", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 127, "host_total_duration": 350, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::_cat", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 16282, "host_total_duration": 16933, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::cat", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 152, "host_total_duration": 17085, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::stack", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 658, "host_total_duration": 24346, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "detach_", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 100, "host_total_duration": 100, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::detach_", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 108, "host_total_duration": 208, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::_convolution", "calls": 318, "device_self_duration": 0, "device_total_duration": 126619, "host_self_duration": 7245, "host_total_duration": 64243, "tc_eligible": "Yes", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::convolution", "calls": 318, "device_self_duration": 0, "device_total_duration": 126619, "host_self_duration": 6151, "host_total_duration": 70394, "tc_eligible": "Yes", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::conv2d", "calls": 318, "device_self_duration": 0, "device_total_duration": 126619, "host_self_duration": 7387, "host_total_duration": 77781, "tc_eligible": "Yes", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::_batch_norm_impl_index", "calls": 318, "device_self_duration": 0, "device_total_duration": 34245, "host_self_duration": 6544, "host_total_duration": 78071, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::batch_norm", "calls": 318, "device_self_duration": 0, "device_total_duration": 34245, "host_self_duration": 9906, "host_total_duration": 87977, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::clamp_min_", "calls": 294, "device_self_duration": 0, "device_total_duration": 17860, "host_self_duration": 5354, "host_total_duration": 15665, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::relu_", "calls": 294, "device_self_duration": 0, "device_total_duration": 17860, "host_self_duration": 8516, "host_total_duration": 24181, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::max_pool2d", "calls": 6, "device_self_duration": 0, "device_total_duration": 1420, "host_self_duration": 125, "host_total_duration": 687, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::adaptive_avg_pool2d", "calls": 6, "device_self_duration": 0, "device_total_duration": 212, "host_self_duration": 116, "host_total_duration": 561, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::flatten", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 84, "host_total_duration": 164, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::transpose", "calls": 30, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 197, "host_total_duration": 329, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::t", "calls": 30, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 255, "host_total_duration": 584, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::expand", "calls": 12, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 150, "host_total_duration": 229, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::linear", "calls": 6, "device_self_duration": 0, "device_total_duration": 197, "host_self_duration": 124, "host_total_duration": 1408, "tc_eligible": "Yes", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::log_softmax", "calls": 6, "device_self_duration": 0, "device_total_duration": 42, "host_self_duration": 90, "host_total_duration": 567, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::nll_loss", "calls": 6, "device_self_duration": 0, "device_total_duration": 18, "host_self_duration": 68, "host_total_duration": 414, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::nll_loss_nd", "calls": 6, "device_self_duration": 0, "device_total_duration": 18, "host_self_duration": 81, "host_total_duration": 495, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::cross_entropy_loss", "calls": 6, "device_self_duration": 0, "device_total_duration": 60, "host_self_duration": 118, "host_total_duration": 1180, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::ones_like", "calls": 6, "device_self_duration": 0, "device_total_duration": 6, "host_self_duration": 95, "host_total_duration": 452, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "NllLossBackward", "calls": 6, "device_self_duration": 0, "device_total_duration": 18, "host_self_duration": 102, "host_total_duration": 716, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "LogSoftmaxBackward", "calls": 6, "device_self_duration": 0, "device_total_duration": 53, "host_self_duration": 53, "host_total_duration": 359, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::conj", "calls": 12, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 12, "host_total_duration": 12, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": false}, {"name": "AddmmBackward", "calls": 6, "device_self_duration": 0, "device_total_duration": 275, "host_self_duration": 182, "host_total_duration": 1303, "tc_eligible": "Yes", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "torch::autograd::AccumulateGrad", "calls": 966, "device_self_duration": 0, "device_total_duration": 3030, "host_self_duration": 5457, "host_total_duration": 28494, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "TBackward", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 18, "host_total_duration": 103, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": false}, {"name": "aten::reshape", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 29, "host_total_duration": 55, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": false}, {"name": "ViewBackward", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 25, "host_total_duration": 80, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": false}, {"name": "MeanBackward1", "calls": 6, "device_self_duration": 0, "device_total_duration": 144, "host_self_duration": 541, "host_total_duration": 987, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "ReluBackward1", "calls": 294, "device_self_duration": 0, "device_total_duration": 27298, "host_self_duration": 2174, "host_total_duration": 11656, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "AddBackward0", "calls": 96, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 175, "host_total_duration": 175, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": false}, {"name": "CudnnBatchNormBackward", "calls": 318, "device_self_duration": 0, "device_total_duration": 61939, "host_self_duration": 4148, "host_total_duration": 34608, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::cudnn_convolution_backward", "calls": 318, "device_self_duration": 0, "device_total_duration": 273428, "host_self_duration": 6081, "host_total_duration": 87772, "tc_eligible": "Yes", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "CudnnConvolutionBackward", "calls": 318, "device_self_duration": 0, "device_total_duration": 273428, "host_self_duration": 3217, "host_total_duration": 90989, "tc_eligible": "Yes", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "MaxPool2DWithIndicesBackward", "calls": 6, "device_self_duration": 0, "device_total_duration": 4677, "host_self_duration": 73, "host_total_duration": 484, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}]} -{"metadata": {"sort": "Total Duration (us)"}, "data": {"columns": [{"type": "string", "name": "Name"}, {"type": "string", "name": "Tensor Cores Used", "tooltip": "Whether this kernel uses Tensor Cores."}, {"type": "number", "name": "Calls"}, {"type": "number", "name": "Total Duration (us)"}, {"type": "number", "name": "Mean Duration (us)"}, {"type": "number", "name": "Max Duration (us)"}, {"type": "number", "name": "Min Duration (us)"}, {"type": "number", "name": "Mean Blocks Per SM", "tooltip": "Blocks Per SM = blocks of this kernel / SM number of this GPU.\nIf this number is less than 1, it indicates the GPU multiprocessors are not fully utilized.\n\"Mean Blocks per SM\" is the weighted average of all calls of this kernel, using each call's execution duration as weight."}, {"type": "number", "name": "Mean Est. Achieved Occupancy (%)", "tooltip": "Est. Achieved Occupancy:\nFor most cases such as memory bandwidth bounded kernels, the higher the better. Occupancy is the ratio of active warps on an SM to the maximum number of active warps supported by the SM. The theoretical occupancy of a kernel is upper limit occupancy of this kernel, limited by multiple factors such as kernel shape, kernel used resource, and the GPU compute capability.\nEst. Achieved Occupancy of a kernel, OCC_K = min(threads of the kernel / SM number / max threads per SM, theoretical occupancy of the kernel). This \"Mean\" number is the weighted average of all calls' OCC_K of the kernel, using each call's execution duration as weight. It shows fine-grained low-level GPU utilization."}], "rows": [["void cudnn::detail::dgrad_engine(int, int, int, float const*, int, float const*, int, float*, kernel_grad_params, unsigned long long, int, unsigned long long, int, float, int, int, int)", "No", 162, 80756, 498, 1017, 323, 42.25, 29.97], ["void cudnn::cnn::wgrad_alg0_engine(int, int, int, float const*, int, float*, float const*, kernel_grad_params, unsigned long long, int, float, int, int, int, int)", "No", 156, 66472, 426, 745, 345, 9.78, 38.0], ["void cudnn::bn_bw_1C11_kernel_new(float, float, float, float, cudnnTensorStruct, float const*, cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float*, float*, float const*, float const*, float)", "No", 264, 59642, 226, 915, 45, 4.34, 67.98], ["void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "No", 3090, 39814, 13, 378, 1, 641.54, 92.32], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", "No", 90, 36957, 411, 748, 347, 12.34, 50.0], ["void at::native::vectorized_elementwise_kernel<4, at::native::threshold_kernel_impl(at::TensorIteratorBase&, float, float)::{lambda(float, float)#1}, at::detail::Array >(int, at::native::threshold_kernel_impl(at::TensorIteratorBase&, float, float)::{lambda(float, float)#1}, at::detail::Array)", "No", 294, 27298, 93, 377, 13, 653.06, 100.0], ["void cudnn::bn_fw_tr_1C11_kernel_NCHW(cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float const*, float, float, float*, float*, float*, float*, float, float)", "No", 150, 27060, 180, 452, 53, 3.12, 64.06], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", "No", 60, 25782, 430, 729, 352, 3.9, 42.09], ["volta_sgemm_64x64_nt", "No", 102, 21084, 207, 279, 184, 10.24, 19.38], ["volta_scudnn_128x128_stridedB_splitK_small_nn_v1", "No", 48, 20448, 426, 676, 307, 6.83, 25.0], ["void at::native::vectorized_elementwise_kernel<4, at::native::(anonymous namespace)::clamp_min_scalar_kernel_impl(at::TensorIterator&, c10::Scalar)::{lambda()#1}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array >(int, at::native::(anonymous namespace)::clamp_min_scalar_kernel_impl(at::TensorIterator&, c10::Scalar)::{lambda()#1}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array)", "No", 294, 17860, 61, 252, 5, 666.65, 100.0], ["volta_scudnn_winograd_128x128_ldg1_ldg4_relu_tile148t_nt_v1", "No", 36, 12704, 353, 362, 344, 22.4, 25.0], ["volta_scudnn_128x64_stridedB_interior_nn_v1", "No", 30, 9597, 320, 510, 252, 12.9, 19.0], ["volta_sgemm_128x32_nt", "No", 24, 8629, 360, 477, 18, 0.97, 11.51], ["volta_sgemm_64x64_nn", "No", 42, 8551, 204, 217, 195, 12.34, 24.14], ["volta_scudnn_128x64_relu_interior_nn_v1", "No", 30, 8022, 267, 316, 94, 37.1, 25.0], ["volta_scudnn_128x64_stridedB_splitK_xregs_large_nn_v1", "No", 12, 7817, 651, 671, 635, 15.96, 19.0], ["void cudnn::bn_fw_tr_1C11_singleread(cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float const*, float, float, float*, float*, float*, float*, float, float, cudnn::reduced_divisor, int, cudnn::reduced_divisor, cudnn::bnFwPersistentState*, int, float, float, float, int, float, float, cudnnStatus_t*, bool)", "No", 168, 7185, 43, 89, 13, 12.57, 75.0], ["void cudnn::cnn::wgrad_alg0_engine(int, int, int, float const*, int, float*, float const*, kernel_grad_params, unsigned long long, int, float, int, int, int, int)", "No", 12, 7068, 589, 987, 193, 85.34, 37.5], ["void cudnn::winograd_nonfused::winogradForwardOutput4x4(cudnn::winograd_nonfused::WinogradOutputParams)", "No", 120, 5369, 45, 73, 19, 10.0, 50.0], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", "No", 12, 5219, 435, 437, 432, 9.8, 31.0], ["void explicit_convolve_sgemm(int, int, int, float const*, int, float const*, int, float*, kernel_conv_params, unsigned long long, int, unsigned long long, int, float, float, int, float const*, float const*)", "No", 6, 4759, 793, 796, 790, 9.8, 31.0], ["void cudnn::winograd_nonfused::winogradForwardData4x4(cudnn::winograd_nonfused::WinogradDataParams)", "No", 120, 4710, 39, 66, 17, 10.11, 50.0], ["volta_scudnn_128x128_stridedB_interior_nn_v1", "No", 18, 4693, 261, 281, 252, 9.8, 25.0], ["void cudnn::winograd_nonfused::winogradWgradData4x4(cudnn::winograd_nonfused::WinogradDataParams)", "No", 78, 4692, 60, 126, 20, 15.46, 38.0], ["void cudnn::ops::scalePackedTensor_kernel(cudnnTensor4dStruct, float*, float)", "No", 162, 4631, 29, 143, 5, 496.39, 100.0], ["void cudnn::winograd_nonfused::winogradWgradDelta4x4(cudnn::winograd_nonfused::WinogradDeltaParams)", "No", 78, 4573, 59, 125, 17, 15.69, 50.0], ["void cudnn::cnn::wgrad_alg0_engine(int, int, int, float const*, int, float*, float const*, kernel_grad_params, unsigned long long, int, float, int, int, int, int)", "No", 6, 4065, 678, 692, 652, 6.4, 25.0], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", "No", 6, 3917, 653, 686, 595, 4.9, 25.0], ["void at::native::(anonymous namespace)::max_pool_backward_nchw(int, float const*, long const*, int, int, int, int, int, int, int, int, int, int, int, int, int, int, float*)", "No", 6, 3822, 637, 638, 636, 1254.4, 100.0], ["volta_scudnn_128x128_stridedB_splitK_medium_nn_v1", "No", 6, 3720, 620, 623, 614, 5.6, 25.0], ["volta_scudnn_128x64_relu_medium_nn_v1", "No", 6, 3627, 604, 606, 603, 39.2, 25.0], ["volta_scudnn_128x128_stridedB_medium_nn_v1", "No", 12, 3501, 292, 296, 286, 19.6, 25.0], ["volta_scudnn_128x32_sliced1x4_ldg4_relu_exp_medium_nhwc_tn_v1", "No", 6, 3270, 545, 627, 526, 4.9, 25.0], ["volta_scudnn_128x64_relu_small_nn_v1", "No", 12, 3265, 272, 279, 254, 9.8, 25.0], ["volta_scudnn_128x64_relu_xregs_large_nn_v1", "No", 6, 3200, 533, 607, 516, 4.9, 19.0], ["volta_sgemm_32x128_nn", "No", 18, 3053, 170, 171, 168, 22.05, 50.0], ["volta_scudnn_128x128_relu_interior_nn_v1", "No", 6, 3010, 502, 508, 495, 9.8, 25.0], ["volta_scudnn_128x128_stridedB_small_nn_v1", "No", 6, 2995, 499, 505, 493, 19.6, 25.0], ["volta_sgemm_32x128_nt", "No", 18, 2843, 158, 159, 156, 22.05, 50.0], ["void cudnn::winograd_nonfused::winogradForwardFilter4x4(cudnn::winograd_nonfused::WinogradFilterParams)", "No", 120, 2662, 22, 67, 5, 8.68, 73.22], ["void at::native::vectorized_elementwise_kernel<4, at::native::MulScalarFunctor, at::detail::Array >(int, at::native::MulScalarFunctor, at::detail::Array)", "No", 966, 2409, 2, 25, 1, 43.72, 58.39], ["void cudnn::bn_bw_1C11_singleread(float, float, float, float, cudnnTensorStruct, float const*, cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float*, float*, float const*, float const*, float, cudnn::reduced_divisor, int, cudnn::reduced_divisor, cudnn::bnBwPersistentState*, int, float, float, float, int, float, cudnnStatus_t*, bool)", "No", 54, 2297, 43, 73, 18, 20.81, 75.0], ["void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "No", 978, 1887, 2, 143, 0, 599.07, 86.78], ["void cudnn::winograd_nonfused::winogradWgradOutput4x4(cudnn::winograd_nonfused::WinogradWgradOutputParams)", "No", 78, 1504, 19, 69, 5, 8.06, 41.33], ["void at::native::(anonymous namespace)::max_pool_forward_nchw(int, float const*, int, int, int, int, int, int, int, int, int, int, int, int, int, int, float*, long*)", "No", 6, 1420, 237, 239, 234, 313.6, 100.0], ["void cudnn::cnn::im2col4d_kernel(cudnn::cnn::im2col4d_params, cudnnConvolutionStruct, cudnnTensor4dStruct, float const*, float*)", "No", 6, 614, 102, 103, 101, 0.95, 24.0], ["volta_scudnn_128x64_stridedB_small_nn_v1", "No", 6, 584, 97, 100, 93, 9.8, 19.0], ["void nchwToNhwcKernel(int, int, int, int, float const*, float*, float, float)", "No", 12, 453, 38, 68, 9, 73.28, 100.0], ["cask_cudnn::computeOffsetsKernel(cask_cudnn::ComputeOffsetsParams)", "No", 138, 342, 2, 4, 1, 0.13, 1.73], ["void at::native::vectorized_elementwise_kernel<4, at::native::BUnaryFunctor >, at::detail::Array >(int, at::native::BUnaryFunctor >, at::detail::Array)", "No", 318, 322, 1, 2, 1, 0.01, 0.0], ["void at::native::reduce_kernel<512, 1, at::native::ReduceOp, unsigned int, float, 4> >(at::native::ReduceOp, unsigned int, float, 4>)", "No", 6, 212, 35, 36, 35, 51.2, 100.0], ["volta_sgemm_64x32_sliced1x4_nn", "No", 6, 150, 25, 26, 24, 2.0, 25.0], ["volta_sgemm_64x32_sliced1x4_tn", "No", 6, 149, 25, 26, 24, 1.0, 13.0], ["void at::native::unrolled_elementwise_kernel, at::detail::Array, OffsetCalculator<1, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast>(int, at::native::MulScalarFunctor, at::detail::Array, OffsetCalculator<1, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast)", "No", 6, 144, 24, 24, 24, 156.8, 100.0], ["void cudnn::winograd::generateWinogradTilesKernel<0, float, float>(cudnn::winograd::GenerateWinogradTilesParams)", "No", 36, 134, 4, 5, 2, 0.4, 3.0], ["void nhwcToNchwKernel(int, int, int, int, float const*, float*, float, float)", "No", 6, 105, 18, 18, 17, 22.4, 100.0], ["cask_cudnn::computeWgradSplitKOffsetsKernel(cask_cudnn::ComputeSplitKOffsetsParams)", "No", 66, 81, 1, 2, 1, 0.15, 1.68], ["cask_cudnn::computeWgradBOffsetsKernel(cask_cudnn::ComputeWgradBOffsetsParams)", "No", 66, 81, 1, 2, 1, 0.02, 0.0], ["cask_cudnn::computeBOffsetsKernel(cask_cudnn::ComputeBOffsetsParams)", "No", 72, 73, 1, 2, 1, 0.02, 0.0], ["void (anonymous namespace)::softmax_warp_backward(float*, float const*, float const*, int, int, int)", "No", 6, 53, 9, 9, 8, 0.1, 1.0], ["void at::native::reduce_kernel<128, 4, at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4> >(at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4>)", "No", 6, 44, 7, 8, 7, 0.03, 0.0], ["void (anonymous namespace)::softmax_warp_forward(float*, float const*, int, int, int)", "No", 6, 42, 7, 7, 7, 0.1, 1.0], ["void splitKreduce_kernel(cublasSplitKParams, float const*, float const*, float*, float const*, float const*, float const*)", "No", 12, 30, 2, 3, 2, 4.44, 28.0], ["void at::native::unrolled_elementwise_kernel, OffsetCalculator<1, unsigned int>, char*, at::native::memory::LoadWithoutCast, at::detail::Array::StoreWithoutCast>(int, at::native::copy_device_to_device(at::TensorIterator&, bool)::{lambda()#2}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array, OffsetCalculator<1, unsigned int>, char*, at::native::memory::LoadWithoutCast, at::detail::Array::StoreWithoutCast)", "No", 6, 30, 5, 5, 5, 1.56, 5.0], ["void cunn_ClassNLLCriterion_updateOutput_kernel(float*, float*, float*, long*, float*, int, int, int, int, long)", "No", 6, 18, 3, 3, 3, 0.01, 0.0], ["void cunn_ClassNLLCriterion_updateGradInput_kernel(float*, float*, long*, float*, float*, int, int, int, int, long)", "No", 6, 12, 2, 2, 2, 0.01, 0.0]]}} -{"total": {"columns": [{"type": "string", "name": "name"}, {"type": "number", "name": "value"}], "rows": [["void cudnn::detail::dgrad_engine(int, int, int, float const*, int, float const*, int, float*, kernel_grad_params, unsigned long long, int, unsigned long long, int, float, int, int, int)", 80756], ["void cudnn::cnn::wgrad_alg0_engine(int, int, int, float const*, int, float*, float const*, kernel_grad_params, unsigned long long, int, float, int, int, int, int)", 66472], ["void cudnn::bn_bw_1C11_kernel_new(float, float, float, float, cudnnTensorStruct, float const*, cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float*, float*, float const*, float const*, float)", 59642], ["void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", 39814], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", 36957], ["void at::native::vectorized_elementwise_kernel<4, at::native::threshold_kernel_impl(at::TensorIteratorBase&, float, float)::{lambda(float, float)#1}, at::detail::Array >(int, at::native::threshold_kernel_impl(at::TensorIteratorBase&, float, float)::{lambda(float, float)#1}, at::detail::Array)", 27298], ["void cudnn::bn_fw_tr_1C11_kernel_NCHW(cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float const*, float, float, float*, float*, float*, float*, float, float)", 27060], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", 25782], ["volta_sgemm_64x64_nt", 21084], ["volta_scudnn_128x128_stridedB_splitK_small_nn_v1", 20448], ["void at::native::vectorized_elementwise_kernel<4, at::native::(anonymous namespace)::clamp_min_scalar_kernel_impl(at::TensorIterator&, c10::Scalar)::{lambda()#1}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array >(int, at::native::(anonymous namespace)::clamp_min_scalar_kernel_impl(at::TensorIterator&, c10::Scalar)::{lambda()#1}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array)", 17860], ["volta_scudnn_winograd_128x128_ldg1_ldg4_relu_tile148t_nt_v1", 12704], ["volta_scudnn_128x64_stridedB_interior_nn_v1", 9597], ["volta_sgemm_128x32_nt", 8629], ["volta_sgemm_64x64_nn", 8551], ["volta_scudnn_128x64_relu_interior_nn_v1", 8022], ["volta_scudnn_128x64_stridedB_splitK_xregs_large_nn_v1", 7817], ["void cudnn::bn_fw_tr_1C11_singleread(cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float const*, float, float, float*, float*, float*, float*, float, float, cudnn::reduced_divisor, int, cudnn::reduced_divisor, cudnn::bnFwPersistentState*, int, float, float, float, int, float, float, cudnnStatus_t*, bool)", 7185], ["void cudnn::cnn::wgrad_alg0_engine(int, int, int, float const*, int, float*, float const*, kernel_grad_params, unsigned long long, int, float, int, int, int, int)", 7068], ["void cudnn::winograd_nonfused::winogradForwardOutput4x4(cudnn::winograd_nonfused::WinogradOutputParams)", 5369], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", 5219], ["void explicit_convolve_sgemm(int, int, int, float const*, int, float const*, int, float*, kernel_conv_params, unsigned long long, int, unsigned long long, int, float, float, int, float const*, float const*)", 4759], ["void cudnn::winograd_nonfused::winogradForwardData4x4(cudnn::winograd_nonfused::WinogradDataParams)", 4710], ["volta_scudnn_128x128_stridedB_interior_nn_v1", 4693], ["void cudnn::winograd_nonfused::winogradWgradData4x4(cudnn::winograd_nonfused::WinogradDataParams)", 4692], ["void cudnn::ops::scalePackedTensor_kernel(cudnnTensor4dStruct, float*, float)", 4631], ["void cudnn::winograd_nonfused::winogradWgradDelta4x4(cudnn::winograd_nonfused::WinogradDeltaParams)", 4573], ["void cudnn::cnn::wgrad_alg0_engine(int, int, int, float const*, int, float*, float const*, kernel_grad_params, unsigned long long, int, float, int, int, int, int)", 4065], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", 3917], ["void at::native::(anonymous namespace)::max_pool_backward_nchw(int, float const*, long const*, int, int, int, int, int, int, int, int, int, int, int, int, int, int, float*)", 3822], ["volta_scudnn_128x128_stridedB_splitK_medium_nn_v1", 3720], ["volta_scudnn_128x64_relu_medium_nn_v1", 3627], ["volta_scudnn_128x128_stridedB_medium_nn_v1", 3501], ["volta_scudnn_128x32_sliced1x4_ldg4_relu_exp_medium_nhwc_tn_v1", 3270], ["volta_scudnn_128x64_relu_small_nn_v1", 3265], ["volta_scudnn_128x64_relu_xregs_large_nn_v1", 3200], ["volta_sgemm_32x128_nn", 3053], ["volta_scudnn_128x128_relu_interior_nn_v1", 3010], ["volta_scudnn_128x128_stridedB_small_nn_v1", 2995], ["volta_sgemm_32x128_nt", 2843], ["void cudnn::winograd_nonfused::winogradForwardFilter4x4(cudnn::winograd_nonfused::WinogradFilterParams)", 2662], ["void at::native::vectorized_elementwise_kernel<4, at::native::MulScalarFunctor, at::detail::Array >(int, at::native::MulScalarFunctor, at::detail::Array)", 2409], ["void cudnn::bn_bw_1C11_singleread(float, float, float, float, cudnnTensorStruct, float const*, cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float*, float*, float const*, float const*, float, cudnn::reduced_divisor, int, cudnn::reduced_divisor, cudnn::bnBwPersistentState*, int, float, float, float, int, float, cudnnStatus_t*, bool)", 2297], ["void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", 1887], ["void cudnn::winograd_nonfused::winogradWgradOutput4x4(cudnn::winograd_nonfused::WinogradWgradOutputParams)", 1504], ["void at::native::(anonymous namespace)::max_pool_forward_nchw(int, float const*, int, int, int, int, int, int, int, int, int, int, int, int, int, int, float*, long*)", 1420], ["void cudnn::cnn::im2col4d_kernel(cudnn::cnn::im2col4d_params, cudnnConvolutionStruct, cudnnTensor4dStruct, float const*, float*)", 614], ["volta_scudnn_128x64_stridedB_small_nn_v1", 584], ["void nchwToNhwcKernel(int, int, int, int, float const*, float*, float, float)", 453], ["cask_cudnn::computeOffsetsKernel(cask_cudnn::ComputeOffsetsParams)", 342], ["void at::native::vectorized_elementwise_kernel<4, at::native::BUnaryFunctor >, at::detail::Array >(int, at::native::BUnaryFunctor >, at::detail::Array)", 322], ["void at::native::reduce_kernel<512, 1, at::native::ReduceOp, unsigned int, float, 4> >(at::native::ReduceOp, unsigned int, float, 4>)", 212], ["volta_sgemm_64x32_sliced1x4_nn", 150], ["volta_sgemm_64x32_sliced1x4_tn", 149], ["void at::native::unrolled_elementwise_kernel, at::detail::Array, OffsetCalculator<1, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast>(int, at::native::MulScalarFunctor, at::detail::Array, OffsetCalculator<1, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast)", 144], ["void cudnn::winograd::generateWinogradTilesKernel<0, float, float>(cudnn::winograd::GenerateWinogradTilesParams)", 134], ["void nhwcToNchwKernel(int, int, int, int, float const*, float*, float, float)", 105], ["cask_cudnn::computeWgradSplitKOffsetsKernel(cask_cudnn::ComputeSplitKOffsetsParams)", 81], ["cask_cudnn::computeWgradBOffsetsKernel(cask_cudnn::ComputeWgradBOffsetsParams)", 81], ["cask_cudnn::computeBOffsetsKernel(cask_cudnn::ComputeBOffsetsParams)", 73], ["void (anonymous namespace)::softmax_warp_backward(float*, float const*, float const*, int, int, int)", 53], ["void at::native::reduce_kernel<128, 4, at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4> >(at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4>)", 44], ["void (anonymous namespace)::softmax_warp_forward(float*, float const*, int, int, int)", 42], ["void splitKreduce_kernel(cublasSplitKParams, float const*, float const*, float*, float const*, float const*, float const*)", 30], ["void at::native::unrolled_elementwise_kernel, OffsetCalculator<1, unsigned int>, char*, at::native::memory::LoadWithoutCast, at::detail::Array::StoreWithoutCast>(int, at::native::copy_device_to_device(at::TensorIterator&, bool)::{lambda()#2}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array, OffsetCalculator<1, unsigned int>, char*, at::native::memory::LoadWithoutCast, at::detail::Array::StoreWithoutCast)", 30], ["void cunn_ClassNLLCriterion_updateOutput_kernel(float*, float*, float*, long*, float*, int, int, int, int, long)", 18], ["void cunn_ClassNLLCriterion_updateGradInput_kernel(float*, float*, long*, float*, float*, int, int, int, int, long)", 12]]}} -{"steps": {"columns": [{"type": "string", "name": "Step"}, {"type": "number", "name": "Kernel"}, {"type": "string", "role": "tooltip", "p": {"html": "true"}}, {"type": "number", "name": "Memcpy"}, {"type": "string", "role": "tooltip", "p": {"html": "true"}}, {"type": "number", "name": "Memset"}, {"type": "string", "role": "tooltip", "p": {"html": "true"}}, {"type": "number", "name": "Runtime"}, {"type": "string", "role": "tooltip", "p": {"html": "true"}}, {"type": "number", "name": "DataLoader"}, {"type": "string", "role": "tooltip", "p": {"html": "true"}}, {"type": "number", "name": "CPU Exec"}, {"type": "string", "role": "tooltip", "p": {"html": "true"}}, {"type": "number", "name": "Other"}, {"type": "string", "role": "tooltip", "p": {"html": "true"}}], "rows": [["5", 99778, "
    Step 5
    Total: 182306us
    Kernel: 99778us
    Percentage: 54.73%
    ", 3606, "
    Step 5
    Total: 182306us
    Memcpy: 3606us
    Percentage: 1.98%
    ", 98, "
    Step 5
    Total: 182306us
    Memset: 98us
    Percentage: 0.05%
    ", 41028, "
    Step 5
    Total: 182306us
    Runtime: 41028us
    Percentage: 22.51%
    ", 4341, "
    Step 5
    Total: 182306us
    DataLoader: 4341us
    Percentage: 2.38%
    ", 27460, "
    Step 5
    Total: 182306us
    CPU Exec: 27460us
    Percentage: 15.06%
    ", 5995, "
    Step 5
    Total: 182306us
    Other: 5995us
    Percentage: 3.29%
    "], ["6", 99208, "
    Step 6
    Total: 126183us
    Kernel: 99208us
    Percentage: 78.62%
    ", 2948, "
    Step 6
    Total: 126183us
    Memcpy: 2948us
    Percentage: 2.34%
    ", 98, "
    Step 6
    Total: 126183us
    Memset: 98us
    Percentage: 0.08%
    ", 3406, "
    Step 6
    Total: 126183us
    Runtime: 3406us
    Percentage: 2.7%
    ", 0, "
    Step 6
    Total: 126183us
    DataLoader: 0us
    Percentage: 0.0%
    ", 16404, "
    Step 6
    Total: 126183us
    CPU Exec: 16404us
    Percentage: 13.0%
    ", 4119, "
    Step 6
    Total: 126183us
    Other: 4119us
    Percentage: 3.26%
    "], ["7", 99114, "
    Step 7
    Total: 127181us
    Kernel: 99114us
    Percentage: 77.93%
    ", 2949, "
    Step 7
    Total: 127181us
    Memcpy: 2949us
    Percentage: 2.32%
    ", 98, "
    Step 7
    Total: 127181us
    Memset: 98us
    Percentage: 0.08%
    ", 3417, "
    Step 7
    Total: 127181us
    Runtime: 3417us
    Percentage: 2.69%
    ", 6, "
    Step 7
    Total: 127181us
    DataLoader: 6us
    Percentage: 0.0%
    ", 19521, "
    Step 7
    Total: 127181us
    CPU Exec: 19521us
    Percentage: 15.35%
    ", 2076, "
    Step 7
    Total: 127181us
    Other: 2076us
    Percentage: 1.63%
    "], ["8", 99021, "
    Step 8
    Total: 123079us
    Kernel: 99021us
    Percentage: 80.45%
    ", 2975, "
    Step 8
    Total: 123079us
    Memcpy: 2975us
    Percentage: 2.42%
    ", 97, "
    Step 8
    Total: 123079us
    Memset: 97us
    Percentage: 0.08%
    ", 3544, "
    Step 8
    Total: 123079us
    Runtime: 3544us
    Percentage: 2.88%
    ", 0, "
    Step 8
    Total: 123079us
    DataLoader: 0us
    Percentage: 0.0%
    ", 15464, "
    Step 8
    Total: 123079us
    CPU Exec: 15464us
    Percentage: 12.56%
    ", 1978, "
    Step 8
    Total: 123079us
    Other: 1978us
    Percentage: 1.61%
    "], ["9", 98791, "
    Step 9
    Total: 163461us
    Kernel: 98791us
    Percentage: 60.44%
    ", 3596, "
    Step 9
    Total: 163461us
    Memcpy: 3596us
    Percentage: 2.2%
    ", 97, "
    Step 9
    Total: 163461us
    Memset: 97us
    Percentage: 0.06%
    ", 8275, "
    Step 9
    Total: 163461us
    Runtime: 8275us
    Percentage: 5.06%
    ", 1370, "
    Step 9
    Total: 163461us
    DataLoader: 1370us
    Percentage: 0.84%
    ", 43905, "
    Step 9
    Total: 163461us
    CPU Exec: 43905us
    Percentage: 26.86%
    ", 7427, "
    Step 9
    Total: 163461us
    Other: 7427us
    Percentage: 4.54%
    "], ["10", 98956, "
    Step 10
    Total: 124198us
    Kernel: 98956us
    Percentage: 79.68%
    ", 2885, "
    Step 10
    Total: 124198us
    Memcpy: 2885us
    Percentage: 2.32%
    ", 98, "
    Step 10
    Total: 124198us
    Memset: 98us
    Percentage: 0.08%
    ", 3714, "
    Step 10
    Total: 124198us
    Runtime: 3714us
    Percentage: 2.99%
    ", 1400, "
    Step 10
    Total: 124198us
    DataLoader: 1400us
    Percentage: 1.13%
    ", 13235, "
    Step 10
    Total: 124198us
    CPU Exec: 13235us
    Percentage: 10.66%
    ", 3910, "
    Step 10
    Total: 124198us
    Other: 3910us
    Percentage: 3.15%
    "]]}, "performance": [{"name": "Average Step Time", "description": "", "value": 141068, "extra": 100, "children": [{"name": "Kernel", "description": "", "value": 99145, "extra": 70.28}, {"name": "Memcpy", "description": "", "value": 3160, "extra": 2.24}, {"name": "Memset", "description": "", "value": 98, "extra": 0.07}, {"name": "Runtime", "description": "", "value": 10564, "extra": 7.49}, {"name": "DataLoader", "description": "", "value": 1186, "extra": 0.84}, {"name": "CPU Exec", "description": "", "value": 22665, "extra": 16.07}, {"name": "Other", "description": "", "value": 4251, "extra": 3.01}]}], "recommendations": "
    • Kernels with 68% time are launched by Tensor Cores eligible operators. You could enable Automatic Mixed Precision to speedup by using FP16.
    ", "environments": [{"title": "Number of Worker(s)", "value": "1"}, {"title": "Device Type", "value": "GPU"}], "gpu_metrics": {"title": "GPU Summary", "data": [{"title": "GPU 0:", "value": ""}, {"title": "Name", "value": "Tesla V100-DGXS-32GB"}, {"title": "Memory", "value": "31.74 GB"}, {"title": "Compute Capability", "value": "7.0"}, {"title": "GPU Utilization", "value": "70.27 %"}, {"title": "Est. SM Efficiency", "value": "69.22 %"}, {"title": "Est. Achieved Occupancy", "value": "48.91 %"}, {"title": "Kernel Time using Tensor Cores", "value": "0.0 %"}], "tooltip": "The GPU usage metrics:\n\nGPU Utilization:\nGPU busy time / All steps time. The higher, the better. GPU busy time is the time during which there is at least one GPU kernel running on it. All steps time is the total time of all profiler steps(or called as iterations).\n\nEst. SM Efficiency:\nEstimated Stream Multiprocessor Efficiency. The higher, the better. This metric of a kernel, SM_Eff_K = min(blocks of this kernel / SM number of this GPU, 100%). This overall number is the sum of all kernels' SM_Eff_K weighted by kernel's execution duration, divided by all steps time.\n\nEst. Achieved Occupancy:\nFor most cases such as memory bandwidth bounded kernels, the higher the better. Occupancy is the ratio of active warps on an SM to the maximum number of active warps supported by the SM. The theoretical occupancy of a kernel is upper limit occupancy of this kernel, limited by multiple factors such as kernel shape, kernel used resource, and the GPU compute capability.\nEst. Achieved Occupancy of a kernel, OCC_K = min(threads of the kernel / SM number / max threads per SM, theoretical occupancy of the kernel). This overall number is the weighted average of all kernels' OCC_K using kernel's execution duration as weight. It shows fine-grained low-level GPU utilization.\n\nKernel using Tensor Cores:\nTotal GPU Time for Tensor Core kernels / Total GPU Time for all kernels.\n"}} -{"device_total_time": {"title": "Device Total Time (us)", "columns": [{"type": "string", "name": "name"}, {"type": "number", "name": "value"}], "rows": [["aten::cudnn_convolution_backward", 274794], ["CudnnConvolutionBackward", 274794], ["aten::cudnn_convolution_backward_weight", 141300], ["aten::cudnn_convolution_backward_input", 133494], ["aten::cudnn_convolution", 128683], ["aten::_convolution", 128683], ["aten::convolution", 128683], ["aten::conv2d", 128683], ["aten::cudnn_batch_norm_backward", 61899], ["CudnnBatchNormBackward", 61899], ["aten::cudnn_batch_norm", 34315], ["aten::_batch_norm_impl_index", 34315], ["aten::batch_norm", 34315], ["aten::threshold_backward", 27280], ["ReluBackward1", 27280], ["aten::add_", 24052], ["aten::to", 18959], ["aten::copy_", 18959], ["aten::clamp_min", 17862], ["aten::clamp_min_", 17862], ["aten::relu_", 17862], ["aten::add", 16026], ["aten::max_pool2d_with_indices_backward", 4695], ["MaxPool2DWithIndicesBackward", 4695], ["torch::autograd::AccumulateGrad", 3012], ["aten::mul_", 2395], ["aten::fill_", 1888], ["aten::zero_", 1882], ["aten::max_pool2d_with_indices", 1422], ["aten::max_pool2d", 1422], ["aten::mm", 274], ["AddmmBackward", 274], ["aten::mean", 210], ["aten::adaptive_avg_pool2d", 210], ["aten::addmm", 197], ["aten::linear", 197], ["aten::div", 145], ["MeanBackward1", 145], ["aten::cross_entropy_loss", 60], ["aten::_log_softmax_backward_data", 51], ["LogSoftmaxBackward", 51], ["aten::sum", 45], ["aten::_log_softmax", 42], ["aten::log_softmax", 42], ["aten::nll_loss_forward", 18], ["aten::nll_loss", 18], ["aten::nll_loss_nd", 18], ["aten::nll_loss_backward", 18], ["NllLossBackward", 18], ["aten::ones_like", 6]]}, "device_self_time": {"title": "Device Self Time (us)", "columns": [{"type": "string", "name": "name"}, {"type": "number", "name": "value"}], "rows": [["aten::cudnn_convolution_backward_weight", 141300], ["aten::cudnn_convolution_backward_input", 133494], ["aten::cudnn_convolution", 128683], ["aten::cudnn_batch_norm_backward", 61899], ["aten::cudnn_batch_norm", 34315], ["aten::threshold_backward", 27280], ["aten::add_", 24052], ["aten::copy_", 18959], ["aten::clamp_min", 17862], ["aten::add", 16026], ["aten::max_pool2d_with_indices_backward", 3838], ["aten::mul_", 2395], ["aten::fill_", 1888], ["aten::max_pool2d_with_indices", 1422], ["aten::mm", 274], ["aten::mean", 210], ["aten::addmm", 197], ["aten::div", 145], ["aten::_log_softmax_backward_data", 51], ["aten::sum", 45], ["aten::_log_softmax", 42], ["aten::nll_loss_forward", 18], ["aten::nll_loss_backward", 18]]}, "host_total_time": {"title": "Host Total Time (us)", "columns": [{"type": "string", "name": "name"}, {"type": "number", "name": "value"}], "rows": [["CudnnConvolutionBackward", 119890], ["aten::cudnn_convolution_backward", 115797], ["aten::batch_norm", 105589], ["aten::add_", 97540], ["aten::_batch_norm_impl_index", 95925], ["aten::conv2d", 91000], ["aten::cudnn_batch_norm", 87823], ["aten::empty", 82024], ["aten::convolution", 81781], ["aten::_convolution", 74086], ["aten::cudnn_convolution", 64167], ["aten::cudnn_convolution_backward_weight", 60712], ["aten::to", 57776], ["aten::copy_", 56915], ["aten::cudnn_convolution_backward_input", 47359], ["CudnnBatchNormBackward", 41825], ["torch::autograd::AccumulateGrad", 37189], ["aten::cudnn_batch_norm_backward", 36641], ["aten::mul_", 35389], ["aten::relu_", 29432], ["aten::zero_", 28309], ["aten::add", 23831], ["aten::clamp_min_", 19059], ["aten::empty_like", 18591], ["aten::fill_", 17657], ["aten::resize_", 15019], ["ReluBackward1", 14944], ["aten::clamp_min", 12503], ["aten::threshold_backward", 12062], ["aten::view", 9046], ["AddmmBackward", 2026], ["aten::linear", 1463], ["aten::mm", 1424], ["aten::zeros", 1319], ["aten::cross_entropy_loss", 1225], ["aten::addmm", 1060], ["NllLossBackward", 889], ["aten::nll_loss_backward", 747], ["aten::t", 725], ["MeanBackward1", 663], ["aten::max_pool2d", 599], ["MaxPool2DWithIndicesBackward", 590], ["aten::adaptive_avg_pool2d", 581], ["aten::log_softmax", 580], ["aten::nll_loss_nd", 507], ["LogSoftmaxBackward", 500], ["aten::max_pool2d_with_indices_backward", 493], ["aten::ones_like", 470], ["aten::div", 469], ["aten::mean", 454], ["aten::empty_strided", 453], ["aten::_log_softmax_backward_data", 424], ["aten::max_pool2d_with_indices", 422], ["aten::_log_softmax", 420], ["aten::nll_loss", 418], ["aten::transpose", 413], ["aten::sum", 411], ["aten::nll_loss_forward", 343], ["aten::detach_", 323], ["aten::as_strided", 244], ["aten::expand", 237], ["aten::set_", 221], ["AddBackward0", 200], ["aten::flatten", 163], ["detach_", 156], ["TBackward", 151], ["ViewBackward", 132], ["aten::reshape", 88], ["aten::conj", 15]]}, "host_self_time": {"title": "Host Self Time (us)", "columns": [{"type": "string", "name": "name"}, {"type": "number", "name": "value"}], "rows": [["aten::empty", 82024], ["aten::add_", 62385], ["aten::cudnn_convolution", 35632], ["aten::cudnn_convolution_backward_input", 31902], ["aten::cudnn_convolution_backward_weight", 30672], ["aten::mul_", 24617], ["aten::cudnn_batch_norm", 23800], ["aten::add", 17808], ["aten::cudnn_batch_norm_backward", 15118], ["aten::resize_", 15019], ["aten::zero_", 10815], ["aten::relu_", 10373], ["aten::_convolution", 9919], ["aten::batch_norm", 9664], ["aten::fill_", 9660], ["aten::conv2d", 9219], ["aten::view", 9046], ["aten::clamp_min", 8409], ["aten::empty_like", 8385], ["aten::_batch_norm_impl_index", 8102], ["aten::threshold_backward", 7820], ["aten::cudnn_convolution_backward", 7726], ["aten::convolution", 7695], ["torch::autograd::AccumulateGrad", 7181], ["aten::clamp_min_", 6556], ["CudnnBatchNormBackward", 5184], ["CudnnConvolutionBackward", 4093], ["ReluBackward1", 2882], ["aten::mm", 1032], ["aten::zeros", 877], ["aten::addmm", 652], ["aten::to", 547], ["aten::nll_loss_backward", 463], ["aten::empty_strided", 453], ["aten::div", 343], ["aten::max_pool2d_with_indices", 325], ["aten::t", 312], ["aten::nll_loss_forward", 264], ["aten::transpose", 254], ["aten::as_strided", 244], ["AddmmBackward", 244], ["aten::mean", 233], ["aten::copy_", 230], ["aten::set_", 221], ["aten::max_pool2d_with_indices_backward", 213], ["aten::sum", 201], ["AddBackward0", 200], ["aten::max_pool2d", 177], ["aten::_log_softmax", 168], ["aten::detach_", 167], ["detach_", 156], ["aten::expand", 152], ["NllLossBackward", 142], ["aten::_log_softmax_backward_data", 142], ["aten::linear", 139], ["aten::cross_entropy_loss", 138], ["aten::adaptive_avg_pool2d", 127], ["aten::log_softmax", 106], ["MaxPool2DWithIndicesBackward", 97], ["aten::ones_like", 96], ["MeanBackward1", 95], ["aten::nll_loss_nd", 89], ["aten::flatten", 88], ["LogSoftmaxBackward", 76], ["aten::nll_loss", 75], ["ViewBackward", 44], ["aten::reshape", 43], ["TBackward", 33], ["aten::conj", 15]]}} -{"metadata": {"sort": "device_self_duration", "tooltips": {"tc_eligible": "Whether this operator is eligible to use Tensor Cores.", "tc_self_ratio": "Time of self-kernels with Tensor Cores / Time of self-kernels.", "tc_total_ratio": "Time of kernels with Tensor Cores / Time of kernels."}}, "data": [{"name": "aten::cudnn_convolution_backward_weight", "calls": 318, "device_self_duration": 141300, "device_total_duration": 141300, "host_self_duration": 30672, "host_total_duration": 60712, "tc_eligible": "Yes", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::cudnn_convolution_backward_input", "calls": 312, "device_self_duration": 133494, "device_total_duration": 133494, "host_self_duration": 31902, "host_total_duration": 47359, "tc_eligible": "Yes", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::cudnn_convolution", "calls": 318, "device_self_duration": 128683, "device_total_duration": 128683, "host_self_duration": 35632, "host_total_duration": 64167, "tc_eligible": "Yes", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::cudnn_batch_norm_backward", "calls": 318, "device_self_duration": 61899, "device_total_duration": 61899, "host_self_duration": 15118, "host_total_duration": 36641, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::cudnn_batch_norm", "calls": 318, "device_self_duration": 34315, "device_total_duration": 34315, "host_self_duration": 23800, "host_total_duration": 87823, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::threshold_backward", "calls": 294, "device_self_duration": 27280, "device_total_duration": 27280, "host_self_duration": 7820, "host_total_duration": 12062, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::add_", "calls": 2994, "device_self_duration": 24052, "device_total_duration": 24052, "host_self_duration": 62385, "host_total_duration": 97540, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::copy_", "calls": 12, "device_self_duration": 18959, "device_total_duration": 18959, "host_self_duration": 230, "host_total_duration": 56915, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::clamp_min", "calls": 294, "device_self_duration": 17862, "device_total_duration": 17862, "host_self_duration": 8409, "host_total_duration": 12503, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::add", "calls": 414, "device_self_duration": 16026, "device_total_duration": 16026, "host_self_duration": 17808, "host_total_duration": 23831, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::max_pool2d_with_indices_backward", "calls": 6, "device_self_duration": 3838, "device_total_duration": 4695, "host_self_duration": 213, "host_total_duration": 493, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::mul_", "calls": 966, "device_self_duration": 2395, "device_total_duration": 2395, "host_self_duration": 24617, "host_total_duration": 35389, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::fill_", "calls": 978, "device_self_duration": 1888, "device_total_duration": 1888, "host_self_duration": 9660, "host_total_duration": 17657, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::max_pool2d_with_indices", "calls": 6, "device_self_duration": 1422, "device_total_duration": 1422, "host_self_duration": 325, "host_total_duration": 422, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::mm", "calls": 12, "device_self_duration": 274, "device_total_duration": 274, "host_self_duration": 1032, "host_total_duration": 1424, "tc_eligible": "Yes", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::mean", "calls": 6, "device_self_duration": 210, "device_total_duration": 210, "host_self_duration": 233, "host_total_duration": 454, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::addmm", "calls": 6, "device_self_duration": 197, "device_total_duration": 197, "host_self_duration": 652, "host_total_duration": 1060, "tc_eligible": "Yes", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::div", "calls": 6, "device_self_duration": 145, "device_total_duration": 145, "host_self_duration": 343, "host_total_duration": 469, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::_log_softmax_backward_data", "calls": 6, "device_self_duration": 51, "device_total_duration": 51, "host_self_duration": 142, "host_total_duration": 424, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::sum", "calls": 6, "device_self_duration": 45, "device_total_duration": 45, "host_self_duration": 201, "host_total_duration": 411, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::_log_softmax", "calls": 6, "device_self_duration": 42, "device_total_duration": 42, "host_self_duration": 168, "host_total_duration": 420, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::nll_loss_forward", "calls": 6, "device_self_duration": 18, "device_total_duration": 18, "host_self_duration": 264, "host_total_duration": 343, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::nll_loss_backward", "calls": 6, "device_self_duration": 18, "device_total_duration": 18, "host_self_duration": 463, "host_total_duration": 747, "tc_eligible": "No", "tc_self_ratio": 0.0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::empty", "calls": 4212, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 82024, "host_total_duration": 82024, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::zero_", "calls": 996, "device_self_duration": 0, "device_total_duration": 1882, "host_self_duration": 10815, "host_total_duration": 28309, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::zeros", "calls": 24, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 877, "host_total_duration": 1319, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::to", "calls": 36, "device_self_duration": 0, "device_total_duration": 18959, "host_self_duration": 547, "host_total_duration": 57776, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "detach_", "calls": 12, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 156, "host_total_duration": 156, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::detach_", "calls": 12, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 167, "host_total_duration": 323, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::set_", "calls": 12, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 221, "host_total_duration": 221, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::empty_strided", "calls": 18, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 453, "host_total_duration": 453, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::resize_", "calls": 1896, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 15019, "host_total_duration": 15019, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::_convolution", "calls": 318, "device_self_duration": 0, "device_total_duration": 128683, "host_self_duration": 9919, "host_total_duration": 74086, "tc_eligible": "Yes", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::convolution", "calls": 318, "device_self_duration": 0, "device_total_duration": 128683, "host_self_duration": 7695, "host_total_duration": 81781, "tc_eligible": "Yes", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::conv2d", "calls": 318, "device_self_duration": 0, "device_total_duration": 128683, "host_self_duration": 9219, "host_total_duration": 91000, "tc_eligible": "Yes", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::empty_like", "calls": 336, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 8385, "host_total_duration": 18591, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::view", "calls": 654, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 9046, "host_total_duration": 9046, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::_batch_norm_impl_index", "calls": 318, "device_self_duration": 0, "device_total_duration": 34315, "host_self_duration": 8102, "host_total_duration": 95925, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::batch_norm", "calls": 318, "device_self_duration": 0, "device_total_duration": 34315, "host_self_duration": 9664, "host_total_duration": 105589, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::clamp_min_", "calls": 294, "device_self_duration": 0, "device_total_duration": 17862, "host_self_duration": 6556, "host_total_duration": 19059, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::relu_", "calls": 294, "device_self_duration": 0, "device_total_duration": 17862, "host_self_duration": 10373, "host_total_duration": 29432, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::max_pool2d", "calls": 6, "device_self_duration": 0, "device_total_duration": 1422, "host_self_duration": 177, "host_total_duration": 599, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::adaptive_avg_pool2d", "calls": 6, "device_self_duration": 0, "device_total_duration": 210, "host_self_duration": 127, "host_total_duration": 581, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::flatten", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 88, "host_total_duration": 163, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::as_strided", "calls": 42, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 244, "host_total_duration": 244, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::transpose", "calls": 30, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 254, "host_total_duration": 413, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::t", "calls": 30, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 312, "host_total_duration": 725, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::expand", "calls": 12, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 152, "host_total_duration": 237, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": true}, {"name": "aten::linear", "calls": 6, "device_self_duration": 0, "device_total_duration": 197, "host_self_duration": 139, "host_total_duration": 1463, "tc_eligible": "Yes", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::log_softmax", "calls": 6, "device_self_duration": 0, "device_total_duration": 42, "host_self_duration": 106, "host_total_duration": 580, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::nll_loss", "calls": 6, "device_self_duration": 0, "device_total_duration": 18, "host_self_duration": 75, "host_total_duration": 418, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::nll_loss_nd", "calls": 6, "device_self_duration": 0, "device_total_duration": 18, "host_self_duration": 89, "host_total_duration": 507, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::cross_entropy_loss", "calls": 6, "device_self_duration": 0, "device_total_duration": 60, "host_self_duration": 138, "host_total_duration": 1225, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "aten::ones_like", "calls": 6, "device_self_duration": 0, "device_total_duration": 6, "host_self_duration": 96, "host_total_duration": 470, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": true}, {"name": "NllLossBackward", "calls": 6, "device_self_duration": 0, "device_total_duration": 18, "host_self_duration": 142, "host_total_duration": 889, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "LogSoftmaxBackward", "calls": 6, "device_self_duration": 0, "device_total_duration": 51, "host_self_duration": 76, "host_total_duration": 500, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::conj", "calls": 12, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 15, "host_total_duration": 15, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": false}, {"name": "AddmmBackward", "calls": 6, "device_self_duration": 0, "device_total_duration": 274, "host_self_duration": 244, "host_total_duration": 2026, "tc_eligible": "Yes", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "torch::autograd::AccumulateGrad", "calls": 966, "device_self_duration": 0, "device_total_duration": 3012, "host_self_duration": 7181, "host_total_duration": 37189, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "TBackward", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 33, "host_total_duration": 151, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": false}, {"name": "aten::reshape", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 43, "host_total_duration": 88, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": false}, {"name": "ViewBackward", "calls": 6, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 44, "host_total_duration": 132, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": false}, {"name": "MeanBackward1", "calls": 6, "device_self_duration": 0, "device_total_duration": 145, "host_self_duration": 95, "host_total_duration": 663, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "ReluBackward1", "calls": 294, "device_self_duration": 0, "device_total_duration": 27280, "host_self_duration": 2882, "host_total_duration": 14944, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "AddBackward0", "calls": 96, "device_self_duration": 0, "device_total_duration": 0, "host_self_duration": 200, "host_total_duration": 200, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0, "has_call_stack": false}, {"name": "CudnnBatchNormBackward", "calls": 318, "device_self_duration": 0, "device_total_duration": 61899, "host_self_duration": 5184, "host_total_duration": 41825, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "aten::cudnn_convolution_backward", "calls": 318, "device_self_duration": 0, "device_total_duration": 274794, "host_self_duration": 7726, "host_total_duration": 115797, "tc_eligible": "Yes", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "CudnnConvolutionBackward", "calls": 318, "device_self_duration": 0, "device_total_duration": 274794, "host_self_duration": 4093, "host_total_duration": 119890, "tc_eligible": "Yes", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}, {"name": "MaxPool2DWithIndicesBackward", "calls": 6, "device_self_duration": 0, "device_total_duration": 4695, "host_self_duration": 97, "host_total_duration": 590, "tc_eligible": "No", "tc_self_ratio": 0, "tc_total_ratio": 0.0, "has_call_stack": false}]} -{"metadata": {"sort": "Total Duration (us)"}, "data": {"columns": [{"type": "string", "name": "Name"}, {"type": "string", "name": "Tensor Cores Used", "tooltip": "Whether this kernel uses Tensor Cores."}, {"type": "number", "name": "Calls"}, {"type": "number", "name": "Total Duration (us)"}, {"type": "number", "name": "Mean Duration (us)"}, {"type": "number", "name": "Max Duration (us)"}, {"type": "number", "name": "Min Duration (us)"}, {"type": "number", "name": "Mean Blocks Per SM", "tooltip": "Blocks Per SM = blocks of this kernel / SM number of this GPU.\nIf this number is less than 1, it indicates the GPU multiprocessors are not fully utilized.\n\"Mean Blocks per SM\" is the weighted average of all calls of this kernel, using each call's execution duration as weight."}, {"type": "number", "name": "Mean Est. Achieved Occupancy (%)", "tooltip": "Est. Achieved Occupancy:\nFor most cases such as memory bandwidth bounded kernels, the higher the better. Occupancy is the ratio of active warps on an SM to the maximum number of active warps supported by the SM. The theoretical occupancy of a kernel is upper limit occupancy of this kernel, limited by multiple factors such as kernel shape, kernel used resource, and the GPU compute capability.\nEst. Achieved Occupancy of a kernel, OCC_K = min(threads of the kernel / SM number / max threads per SM, theoretical occupancy of the kernel). This \"Mean\" number is the weighted average of all calls' OCC_K of the kernel, using each call's execution duration as weight. It shows fine-grained low-level GPU utilization."}], "rows": [["void cudnn::detail::dgrad_engine(int, int, int, float const*, int, float const*, int, float*, kernel_grad_params, unsigned long long, int, unsigned long long, int, float, int, int, int)", "No", 180, 86855, 483, 1023, 323, 45.33, 30.04], ["void cudnn::bn_bw_1C11_kernel_new(float, float, float, float, cudnnTensorStruct, float const*, cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float*, float*, float const*, float const*, float)", "No", 264, 59568, 226, 923, 45, 4.33, 67.92], ["void cudnn::cnn::wgrad_alg0_engine(int, int, int, float const*, int, float*, float const*, kernel_grad_params, unsigned long long, int, float, int, int, int, int)", "No", 90, 43471, 483, 742, 363, 8.18, 38.0], ["void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", "No", 3090, 39753, 13, 376, 1, 641.51, 92.35], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", "No", 90, 37016, 411, 735, 346, 12.39, 50.0], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", "No", 72, 35106, 488, 822, 350, 3.83, 41.64], ["void at::native::vectorized_elementwise_kernel<4, at::native::threshold_kernel_impl(at::TensorIteratorBase&, float, float)::{lambda(float, float)#1}, at::detail::Array >(int, at::native::threshold_kernel_impl(at::TensorIteratorBase&, float, float)::{lambda(float, float)#1}, at::detail::Array)", "No", 294, 27280, 93, 377, 13, 653.26, 100.0], ["void cudnn::bn_fw_tr_1C11_kernel_NCHW(cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float const*, float, float, float*, float*, float*, float*, float, float)", "No", 150, 27084, 181, 454, 53, 3.12, 64.02], ["volta_scudnn_128x128_stridedB_splitK_medium_nn_v1", "No", 72, 25342, 352, 629, 323, 3.21, 25.0], ["volta_sgemm_64x64_nt", "No", 102, 21125, 207, 281, 184, 10.28, 19.38], ["volta_scudnn_128x128_stridedB_splitK_small_nn_v1", "No", 48, 20473, 427, 681, 309, 6.82, 25.0], ["void at::native::vectorized_elementwise_kernel<4, at::native::(anonymous namespace)::clamp_min_scalar_kernel_impl(at::TensorIterator&, c10::Scalar)::{lambda()#1}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array >(int, at::native::(anonymous namespace)::clamp_min_scalar_kernel_impl(at::TensorIterator&, c10::Scalar)::{lambda()#1}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array)", "No", 294, 17862, 61, 252, 5, 666.77, 100.0], ["volta_scudnn_winograd_128x128_ldg1_ldg4_relu_tile148t_nt_v1", "No", 36, 12761, 354, 365, 344, 22.4, 25.0], ["volta_scudnn_128x64_stridedB_interior_nn_v1", "No", 30, 9559, 319, 508, 255, 12.91, 19.0], ["volta_sgemm_128x32_nt", "No", 24, 8658, 361, 479, 18, 0.97, 11.51], ["volta_sgemm_64x64_nn", "No", 42, 8544, 203, 210, 197, 12.35, 24.14], ["volta_scudnn_128x64_relu_interior_nn_v1", "No", 30, 7976, 266, 316, 92, 37.08, 25.0], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", "No", 12, 7939, 662, 733, 584, 7.54, 25.0], ["volta_scudnn_128x64_stridedB_splitK_xregs_large_nn_v1", "No", 12, 7819, 652, 670, 634, 15.96, 19.0], ["void cudnn::bn_fw_tr_1C11_singleread(cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float const*, float, float, float*, float*, float*, float*, float, float, cudnn::reduced_divisor, int, cudnn::reduced_divisor, cudnn::bnFwPersistentState*, int, float, float, float, int, float, float, cudnnStatus_t*, bool)", "No", 168, 7231, 43, 89, 11, 12.63, 75.0], ["void cudnn::cnn::wgrad_alg0_engine(int, int, int, float const*, int, float*, float const*, kernel_grad_params, unsigned long long, int, float, int, int, int, int)", "No", 12, 7068, 589, 990, 192, 85.38, 37.51], ["void cudnn::ops::scalePackedTensor_kernel(cudnnTensor4dStruct, float*, float)", "No", 180, 5901, 33, 142, 5, 525.02, 100.0], ["void cudnn::winograd_nonfused::winogradForwardOutput4x4(cudnn::winograd_nonfused::WinogradOutputParams)", "No", 120, 5314, 44, 72, 20, 10.02, 50.0], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", "No", 12, 5221, 435, 440, 431, 9.8, 31.0], ["void cudnn::winograd_nonfused::winogradWgradData4x4(cudnn::winograd_nonfused::WinogradDataParams)", "No", 78, 4681, 60, 126, 20, 15.46, 38.0], ["void cudnn::winograd_nonfused::winogradForwardData4x4(cudnn::winograd_nonfused::WinogradDataParams)", "No", 120, 4648, 39, 67, 17, 10.15, 50.0], ["void cudnn::winograd_nonfused::winogradWgradDelta4x4(cudnn::winograd_nonfused::WinogradDeltaParams)", "No", 78, 4559, 58, 126, 17, 15.71, 50.0], ["void cudnn::cnn::wgrad_alg0_engine(int, int, int, float const*, int, float*, float const*, kernel_grad_params, unsigned long long, int, float, int, int, int, int)", "No", 6, 4038, 673, 691, 649, 6.4, 25.0], ["void at::native::(anonymous namespace)::max_pool_backward_nchw(int, float const*, long const*, int, int, int, int, int, int, int, int, int, int, int, int, int, int, float*)", "No", 6, 3838, 640, 643, 637, 1254.4, 100.0], ["volta_scudnn_128x32_sliced1x4_ldg4_relu_exp_small_nhwc_tn_v1", "No", 6, 3697, 616, 621, 614, 2.6, 25.0], ["volta_scudnn_128x64_relu_medium_nn_v1", "No", 6, 3647, 608, 620, 602, 39.2, 25.0], ["volta_scudnn_128x128_stridedB_medium_nn_v1", "No", 12, 3550, 296, 309, 286, 19.6, 25.0], ["volta_scudnn_128x64_relu_small_nn_v1", "No", 12, 3273, 273, 286, 258, 9.8, 25.0], ["volta_sgemm_32x128_nn", "No", 18, 3059, 170, 173, 167, 22.05, 50.0], ["volta_scudnn_128x128_stridedB_small_nn_v1", "No", 6, 3034, 506, 520, 491, 19.6, 25.0], ["volta_sgemm_32x128_nt", "No", 18, 2837, 158, 159, 156, 22.05, 50.0], ["void cudnn::winograd_nonfused::winogradForwardFilter4x4(cudnn::winograd_nonfused::WinogradFilterParams)", "No", 120, 2632, 22, 67, 4, 8.75, 73.78], ["void at::native::vectorized_elementwise_kernel<4, at::native::MulScalarFunctor, at::detail::Array >(int, at::native::MulScalarFunctor, at::detail::Array)", "No", 966, 2395, 2, 25, 1, 44.01, 58.56], ["void cudnn::bn_bw_1C11_singleread(float, float, float, float, cudnnTensorStruct, float const*, cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float*, float*, float const*, float const*, float, cudnn::reduced_divisor, int, cudnn::reduced_divisor, cudnn::bnBwPersistentState*, int, float, float, float, int, float, cudnnStatus_t*, bool)", "No", 54, 2331, 43, 75, 19, 20.83, 75.0], ["void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", "No", 978, 1888, 2, 143, 0, 600.2, 86.95], ["void cudnn::winograd_nonfused::winogradWgradOutput4x4(cudnn::winograd_nonfused::WinogradWgradOutputParams)", "No", 78, 1484, 19, 69, 3, 8.13, 41.71], ["void at::native::(anonymous namespace)::max_pool_forward_nchw(int, float const*, int, int, int, int, int, int, int, int, int, int, int, int, int, int, float*, long*)", "No", 6, 1422, 237, 243, 234, 313.6, 100.0], ["volta_scudnn_128x64_stridedB_small_nn_v1", "No", 6, 582, 97, 99, 94, 9.8, 19.0], ["void nchwToNhwcKernel(int, int, int, int, float const*, float*, float, float)", "No", 12, 383, 32, 34, 29, 71.72, 100.0], ["void at::native::vectorized_elementwise_kernel<4, at::native::BUnaryFunctor >, at::detail::Array >(int, at::native::BUnaryFunctor >, at::detail::Array)", "No", 318, 325, 1, 2, 1, 0.01, 0.0], ["cask_cudnn::computeOffsetsKernel(cask_cudnn::ComputeOffsetsParams)", "No", 108, 216, 2, 5, 1, 0.16, 2.0], ["void at::native::reduce_kernel<512, 1, at::native::ReduceOp, unsigned int, float, 4> >(at::native::ReduceOp, unsigned int, float, 4>)", "No", 6, 210, 35, 35, 35, 51.2, 100.0], ["cask_cudnn::computeWgradSplitKOffsetsKernel(cask_cudnn::ComputeSplitKOffsetsParams)", "No", 132, 155, 1, 2, 1, 0.16, 1.83], ["cask_cudnn::computeWgradBOffsetsKernel(cask_cudnn::ComputeWgradBOffsetsParams)", "No", 132, 150, 1, 2, 1, 0.02, 0.0], ["volta_sgemm_64x32_sliced1x4_nn", "No", 6, 149, 25, 25, 24, 2.0, 25.0], ["volta_sgemm_64x32_sliced1x4_tn", "No", 6, 148, 25, 25, 24, 1.0, 13.0], ["void at::native::unrolled_elementwise_kernel, at::detail::Array, OffsetCalculator<1, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast>(int, at::native::MulScalarFunctor, at::detail::Array, OffsetCalculator<1, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast)", "No", 6, 145, 24, 25, 24, 156.8, 100.0], ["void cudnn::winograd::generateWinogradTilesKernel<0, float, float>(cudnn::winograd::GenerateWinogradTilesParams)", "No", 36, 126, 4, 5, 2, 0.4, 3.0], ["cask_cudnn::computeBOffsetsKernel(cask_cudnn::ComputeBOffsetsParams)", "No", 54, 57, 1, 2, 1, 0.02, 0.0], ["void nhwcToNchwKernel(int, int, int, int, float const*, float*, float, float)", "No", 6, 54, 9, 10, 8, 12.8, 100.0], ["void (anonymous namespace)::softmax_warp_backward(float*, float const*, float const*, int, int, int)", "No", 6, 51, 8, 9, 8, 0.1, 1.0], ["void at::native::reduce_kernel<128, 4, at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4> >(at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4>)", "No", 6, 45, 8, 8, 7, 0.03, 0.0], ["void (anonymous namespace)::softmax_warp_forward(float*, float const*, int, int, int)", "No", 6, 42, 7, 7, 7, 0.1, 1.0], ["void splitKreduce_kernel(cublasSplitKParams, float const*, float const*, float*, float const*, float const*, float const*)", "No", 12, 31, 3, 4, 2, 4.39, 27.74], ["void at::native::unrolled_elementwise_kernel, OffsetCalculator<1, unsigned int>, char*, at::native::memory::LoadWithoutCast, at::detail::Array::StoreWithoutCast>(int, at::native::copy_device_to_device(at::TensorIterator&, bool)::{lambda()#2}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array, OffsetCalculator<1, unsigned int>, char*, at::native::memory::LoadWithoutCast, at::detail::Array::StoreWithoutCast)", "No", 6, 30, 5, 5, 5, 1.56, 5.0], ["void cunn_ClassNLLCriterion_updateOutput_kernel(float*, float*, float*, long*, float*, int, int, int, int, long)", "No", 6, 18, 3, 3, 3, 0.01, 0.0], ["void cunn_ClassNLLCriterion_updateGradInput_kernel(float*, float*, long*, float*, float*, int, int, int, int, long)", "No", 6, 12, 2, 2, 2, 0.01, 0.0]]}} -{"total": {"columns": [{"type": "string", "name": "name"}, {"type": "number", "name": "value"}], "rows": [["void cudnn::detail::dgrad_engine(int, int, int, float const*, int, float const*, int, float*, kernel_grad_params, unsigned long long, int, unsigned long long, int, float, int, int, int)", 86855], ["void cudnn::bn_bw_1C11_kernel_new(float, float, float, float, cudnnTensorStruct, float const*, cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float*, float*, float const*, float const*, float)", 59568], ["void cudnn::cnn::wgrad_alg0_engine(int, int, int, float const*, int, float*, float const*, kernel_grad_params, unsigned long long, int, float, int, int, int, int)", 43471], ["void at::native::vectorized_elementwise_kernel<4, at::native::AddFunctor, at::detail::Array >(int, at::native::AddFunctor, at::detail::Array)", 39753], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", 37016], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", 35106], ["void at::native::vectorized_elementwise_kernel<4, at::native::threshold_kernel_impl(at::TensorIteratorBase&, float, float)::{lambda(float, float)#1}, at::detail::Array >(int, at::native::threshold_kernel_impl(at::TensorIteratorBase&, float, float)::{lambda(float, float)#1}, at::detail::Array)", 27280], ["void cudnn::bn_fw_tr_1C11_kernel_NCHW(cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float const*, float, float, float*, float*, float*, float*, float, float)", 27084], ["volta_scudnn_128x128_stridedB_splitK_medium_nn_v1", 25342], ["volta_sgemm_64x64_nt", 21125], ["volta_scudnn_128x128_stridedB_splitK_small_nn_v1", 20473], ["void at::native::vectorized_elementwise_kernel<4, at::native::(anonymous namespace)::clamp_min_scalar_kernel_impl(at::TensorIterator&, c10::Scalar)::{lambda()#1}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array >(int, at::native::(anonymous namespace)::clamp_min_scalar_kernel_impl(at::TensorIterator&, c10::Scalar)::{lambda()#1}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array)", 17862], ["volta_scudnn_winograd_128x128_ldg1_ldg4_relu_tile148t_nt_v1", 12761], ["volta_scudnn_128x64_stridedB_interior_nn_v1", 9559], ["volta_sgemm_128x32_nt", 8658], ["volta_sgemm_64x64_nn", 8544], ["volta_scudnn_128x64_relu_interior_nn_v1", 7976], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", 7939], ["volta_scudnn_128x64_stridedB_splitK_xregs_large_nn_v1", 7819], ["void cudnn::bn_fw_tr_1C11_singleread(cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float const*, float, float, float*, float*, float*, float*, float, float, cudnn::reduced_divisor, int, cudnn::reduced_divisor, cudnn::bnFwPersistentState*, int, float, float, float, int, float, float, cudnnStatus_t*, bool)", 7231], ["void cudnn::cnn::wgrad_alg0_engine(int, int, int, float const*, int, float*, float const*, kernel_grad_params, unsigned long long, int, float, int, int, int, int)", 7068], ["void cudnn::ops::scalePackedTensor_kernel(cudnnTensor4dStruct, float*, float)", 5901], ["void cudnn::winograd_nonfused::winogradForwardOutput4x4(cudnn::winograd_nonfused::WinogradOutputParams)", 5314], ["void implicit_convolve_sgemm(int, int, int, float const*, int, float*, float const*, kernel_conv_params, unsigned long long, int, float, float, int, float const*, float const*, bool, int, int)", 5221], ["void cudnn::winograd_nonfused::winogradWgradData4x4(cudnn::winograd_nonfused::WinogradDataParams)", 4681], ["void cudnn::winograd_nonfused::winogradForwardData4x4(cudnn::winograd_nonfused::WinogradDataParams)", 4648], ["void cudnn::winograd_nonfused::winogradWgradDelta4x4(cudnn::winograd_nonfused::WinogradDeltaParams)", 4559], ["void cudnn::cnn::wgrad_alg0_engine(int, int, int, float const*, int, float*, float const*, kernel_grad_params, unsigned long long, int, float, int, int, int, int)", 4038], ["void at::native::(anonymous namespace)::max_pool_backward_nchw(int, float const*, long const*, int, int, int, int, int, int, int, int, int, int, int, int, int, int, float*)", 3838], ["volta_scudnn_128x32_sliced1x4_ldg4_relu_exp_small_nhwc_tn_v1", 3697], ["volta_scudnn_128x64_relu_medium_nn_v1", 3647], ["volta_scudnn_128x128_stridedB_medium_nn_v1", 3550], ["volta_scudnn_128x64_relu_small_nn_v1", 3273], ["volta_sgemm_32x128_nn", 3059], ["volta_scudnn_128x128_stridedB_small_nn_v1", 3034], ["volta_sgemm_32x128_nt", 2837], ["void cudnn::winograd_nonfused::winogradForwardFilter4x4(cudnn::winograd_nonfused::WinogradFilterParams)", 2632], ["void at::native::vectorized_elementwise_kernel<4, at::native::MulScalarFunctor, at::detail::Array >(int, at::native::MulScalarFunctor, at::detail::Array)", 2395], ["void cudnn::bn_bw_1C11_singleread(float, float, float, float, cudnnTensorStruct, float const*, cudnnTensorStruct, float const*, cudnnTensorStruct, float*, float const*, float*, float*, float const*, float const*, float, cudnn::reduced_divisor, int, cudnn::reduced_divisor, cudnn::bnBwPersistentState*, int, float, float, float, int, float, cudnnStatus_t*, bool)", 2331], ["void at::native::vectorized_elementwise_kernel<4, at::native::FillFunctor, at::detail::Array >(int, at::native::FillFunctor, at::detail::Array)", 1888], ["void cudnn::winograd_nonfused::winogradWgradOutput4x4(cudnn::winograd_nonfused::WinogradWgradOutputParams)", 1484], ["void at::native::(anonymous namespace)::max_pool_forward_nchw(int, float const*, int, int, int, int, int, int, int, int, int, int, int, int, int, int, float*, long*)", 1422], ["volta_scudnn_128x64_stridedB_small_nn_v1", 582], ["void nchwToNhwcKernel(int, int, int, int, float const*, float*, float, float)", 383], ["void at::native::vectorized_elementwise_kernel<4, at::native::BUnaryFunctor >, at::detail::Array >(int, at::native::BUnaryFunctor >, at::detail::Array)", 325], ["cask_cudnn::computeOffsetsKernel(cask_cudnn::ComputeOffsetsParams)", 216], ["void at::native::reduce_kernel<512, 1, at::native::ReduceOp, unsigned int, float, 4> >(at::native::ReduceOp, unsigned int, float, 4>)", 210], ["cask_cudnn::computeWgradSplitKOffsetsKernel(cask_cudnn::ComputeSplitKOffsetsParams)", 155], ["cask_cudnn::computeWgradBOffsetsKernel(cask_cudnn::ComputeWgradBOffsetsParams)", 150], ["volta_sgemm_64x32_sliced1x4_nn", 149], ["volta_sgemm_64x32_sliced1x4_tn", 148], ["void at::native::unrolled_elementwise_kernel, at::detail::Array, OffsetCalculator<1, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast>(int, at::native::MulScalarFunctor, at::detail::Array, OffsetCalculator<1, unsigned int>, OffsetCalculator<1, unsigned int>, at::native::memory::LoadWithoutCast, at::native::memory::StoreWithoutCast)", 145], ["void cudnn::winograd::generateWinogradTilesKernel<0, float, float>(cudnn::winograd::GenerateWinogradTilesParams)", 126], ["cask_cudnn::computeBOffsetsKernel(cask_cudnn::ComputeBOffsetsParams)", 57], ["void nhwcToNchwKernel(int, int, int, int, float const*, float*, float, float)", 54], ["void (anonymous namespace)::softmax_warp_backward(float*, float const*, float const*, int, int, int)", 51], ["void at::native::reduce_kernel<128, 4, at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4> >(at::native::ReduceOp::operator()(at::TensorIterator&)::{lambda(float, float)#1}>, unsigned int, float, 4>)", 45], ["void (anonymous namespace)::softmax_warp_forward(float*, float const*, int, int, int)", 42], ["void splitKreduce_kernel(cublasSplitKParams, float const*, float const*, float*, float const*, float const*, float const*)", 31], ["void at::native::unrolled_elementwise_kernel, OffsetCalculator<1, unsigned int>, char*, at::native::memory::LoadWithoutCast, at::detail::Array::StoreWithoutCast>(int, at::native::copy_device_to_device(at::TensorIterator&, bool)::{lambda()#2}::operator()() const::{lambda()#8}::operator()() const::{lambda(float)#1}, at::detail::Array, OffsetCalculator<1, unsigned int>, char*, at::native::memory::LoadWithoutCast, at::detail::Array::StoreWithoutCast)", 30], ["void cunn_ClassNLLCriterion_updateOutput_kernel(float*, float*, float*, long*, float*, int, int, int, int, long)", 18], ["void cunn_ClassNLLCriterion_updateGradInput_kernel(float*, float*, long*, float*, float*, int, int, int, int, long)", 12]]}} diff --git a/plugins/tensorboard-plugins/tb_plugin/test/test_compare_with_autograd.py b/plugins/tensorboard-plugins/tb_plugin/test/test_compare_with_autograd.py deleted file mode 100644 index d097fbd3c..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/test/test_compare_with_autograd.py +++ /dev/null @@ -1,301 +0,0 @@ -import os -import time -import unittest -import pytest -import torch -import torch.nn as nn -import torch.backends.cudnn as cudnn -import torch.optim -import torch.utils.data -import torchvision -import torchvision.transforms as T -import torchvision.models as models -import torch_tb_profiler.io as io -from torch_tb_profiler.profiler import RunLoader - - -def create_log_dir(): - log_dir_name = './log{}'.format(str(int(time.time()*1000))) - try: - os.makedirs(log_dir_name) - except Exception: - raise RuntimeError("Can't create directory: " + log_dir_name) - return log_dir_name - - -def get_autograd_result(p, worker_name, record_shapes=False, with_stack=False): - avgs = p.key_averages() - sort_by = 'self_cuda_time_total' - avgs = sorted( - avgs, key=lambda evt: getattr(evt, sort_by), reverse=True - ) - is_gpu = False - if avgs[0].self_cuda_time_total > 0: - is_gpu = True - others_prefix = {'enumerate(DataLoader)#', 'Optimizer.zero_grad#', 'Optimizer.step#', - 'ProfilerStep*', - 'Memcpy', 'Memset', - 'cuda'} - postfix_to_type = {'CPU': 'operator', 'CUDA': 'kernel'} - - def get_type(evt): - s = str(evt.device_type) - postfix = s[s.index('.') + 1:] - evt_type = postfix_to_type[postfix] - for prefix in others_prefix: - if evt.key.startswith(prefix): - evt_type = 'Other' - break - return evt_type - - result_dict = dict() - result_dict[worker_name + '#operator'] = list() - if is_gpu: - result_dict[worker_name + '#kernel'] = list() - for avg in avgs: - evt_type = get_type(avg) - if evt_type == 'operator': - line = [avg.key, int(avg.count)] - if is_gpu: - line.extend([int(avg.self_cuda_time_total), int(avg.cuda_time_total)]) - line.extend([int(avg.self_cpu_time_total), int(avg.cpu_time_total)]) - result_dict[worker_name + '#operator'].append(line) - elif is_gpu and evt_type == 'kernel': - line = [avg.key, int(avg.count), int(avg.self_cuda_time_total)] - result_dict[worker_name + '#kernel'].append(line) - if record_shapes: - result_dict[worker_name + '#operator#input_shape'] = list() - avgs = p.key_averages(True) - sort_by = 'self_cuda_time_total' - avgs = sorted( - avgs, key=lambda evt: getattr(evt, sort_by), reverse=True - ) - for avg in avgs: - evt_type = get_type(avg) - if evt_type == 'operator': - line = [avg.key, str(avg.input_shapes) if avg.input_shapes else '[]', int(avg.count)] - if is_gpu: - line.extend([int(avg.self_cuda_time_total), int(avg.cuda_time_total)]) - line.extend([int(avg.self_cpu_time_total), int(avg.cpu_time_total)]) - result_dict[worker_name + '#operator#input_shape'].append(line) - # The call stack for legacy and kineto profiler is different for now, - # The legacy profiler has stack for backward while kineto not - # So, just disable call stack compare for the moment - if False and with_stack: - result_dict[worker_name + '#operator#stack'] = list() - avgs = p.key_averages(False, 100) - sort_by = 'self_cuda_time_total' - avgs = sorted( - avgs, key=lambda evt: getattr(evt, sort_by), reverse=True - ) - for avg in avgs: - evt_type = get_type(avg) - if evt_type == 'operator' and avg.stack: - line = [avg.key, int(avg.count)] - if is_gpu: - line.extend([int(avg.self_cuda_time_total), int(avg.cuda_time_total)]) - line.extend([int(avg.self_cpu_time_total), int(avg.cpu_time_total), ''.join(avg.stack)]) - result_dict[worker_name + '#operator#stack'].append(line) - - result_dict[worker_name + '#operator#stack#input_shape'] = list() - avgs = p.key_averages(True, 100) - sort_by = 'self_cuda_time_total' - avgs = sorted( - avgs, key=lambda evt: getattr(evt, sort_by), reverse=True - ) - for avg in avgs: - evt_type = get_type(avg) - if evt_type == 'operator' and avg.stack: - line = [avg.key, str(avg.input_shapes), int(avg.count)] - if is_gpu: - line.extend([int(avg.self_cuda_time_total), int(avg.cuda_time_total)]) - line.extend([int(avg.self_cpu_time_total), int(avg.cpu_time_total), ''.join(avg.stack)]) - result_dict[worker_name + '#operator#stack#input_shape'].append(line) - - return result_dict - - -def generate_plugin_result_row(data): - row = list() - row.append(data['name']) - if 'input_shape' in data: - row.append(data['input_shape']) - row.append(data['calls']) - if 'device_self_duration' in data: - row.append(data['device_self_duration']) - row.append(data['device_total_duration']) - row.extend([data['host_self_duration'], data['host_total_duration']]) - if 'call_stack' in data: - row.append(data['call_stack']) - return row - - -def get_plugin_result(run, record_shapes=False, with_stack=False): - result_dict = dict() - for (worker_name, span), profile in run.profiles.items(): - worker_name = worker_name.split('.')[0] - assert profile.operation_table_by_name is not None - result_dict[worker_name + '#operator'] = list() - for data in profile.operation_table_by_name['data']: - row = generate_plugin_result_row(data) - result_dict[worker_name + '#operator'].append(row) - if profile.kernel_table is not None: - rows = profile.kernel_table['data']['rows'] - result_dict[worker_name + '#kernel'] = list() - for row in rows: - result_dict[worker_name + '#kernel'].append([row[0], row[2], row[3]]) # row[1] is 'Tensor Cores Used'. - if record_shapes: - assert profile.operation_table_by_name_input is not None - result_dict[worker_name + '#operator#input_shape'] = list() - for data in profile.operation_table_by_name_input['data']: - row = generate_plugin_result_row(data) - result_dict[worker_name + '#operator#input_shape'].append(row) - # The call stack for legacy and kineto profiler is different for now, - # The legacy profiler has stack for backward while kineto not - # So, just disable call stack compare for the moment - if False and with_stack: - assert profile.operation_stack_by_name is not None - assert profile.operation_stack_by_name_input is not None - result_dict[worker_name + '#operator#stack'] = list() - op_stack_dict = profile.operation_stack_by_name - for k, datalist in op_stack_dict.items(): - for data in datalist: - row = generate_plugin_result_row(data) - result_dict[worker_name + '#operator#stack'].append(row) - if record_shapes: - result_dict[worker_name + '#operator#stack#input_shape'] = list() - op_stack_dict = profile.operation_stack_by_name_input - for k, datalist in op_stack_dict.items(): - for data in datalist: - row = generate_plugin_result_row(data) - result_dict[worker_name + '#operator#stack#input_shape'].append(row) - - return result_dict - - -def get_train_func(use_gpu=True): - model = models.resnet50(pretrained=True) - if use_gpu: - model.cuda() - cudnn.benchmark = True - - transform = T.Compose([T.Resize(256), T.CenterCrop(224), T.ToTensor()]) - trainset = torchvision.datasets.CIFAR10(root='./data', train=True, - download=True, transform=transform) - trainloader = torch.utils.data.DataLoader(trainset, batch_size=2, - shuffle=True, num_workers=0) - - if use_gpu: - criterion = nn.CrossEntropyLoss().cuda() - else: - criterion = nn.CrossEntropyLoss() - optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9) - if use_gpu: - device = torch.device('cuda:0') - else: - device = torch.device('cpu') - model.train() - - def train(train_step, prof=None): - for step, data in enumerate(trainloader, 0): - print('step:{}'.format(step)) - inputs, labels = data[0].to(device=device), data[1].to(device=device) - - outputs = model(inputs) - loss = criterion(outputs, labels) - - optimizer.zero_grad() - loss.backward() - optimizer.step() - if prof is not None: - prof.step() - if step >= train_step: - break - return train - - -def get_output_fn(dir_name, profilers_dict): - def output_fn(p): - # In current torch.profiler.profile, at beginning of each span, a new p.profiler will be created. - # So the same p.profiler will not be shared among different spans - worker_name = 'worker{}'.format(p.step_num) - profilers_dict[worker_name] = p.profiler - tb_trace_handler = torch.profiler.tensorboard_trace_handler(dir_name, worker_name) - tb_trace_handler(p) - return output_fn - - -class TestCompareWithAutogradResult(unittest.TestCase): - - def compare_results(self, log_dir, profilers_dict, use_gpu=True, record_shapes=False, with_stack=False): - cache = io.Cache() - loader = RunLoader(os.path.split(log_dir)[-1], log_dir, cache) - run = loader.load() - plugin_result = get_plugin_result(run, record_shapes, with_stack) - count = 0 - for worker_name, p in profilers_dict.items(): - autograd_result = get_autograd_result(p, worker_name, record_shapes, with_stack) - for key in autograd_result.keys(): - count += 1 - self.assertTrue(key in plugin_result.keys()) - self.assertEqual(len(plugin_result[key]), len(autograd_result[key])) - for line in plugin_result[key]: - self.assertTrue(line in autograd_result[key]) - self.assertEqual(count, len(plugin_result.keys())) - - @pytest.mark.skipif(not torch.cuda.is_available(), reason='') - def test_autograd_api(self): - with torch.autograd.profiler.profile(use_cuda=True, use_kineto=True, record_shapes=True) as p: - get_train_func()(5) - log_dir = create_log_dir() - p.export_chrome_trace(os.path.join(log_dir, 'worker0.{}.pt.trace.json'.format(int(time.time() * 1000)))) - self.compare_results(log_dir, {'worker0': p}) - - def base_profiler_api(self, use_gpu, record_shapes, profile_memory, with_stack): - log_dir = create_log_dir() - profilers_dict = dict() - if use_gpu: - activities = [ - torch.profiler.ProfilerActivity.CPU, - torch.profiler.ProfilerActivity.CUDA] - else: - activities = [torch.profiler.ProfilerActivity.CPU] - - with torch.profiler.profile( - activities=activities, - schedule=torch.profiler.schedule( - wait=2, - warmup=2, - active=3), - on_trace_ready=get_output_fn(log_dir, profilers_dict), - record_shapes=record_shapes, - profile_memory=profile_memory, - with_stack=with_stack - ) as p: - get_train_func(use_gpu)(13, p) - self.compare_results(log_dir, profilers_dict, use_gpu, record_shapes, with_stack) - - def test_profiler_api_without_gpu(self): - self.base_profiler_api(False, True, True, False) - - @pytest.mark.skipif(not torch.cuda.is_available(), reason='') - def test_profiler_api_with_record_shapes_memory_stack(self): - self.base_profiler_api(True, True, True, True) - - @pytest.mark.skipif(not torch.cuda.is_available(), reason='') - def test_profiler_api_without_record_shapes_memory_stack(self): - self.base_profiler_api(True, False, False, False) - - @pytest.mark.skipif(not torch.cuda.is_available(), reason='') - def test_profiler_api_without_step(self): - log_dir = create_log_dir() - profilers_dict = dict() - with torch.profiler.profile( - activities=[ - torch.profiler.ProfilerActivity.CPU, - torch.profiler.ProfilerActivity.CUDA], - on_trace_ready=get_output_fn(log_dir, profilers_dict), - record_shapes=True - ): - get_train_func()(7) - self.compare_results(log_dir, profilers_dict) diff --git a/plugins/tensorboard-plugins/tb_plugin/test/test_diffrun.py b/plugins/tensorboard-plugins/tb_plugin/test/test_diffrun.py deleted file mode 100644 index 06fbf398a..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/test/test_diffrun.py +++ /dev/null @@ -1,51 +0,0 @@ -import os -import unittest - -import pytest -from torch_tb_profiler.profiler.data import RunProfileData -from torch_tb_profiler.profiler.diffrun import (compare_op_tree, diff_summary, - print_node, print_ops) -from torch_tb_profiler.utils import timing - - -def load_profile(worker, span, path): - return RunProfileData.parse_gpu(worker, span, path, '.') - - -class TestDiffRun(unittest.TestCase): - - @pytest.mark.skipif(not (os.path.isfile(os.path.expanduser('~/profile_result/worker0.pt.trace.json')) and - os.path.isfile(os.path.expanduser('~/profile_result/worker1.pt.trace.json'))), - reason="file doesn't exist") - def test_happy_path(self): - # path1 = os.path.expanduser('~/profile_result/worker0.pt.trace.json') - path1 = '/home/mike/git/kineto/tb_plugin/examples/result/datapipe0.1638760942588.pt.trace.json' - profile1 = load_profile('worker0', 1, path1) - roots = list(profile1.tid2tree.values()) - root = roots[0] - - # path2 = os.path.expanduser('~/profile_result/worker1.pt.trace.json') - path2 = '/home/mike/git/kineto/tb_plugin/examples/result/datapipe0.1638835897553.pt.trace.json' - profile2 = load_profile('worker0', 1, path2) - roots1 = list(profile2.tid2tree.values()) - root1 = roots1[0] - - with timing('Compare operator tree', True): - node = compare_op_tree(root, root1) - - print_ops(node.children[4].left, prefix=' ') - print('========================================================') - print_ops(node.children[4].right) - - print('*********************** summary *************************') - with timing('Diff summary', True): - stats = diff_summary(node) - - # result = stats.flatten_diff_tree() - # path = '0-1-1' - # json_data = result[path].get_diff_node_summary(path) - print_node(stats, 0, 0) - - -if __name__ == '__main__': - unittest.main() diff --git a/plugins/tensorboard-plugins/tb_plugin/test/test_profiler.py b/plugins/tensorboard-plugins/tb_plugin/test/test_profiler.py deleted file mode 100644 index fda2208aa..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/test/test_profiler.py +++ /dev/null @@ -1,2752 +0,0 @@ -import gzip -import json -import os -import unittest - -from torch_tb_profiler.profiler.data import (DistributedRunProfileData, - RunProfileData) -from torch_tb_profiler.profiler.loader import RunLoader -from torch_tb_profiler.profiler.overall_parser import ProfileRole -from torch_tb_profiler.profiler.gpu_metrics_parser import GPUMetricsParser -from torch_tb_profiler.run import RunProfile - -SCHEMA_VERSION = 1 -WORKER_NAME = 'worker0' - - -def parse_json_trace(json_content, worker_name=WORKER_NAME) -> RunProfileData: - trace_json = json.loads(json_content) - trace_json = {'schemaVersion': 1, 'traceEvents': trace_json} - return RunProfileData.from_json(worker_name, 0, trace_json) - - -''' -All the events in json string are only simulation, not actual generated events. -We removed the data fields that not used by current version of our profiler, -for easy to check correctness and shorter in length. -We even renamed the data values such as kernel name or 'ts', to simplify the string. -''' - - -class TestProfiler(unittest.TestCase): - # A test case including all 7 event categories. - def test_all_categories(self): - json_content = """ - [{ - "ph": "X", "cat": "Operator", - "name": "enumerate(DataLoader)#_SingleProcessDataLoaderIter.__next__", "pid": 13721, "tid": "123", - "ts": 100, "dur": 180, - "args": {"Input Dims": [], "External id": 2} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::to", "pid": 13721, "tid": "123", - "ts": 200, "dur": 60, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::nll_loss_backward", "pid": 13721, "tid": "456", - "ts": 340, "dur": 70, - "args": {"Input Dims": [[], [32, 1000], [32], [], [], [], []], "External id": 4} - }, - { - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#1", "pid": 13721, "tid": "123", - "ts": 50, "dur": 400, - "args": {"Input Dims": [], "External id": 1} - }, - { - "ph": "X", "cat": "Memcpy", - "name": "Memcpy HtoD (Pageable -> Device)", "pid": 0, "tid": "stream 7", - "ts": 405, "dur": 10, - "args": {"stream": 7, "correlation": 334, "external id": 4} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaMemcpyAsync", "pid": 13721, "tid": "456", - "ts": 360, "dur": 20, - "args": {"correlation": 334, "external id": 4} - }, - { - "ph": "X", "cat": "Memset", - "name": "Memset (Device)", "pid": 0, "tid": "stream 7", - "ts": 420, "dur": 5, - "args": {"stream": 7, "correlation": 40344, "external id": 4} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaMemsetAsync", "pid": 13721, "tid": "456", - "ts": 390, "dur": 10, - "args": {"correlation": 40344, "external id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 0, "tid": "stream 7", - "ts": 430, "dur": 15, - "args": {"correlation": 40348, "external id": 4, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 405, "dur": 5, - "args": {"correlation": 40348, "external id": 4} - }] - """ - profile = parse_json_trace(json_content) - profile.process() - - self.assertTrue(profile.has_runtime) - self.assertTrue(profile.has_kernel) - self.assertTrue(profile.has_memcpy_or_memset) - step = profile.steps_costs[0] - self.assertEqual(step.costs[ProfileRole.Kernel], 15) - self.assertEqual(step.costs[ProfileRole.Memcpy], 10) - self.assertEqual(step.costs[ProfileRole.Memset], 5) - self.assertEqual(step.costs[ProfileRole.Runtime], 30) - self.assertEqual(step.costs[ProfileRole.DataLoader], 180) - self.assertEqual(step.costs[ProfileRole.CpuOp], 35) - self.assertEqual(step.costs[ProfileRole.Other], 125) - - self.assertEqual(len(profile.op_list_groupby_name), 2) - self.assertEqual(len(profile.op_list_groupby_name_input), 2) - - def test_op_list(op_list): - op_count = 0 - for op_agg in op_list: - if op_agg.name == 'aten::to': - op_count += 1 - self.assertEqual(op_agg.input_shape, - '[[2, 8, 5], [], [], [], [], [], [], []]') - self.assertEqual(op_agg.calls, 1) - self.assertEqual(op_agg.host_duration, 60) - self.assertEqual(op_agg.device_duration, 0) - self.assertEqual(op_agg.self_host_duration, 60) - self.assertEqual(op_agg.self_device_duration, 0) - if op_agg.name == 'aten::nll_loss_backward': - op_count += 1 - self.assertEqual(op_agg.input_shape, - '[[], [32, 1000], [32], [], [], [], []]') - self.assertEqual(op_agg.calls, 1) - self.assertEqual(op_agg.host_duration, 70) - self.assertEqual(op_agg.device_duration, 30) - self.assertEqual( - op_agg.self_host_duration, 70 - 20 - 10 - 5) - self.assertEqual(op_agg.self_device_duration, 30) - self.assertEqual(op_count, 2) - - test_op_list(profile.op_list_groupby_name) - test_op_list(profile.op_list_groupby_name_input) - - self.assertEqual(len(profile.kernel_list_groupby_name_op), 1) - self.assertEqual(profile.kernel_stat.shape[0], 1) - self.assertEqual(profile.kernel_list_groupby_name_op[0].name, - 'void cunn_ClassNLLCriterion_updateGradInput_kernel') - self.assertEqual( - profile.kernel_list_groupby_name_op[0].op_name, 'aten::nll_loss_backward') - self.assertEqual(profile.kernel_list_groupby_name_op[0].calls, 1) - self.assertEqual( - profile.kernel_list_groupby_name_op[0].total_duration, 15) - self.assertEqual( - profile.kernel_list_groupby_name_op[0].min_duration, 15) - self.assertEqual( - profile.kernel_list_groupby_name_op[0].max_duration, 15) - self.assertEqual(profile.kernel_stat.iloc[0]['count'], 1) - self.assertEqual(profile.kernel_stat.iloc[0]['sum'], 15) - self.assertEqual(profile.kernel_stat.iloc[0]['mean'], 15) - self.assertEqual(profile.kernel_stat.iloc[0]['min'], 15) - self.assertEqual(profile.kernel_stat.iloc[0]['max'], 15) - - # Test using external_id to build relationship between Operator and Runtime. - # Use external_id to build correlation with its father OperatorNode or ProfilerStepNode. - # Because in the case when RuntimeNode has duration 0 and starts at same time as a OperatorNode, - # just use interval containing relationship can't tell it is child or brother of the OperatorNode. - def test_external_id(self): - json_content = """ - [{ - "ph": "X", "cat": "Operator", - "name": "aten::mat_mul", "pid": 13721, "tid": "456", - "ts": 100, "dur": 100, - "args": {"Input Dims": [], "External id": 2} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 13721, "tid": "456", - "ts": 120, "dur": 70, - "args": {"Input Dims": [], "External id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 0, "tid": "stream 7", - "ts": 130, "dur": 5, - "args": {"correlation": 334, "external id": 4, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 120, "dur": 0, - "args": {"correlation": 334, "external id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 0, "tid": "stream 7", - "ts": 130, "dur": 6, - "args": {"correlation": 335, "external id": 2, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 120, "dur": 0, - "args": {"correlation": 335, "external id": 2} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 0, "tid": "stream 7", - "ts": 130, "dur": 7, - "args": {"correlation": 336, "external id": 4, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 190, "dur": 0, - "args": {"correlation": 336, "external id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 0, "tid": "stream 7", - "ts": 130, "dur": 8, - "args": {"correlation": 337, "external id": 2, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 190, "dur": 0, - "args": {"correlation": 337, "external id": 2} - }] - """ - profile = parse_json_trace(json_content) - profile.process() - - op_count = 0 - for op_agg in profile.op_list_groupby_name: - if op_agg.name == 'aten::mat_mul': - op_count += 1 - self.assertEqual(op_agg.device_duration, 5 + 6 + 7 + 8) - self.assertEqual(op_agg.self_device_duration, 6 + 8) - if op_agg.name == 'aten::mm': - op_count += 1 - self.assertEqual(op_agg.device_duration, 5 + 7) - self.assertEqual(op_agg.self_device_duration, 5 + 7) - self.assertEqual(op_count, 2) - - # Test operator's father-child relationship when they have same start time or end time. - def test_operator_relation(self): - # 2 events with same start time. - json_content = """ - [{ - "ph": "X", "cat": "Operator", - "name": "aten::mat_mul", "pid": 13721, "tid": "456", - "ts": 100, "dur": 100, - "args": {"Input Dims": [], "External id": 2} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 13721, "tid": "456", - "ts": 100, "dur": 70, - "args": {"Input Dims": [], "External id": 4} - }] - """ - profile = parse_json_trace(json_content) - profile.process() - op_count = 0 - for op_agg in profile.op_list_groupby_name: - if op_agg.name == 'aten::mat_mul': - op_count += 1 - self.assertEqual(op_agg.self_host_duration, 100 - 70) - if op_agg.name == 'aten::mm': - op_count += 1 - self.assertEqual(op_agg.self_host_duration, 70) - self.assertEqual(op_count, 2) - - # 2 events with same end time. - json_content = """ - [{ - "ph": "X", "cat": "Operator", - "name": "aten::mat_mul", "pid": 13721, "tid": "456", - "ts": 100, "dur": 100, - "args": {"Input Dims": [], "External id": 2} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 13721, "tid": "456", - "ts": 130, "dur": 70, - "args": {"Input Dims": [], "External id": 4} - }] - """ - profile = parse_json_trace(json_content) - profile.process() - op_count = 0 - for op_agg in profile.op_list_groupby_name: - if op_agg.name == 'aten::mat_mul': - op_count += 1 - self.assertEqual(op_agg.self_host_duration, 100 - 70) - if op_agg.name == 'aten::mm': - op_count += 1 - self.assertEqual(op_agg.self_host_duration, 70) - self.assertEqual(op_count, 2) - - # Test multiple father-child operators with same name. - # In this case, all the operators except the top operator should be removed, - # and all runtime/kernels belong to the children operators should be attached to the only kept one. - # This behavior is to keep consistent with _remove_dup_nodes in torch/autograd/profiler.py. - def test_remove_dup_nodes(self): - json_content = """[ - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 13721, "tid": "456", - "ts": 100, "dur": 100, - "args": {"Input Dims": [], "External id": 2} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 13721, "tid": "456", - "ts": 110, "dur": 80, - "args": {"Input Dims": [], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 13721, "tid": "456", - "ts": 120, "dur": 60, - "args": {"Input Dims": [], "External id": 4} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 130, "dur": 20, - "args": {"correlation": 335, "external id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void gemmSN_TN_kernel_64addr", "pid": 0, "tid": "stream 7", - "ts": 220, "dur": 8, - "args": {"correlation": 335, "external id": 4, "device": 0} - } - ] - """ - profile = parse_json_trace(json_content) - profile.process() - self.assertEqual(len(profile.op_list_groupby_name), 1) - self.assertEqual( - profile.op_list_groupby_name[0].self_device_duration, 8) - - # Test Runtime with 'external id' 0. - # This kind of Runtime should not be attached to any operator, - # and should be included in accumulating device time. - def test_top_level_runtime(self): - # This operator is different thread with the runtime. - json_content = """[ - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 13721, "tid": "123", - "ts": 100, "dur": 100, - "args": {"Input Dims": [], "External id": 2} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 130, "dur": 20, - "args": {"correlation": 335, "external id": 0} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void gemmSN_TN_kernel_64addr", "pid": 0, "tid": "stream 7", - "ts": 220, "dur": 8, - "args": {"correlation": 335, "external id": 0, "device": 0} - } - ] - """ - profile = parse_json_trace(json_content) - profile.process() - self.assertEqual(profile.op_list_groupby_name[0].device_duration, 0) - self.assertEqual( - profile.op_list_groupby_name[0].self_device_duration, 0) - self.assertEqual(profile.kernel_stat.iloc[0]['count'], 1) - - # Test Runtime directly called in ProfilerStep, not inside any operator. - def test_runtime_called_by_profilerstep(self): - json_content = """[ - { - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#1", "pid": 13721, "tid": "456", - "ts": 100, "dur": 300, - "args": {"Input Dims": [], "External id": 2} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 130, "dur": 20, - "args": {"correlation": 335, "external id": 2} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void gemmSN_TN_kernel_64addr", "pid": 0, "tid": "stream 7", - "ts": 220, "dur": 8, - "args": {"correlation": 335, "external id": 2, "device": 0} - } - ] - """ - profile = parse_json_trace(json_content) - profile.process() - step = profile.steps_costs[0] - self.assertEqual(step.costs[ProfileRole.Kernel], 8) - self.assertEqual(step.costs[ProfileRole.Runtime], 20) - self.assertEqual(step.costs[ProfileRole.CpuOp], 0) - self.assertEqual(step.costs[ProfileRole.Other], 300 - 8 - 20) - # ProfilerStep is not regarded as an operator. - self.assertEqual(len(profile.op_list_groupby_name), 0) - self.assertEqual(len(profile.op_list_groupby_name_input), 0) - self.assertEqual(profile.kernel_stat.iloc[0]['count'], 1) - self.assertEqual(len(profile.kernel_list_groupby_name_op), 1) - - # Test one Runtime lauch more than one Kernels. - # Sometimes such as running Bert using DataParallel mode(1 process, 2GPUs), - # one runtime such as cudaLaunchCooperativeKernelMultiDevice could trigger more than one kernel, - # each Kernel runs at a seperate GPU card. - def test_runtime_launch_multipe_kernels(self): - json_content = """[ - { - "ph": "X", "cat": "Operator", - "name": "Broadcast", "pid": 13721, "tid": "456", - "ts": 100, "dur": 300, - "args": {"Input Dims": [], "External id": 2} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchCooperativeKernelMultiDevice", "pid": 13721, "tid": "456", - "ts": 130, "dur": 20, - "args": {"correlation": 335, "external id": 2} - }, - { - "ph": "X", "cat": "Kernel", - "name": "ncclBroadcastRingLLKernel_copy_i8(ncclColl)", "pid": 0, "tid": "stream 13", - "ts": 160, "dur": 120318, - "args": {"device": 0, "context": 1, "stream": 13, - "correlation": 335, "external id": 2, "device": 0} - }, - { - "ph": "X", "cat": "Kernel", - "name": "ncclBroadcastRingLLKernel_copy_i8(ncclColl)", "pid": 0, "tid": "stream 22", - "ts": 170, "dur": 132800, - "args": {"device": 0, "context": 2, "stream": 22, - "correlation": 335, "external id": 2} - } - ] - """ - profile = parse_json_trace(json_content) - profile.process() - self.assertEqual( - profile.op_list_groupby_name[0].device_duration, 120318 + 132800) - self.assertEqual(profile.kernel_stat.iloc[0]['count'], 2) - self.assertEqual(len(profile.kernel_list_groupby_name_op), 1) - - # Test when there is no ProfilerStep#. - def test_no_profilerstep(self): - json_content = """[ - { - "ph": "X", "cat": "Operator", - "name": "aten::to", "pid": 13721, "tid": "123", - "ts": 100, "dur": 60, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::nll_loss_backward", "pid": 13721, "tid": "456", - "ts": 300, "dur": 70, - "args": {"Input Dims": [[], [32, 1000], [32], [], [], [], []], "External id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 0, "tid": "stream 7", - "ts": 320, "dur": 100, - "args": {"correlation": 40348, "external id": 4, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 310, "dur": 20, - "args": {"correlation": 40348, "external id": 4} - } - ] - """ - profile = parse_json_trace(json_content) - profile.process() - - self.assertTrue(profile.has_runtime) - self.assertTrue(profile.has_kernel) - self.assertTrue(not profile.has_memcpy_or_memset) - self.assertEqual(len(profile.steps_costs), 1) - step = profile.steps_costs[0] - - self.assertEqual(step.costs[ProfileRole.Kernel], 100) - self.assertEqual(step.costs[ProfileRole.Memcpy], 0) - self.assertEqual(step.costs[ProfileRole.Memset], 0) - self.assertEqual(step.costs[ProfileRole.Runtime], 320 - 310) - self.assertEqual(step.costs[ProfileRole.DataLoader], 0) - self.assertEqual(step.costs[ProfileRole.CpuOp], 60 + (310 - 300)) - # If no ProfilerStep, all events will be regarded as a step. - self.assertEqual(step.costs[ProfileRole.Other], 300 - (100 + 60)) - self.assertEqual(step.costs[ProfileRole.Total], (320 + 100) - 100) - self.assertEqual(len(profile.op_list_groupby_name), 2) - self.assertEqual(len(profile.op_list_groupby_name_input), 2) - self.assertEqual(profile.kernel_stat.iloc[0]['count'], 1) - self.assertEqual(len(profile.kernel_list_groupby_name_op), 1) - - def test_op_list(op_list): - op_count = 0 - for op_agg in op_list: - if op_agg.name == 'aten::to': - op_count += 1 - self.assertEqual(op_agg.input_shape, - '[[2, 8, 5], [], [], [], [], [], [], []]') - self.assertEqual(op_agg.calls, 1) - self.assertEqual(op_agg.host_duration, 60) - self.assertEqual(op_agg.device_duration, 0) - self.assertEqual(op_agg.self_host_duration, 60) - self.assertEqual(op_agg.self_device_duration, 0) - if op_agg.name == 'aten::nll_loss_backward': - op_count += 1 - self.assertEqual(op_agg.input_shape, - '[[], [32, 1000], [32], [], [], [], []]') - self.assertEqual(op_agg.calls, 1) - self.assertEqual(op_agg.host_duration, 70) - self.assertEqual(op_agg.device_duration, 100) - self.assertEqual(op_agg.self_host_duration, 70 - 20) - self.assertEqual(op_agg.self_device_duration, 100) - self.assertEqual(op_count, 2) - - test_op_list(profile.op_list_groupby_name) - test_op_list(profile.op_list_groupby_name_input) - - self.assertEqual(profile.kernel_list_groupby_name_op[0].name, - 'void cunn_ClassNLLCriterion_updateGradInput_kernel') - self.assertEqual( - profile.kernel_list_groupby_name_op[0].op_name, 'aten::nll_loss_backward') - self.assertEqual(profile.kernel_list_groupby_name_op[0].calls, 1) - self.assertEqual( - profile.kernel_list_groupby_name_op[0].total_duration, 100) - self.assertEqual( - profile.kernel_list_groupby_name_op[0].min_duration, 100) - self.assertEqual( - profile.kernel_list_groupby_name_op[0].max_duration, 100) - self.assertEqual(profile.kernel_stat.iloc[0]['count'], 1) - self.assertEqual(profile.kernel_stat.iloc[0]['sum'], 100) - self.assertEqual(profile.kernel_stat.iloc[0]['mean'], 100) - self.assertEqual(profile.kernel_stat.iloc[0]['min'], 100) - self.assertEqual(profile.kernel_stat.iloc[0]['max'], 100) - - # 2 steps without overlap with each other. - def test_multiple_profilersteps_no_overlap(self): - json_content = """ - [{ - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#1", "pid": 13721, "tid": "123", - "ts": 100, "dur": 200, - "args": {"Input Dims": [], "External id": 1} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::to", "pid": 13721, "tid": "123", - "ts": 200, "dur": 60, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 2} - }, - { - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#2", "pid": 13721, "tid": "123", - "ts": 350, "dur": 150, - "args": {"Input Dims": [], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 13721, "tid": "123", - "ts": 360, "dur": 50, - "args": {"Input Dims": [], "External id": 4} - }, - { - "ph": "X", "cat": "Memcpy", - "name": "Memcpy HtoD (Pageable -> Device)", "pid": 0, "tid": "stream 7", - "ts": 280, "dur": 40, - "args": {"stream": 7, "correlation": 334, "external id": 2} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaMemcpyAsync", "pid": 13721, "tid": "123", - "ts": 250, "dur": 5, - "args": {"correlation": 334, "external id": 2} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 0, "tid": "stream 7", - "ts": 410, "dur": 200, - "args": {"correlation": 40348, "external id": 4, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "123", - "ts": 400, "dur": 5, - "args": {"correlation": 40348, "external id": 4} - }] - """ - profile = parse_json_trace(json_content) - profile.process() - - self.assertTrue(profile.has_runtime) - self.assertTrue(profile.has_kernel) - self.assertTrue(profile.has_memcpy_or_memset) - self.assertEqual(len(profile.steps_costs), 2) - step = profile.steps_costs[0] - self.assertEqual(step.costs[ProfileRole.Kernel], 0) - self.assertEqual(step.costs[ProfileRole.Memcpy], 40) - self.assertEqual(step.costs[ProfileRole.Memset], 0) - self.assertEqual(step.costs[ProfileRole.Runtime], 5) - self.assertEqual(step.costs[ProfileRole.DataLoader], 0) - self.assertEqual(step.costs[ProfileRole.CpuOp], 60 - 5) - self.assertEqual(step.costs[ProfileRole.Other], 200 - 60 - 20) - # Device side takes effect. - self.assertEqual(step.costs[ProfileRole.Total], 320 - 100) - step = profile.steps_costs[1] - self.assertEqual(step.costs[ProfileRole.Kernel], 200) - self.assertEqual(step.costs[ProfileRole.Memcpy], 0) - self.assertEqual(step.costs[ProfileRole.Memset], 0) - self.assertEqual(step.costs[ProfileRole.Runtime], 5) - self.assertEqual(step.costs[ProfileRole.DataLoader], 0) - self.assertEqual(step.costs[ProfileRole.CpuOp], 50 - 5) - self.assertEqual(step.costs[ProfileRole.Other], 360 - 350) - # Device side takes effect. - self.assertEqual(step.costs[ProfileRole.Total], 610 - 350) - self.assertEqual( - profile.avg_costs.costs[ProfileRole.Total], ((320 - 100) + (610 - 350)) / 2) - - self.assertEqual(len(profile.op_list_groupby_name), 2) - self.assertEqual(len(profile.op_list_groupby_name_input), 2) - - def test_op_list(op_list): - op_count = 0 - for op_agg in op_list: - if op_agg.name == 'aten::to': - op_count += 1 - self.assertEqual(op_agg.input_shape, - '[[2, 8, 5], [], [], [], [], [], [], []]') - self.assertEqual(op_agg.calls, 1) - self.assertEqual(op_agg.host_duration, 60) - self.assertEqual(op_agg.device_duration, 40) - self.assertEqual(op_agg.self_host_duration, 60 - 5) - self.assertEqual(op_agg.self_device_duration, 40) - if op_agg.name == 'aten::mm': - op_count += 1 - self.assertEqual(op_agg.input_shape, '[]') - self.assertEqual(op_agg.calls, 1) - self.assertEqual(op_agg.host_duration, 50) - self.assertEqual(op_agg.device_duration, 200) - self.assertEqual(op_agg.self_host_duration, 50 - 5) - self.assertEqual(op_agg.self_device_duration, 200) - self.assertEqual(op_count, 2) - - test_op_list(profile.op_list_groupby_name) - test_op_list(profile.op_list_groupby_name_input) - - self.assertEqual(len(profile.kernel_list_groupby_name_op), 1) - self.assertEqual(profile.kernel_stat.shape[0], 1) - self.assertEqual(profile.kernel_list_groupby_name_op[0].name, - 'void cunn_ClassNLLCriterion_updateGradInput_kernel') - self.assertEqual( - profile.kernel_list_groupby_name_op[0].op_name, 'aten::mm') - self.assertEqual(profile.kernel_list_groupby_name_op[0].calls, 1) - self.assertEqual( - profile.kernel_list_groupby_name_op[0].total_duration, 200) - self.assertEqual( - profile.kernel_list_groupby_name_op[0].min_duration, 200) - self.assertEqual( - profile.kernel_list_groupby_name_op[0].max_duration, 200) - self.assertEqual(profile.kernel_stat.iloc[0]['count'], 1) - self.assertEqual(profile.kernel_stat.iloc[0]['sum'], 200) - self.assertEqual(profile.kernel_stat.iloc[0]['mean'], 200) - self.assertEqual(profile.kernel_stat.iloc[0]['min'], 200) - self.assertEqual(profile.kernel_stat.iloc[0]['max'], 200) - - # Test self time and total time on operator with nested operator. - def test_self_time(self): - json_content = """ - [{ - "ph": "X", "cat": "Operator", - "name": "aten::mat_mul", "pid": 13721, "tid": "456", - "ts": 100, "dur": 100, - "args": {"Input Dims": [], "External id": 2} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 13721, "tid": "456", - "ts": 120, "dur": 40, - "args": {"Input Dims": [], "External id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 0, "tid": "stream 7", - "ts": 155, "dur": 20, - "args": {"correlation": 334, "external id": 4, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 150, "dur": 10, - "args": {"correlation": 334, "external id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 0, "tid": "stream 7", - "ts": 210, "dur": 16, - "args": {"correlation": 335, "external id": 2, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 170, "dur": 25, - "args": {"correlation": 335, "external id": 2} - }] - """ - profile = parse_json_trace(json_content) - - op_count = 0 - for op_agg in profile.op_list_groupby_name: - if op_agg.name == 'aten::mat_mul': - op_count += 1 - self.assertEqual(op_agg.host_duration, 100) - self.assertEqual(op_agg.device_duration, 20 + 16) - self.assertEqual(op_agg.self_host_duration, 100 - 40 - 25) - self.assertEqual(op_agg.self_device_duration, 16) - if op_agg.name == 'aten::mm': - op_count += 1 - self.assertEqual(op_agg.host_duration, 40) - self.assertEqual(op_agg.device_duration, 20) - self.assertEqual(op_agg.self_host_duration, 30) - self.assertEqual(op_agg.self_device_duration, 20) - self.assertEqual(op_count, 2) - - # 2 steps with overlap with each other. - def test_multiple_profilersteps_with_overlap(self): - # The kernel with 'correlation' as 123 is launched by previous step, - # its end time is bigger than 'ProfilerStep#1''s start time, - # so it is regarded as beginning of 'ProfilerStep#1'. - # The memcpy with 'correlation' as 334 is launched by 'ProfilerStep#1', - # its end time is bigger than 'ProfilerStep#2''s start time, - # so it is regarded as beginning of 'ProfilerStep#2'. - json_content = """ - [{ - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#1", "pid": 13721, "tid": "123", - "ts": 100, "dur": 200, - "args": {"Input Dims": [], "External id": 1} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::to", "pid": 13721, "tid": "123", - "ts": 200, "dur": 60, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 2} - }, - { - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#2", "pid": 13721, "tid": "123", - "ts": 350, "dur": 150, - "args": {"Input Dims": [], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 13721, "tid": "123", - "ts": 360, "dur": 50, - "args": {"Input Dims": [], "External id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 0, "tid": "stream 7", - "ts": 150, "dur": 90, - "args": {"correlation": 123, "external id": 0, "device": 0} - }, - { - "ph": "X", "cat": "Memcpy", - "name": "Memcpy HtoD (Pageable -> Device)", "pid": 0, "tid": "stream 7", - "ts": 280, "dur": 100, - "args": {"stream": 7, "correlation": 334, "external id": 2} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaMemcpyAsync", "pid": 13721, "tid": "123", - "ts": 250, "dur": 5, - "args": {"correlation": 334, "external id": 2} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 0, "tid": "stream 7", - "ts": 410, "dur": 200, - "args": {"correlation": 40348, "external id": 4, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "123", - "ts": 400, "dur": 5, - "args": {"correlation": 40348, "external id": 4} - }] - """ - profile = parse_json_trace(json_content) - profile.process() - - self.assertTrue(profile.has_runtime) - self.assertTrue(profile.has_kernel) - self.assertTrue(profile.has_memcpy_or_memset) - self.assertEqual(len(profile.steps_costs), 2) - step = profile.steps_costs[0] - self.assertEqual(step.costs[ProfileRole.Kernel], 0) - self.assertEqual(step.costs[ProfileRole.Memcpy], 100) - self.assertEqual(step.costs[ProfileRole.Memset], 0) - self.assertEqual(step.costs[ProfileRole.Runtime], 5) - self.assertEqual(step.costs[ProfileRole.DataLoader], 0) - self.assertEqual(step.costs[ProfileRole.CpuOp], - (200 + 60) - (150 + 90) - 5) - self.assertEqual(step.costs[ProfileRole.Other], 280 - (200 + 60)) - # Device side takes effect. - self.assertEqual(step.costs[ProfileRole.Total], - (280 + 100) - (150 + 90)) - step = profile.steps_costs[1] - self.assertEqual(step.costs[ProfileRole.Kernel], 200) - self.assertEqual(step.costs[ProfileRole.Memcpy], 0) - self.assertEqual(step.costs[ProfileRole.Memset], 0) - self.assertEqual(step.costs[ProfileRole.Runtime], 5) - self.assertEqual(step.costs[ProfileRole.DataLoader], 0) - self.assertEqual(step.costs[ProfileRole.CpuOp], - (280 + 100) - 360 + (410 - 405)) - self.assertEqual(step.costs[ProfileRole.Other], 0) - # Device side takes effect. - self.assertEqual(step.costs[ProfileRole.Total], 610 - (280 + 100)) - - # Test whether step time is calculated correctly when the last 2 steps have no kernels launched. - def test_last_steps_no_kernel(self): - json_content = """ - [{ - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#1", "pid": 13721, "tid": "123", - "ts": 100, "dur": 200, - "args": {"Input Dims": [], "External id": 1} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::to", "pid": 13721, "tid": "123", - "ts": 120, "dur": 10, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 2} - }, - { - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#2", "pid": 13721, "tid": "123", - "ts": 300, "dur": 100, - "args": {"Input Dims": [], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#3", "pid": 13721, "tid": "123", - "ts": 400, "dur": 50, - "args": {"Input Dims": [], "External id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 0, "tid": "stream 7", - "ts": 90, "dur": 20, - "args": {"correlation": 123, "external id": 0, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaMemcpyAsync", "pid": 13721, "tid": "123", - "ts": 125, "dur": 5, - "args": {"correlation": 334, "external id": 2} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 0, "tid": "stream 7", - "ts": 150, "dur": 180, - "args": {"correlation": 334, "external id": 2, "device": 0} - }] - """ - profile = parse_json_trace(json_content) - profile.process() - - # The last 2 steps without kernels are removed from overall view. - self.assertEqual(len(profile.steps_costs), 1) - step = profile.steps_costs[0] - self.assertEqual( - step.costs[ProfileRole.Total], (150 + 180) - (90 + 20)) - - def test_pure_cpu(self): - json_content = """ - [{ - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#1", "pid": 13721, "tid": "123", - "ts": 100, "dur": 200, - "args": {"Input Dims": [], "External id": 1} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::to", "pid": 13721, "tid": "123", - "ts": 120, "dur": 10, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 2} - }, - { - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#2", "pid": 13721, "tid": "123", - "ts": 300, "dur": 100, - "args": {"Input Dims": [], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 13721, "tid": "123", - "ts": 350, "dur": 40, - "args": {"Input Dims": [], "External id": 4} - }] - """ - profile = parse_json_trace(json_content) - profile.process() - - self.assertEqual(len(profile.steps_costs), 2) - step = profile.steps_costs[0] - self.assertEqual(step.costs[ProfileRole.Kernel], 0) - self.assertEqual(step.costs[ProfileRole.Memcpy], 0) - self.assertEqual(step.costs[ProfileRole.Memset], 0) - self.assertEqual(step.costs[ProfileRole.Runtime], 0) - self.assertEqual(step.costs[ProfileRole.DataLoader], 0) - self.assertEqual(step.costs[ProfileRole.CpuOp], 10) - self.assertEqual(step.costs[ProfileRole.Other], 200 - 10) - self.assertEqual(step.costs[ProfileRole.Total], 200) - step = profile.steps_costs[1] - self.assertEqual(step.costs[ProfileRole.Kernel], 0) - self.assertEqual(step.costs[ProfileRole.Memcpy], 0) - self.assertEqual(step.costs[ProfileRole.Memset], 0) - self.assertEqual(step.costs[ProfileRole.Runtime], 0) - self.assertEqual(step.costs[ProfileRole.DataLoader], 0) - self.assertEqual(step.costs[ProfileRole.CpuOp], 40) - self.assertEqual(step.costs[ProfileRole.Other], 100 - 40) - self.assertEqual(step.costs[ProfileRole.Total], 100) - - # Test GPU utilization, est. SM efficiency, and occupancy. - def test_gpu_utilization(self): - json_content = """ - [{ - "ph": "X", "cat": "Operator", - "name": "aten::mat_mul", "pid": 13721, "tid": "456", - "ts": 100, "dur": 100, - "args": {"Input Dims": [], "External id": 2} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 13721, "tid": "456", - "ts": 120, "dur": 70, - "args": {"Input Dims": [], "External id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 1, "tid": "stream 7", - "ts": 130, "dur": 10, - "args": {"correlation": 334, "external id": 4, "device": 1, - "blocks per SM": 0.5, "est. achieved occupancy %": 0.6} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 120, "dur": 0, - "args": {"correlation": 334, "external id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void gemmSN_TN_kernel_64addr", "pid": 1, "tid": "stream 8", - "ts": 135, "dur": 15, - "args": {"correlation": 335, "external id": 2, "device": 1, - "blocks per SM": 0.6, "est. achieved occupancy %": 0.1} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void gemmSN_TN_kernel_64addr", "pid": 1, "tid": "stream 8", - "ts": 150, "dur": 0, - "args": {"correlation": 335, "external id": 2, "device": 1, - "blocks per SM": 0.3, "est. achieved occupancy %": 0.2} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 120, "dur": 0, - "args": {"correlation": 335, "external id": 2} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 1, "tid": "stream 7", - "ts": 145, "dur": 25, - "args": {"correlation": 336, "external id": 4, "device": 1, - "blocks per SM": 0.3, "est. achieved occupancy %": 1.0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 125, "dur": 3, - "args": {"correlation": 336, "external id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 1, "tid": "stream 7", - "ts": 200, "dur": 20, - "args": {"correlation": 337, "external id": 2, "device": 1, - "blocks per SM": 10.5, "est. achieved occupancy %": 0.3} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 195, "dur": 1, - "args": {"correlation": 337, "external id": 2} - }] - """ - profile = parse_json_trace(json_content) - profile.process() - - self.assertEqual(len(profile.gpu_metrics_parser.gpu_ids), 1) - self.assertAlmostEqual(profile.gpu_metrics_parser.gpu_utilization[1], (40 + 20) / 120) - self.assertAlmostEqual(profile.gpu_metrics_parser.avg_approximated_sm_efficiency_per_device[1], - (0.5 * (135 - 130) - + 1.0 * (140 - 135) - + 0.6 * (145 - 140) - + 0.9 * (150 - 145) - + 0.3 * (170 - 150) - + 1.0 * (220 - 200)) / (220 - 100)) - self.assertAlmostEqual(profile.gpu_metrics_parser.avg_occupancy_per_device[1], - (0.6 * 10 + 0.1 * 15 + 1.0 * 25 + 0.3 * 20) / (10 + 15 + 25 + 20)) - - gpu_util_expected = [(100, 0), (110, 0), (120, 0), (130, 1.0), (140, 1.0), (150, 1.0), (160, 1.0), - (170, 0), (180, 0), (190, 0), (200, 1.0), (210, 1.0), (220, 0)] - for gpu_id in profile.gpu_metrics_parser.gpu_ids: - buckets = profile.gpu_metrics_parser.gpu_util_buckets[gpu_id] - gpu_util_id = 0 - for b in buckets: - self.assertEqual(b[0], gpu_util_expected[gpu_util_id][0]) - self.assertAlmostEqual(b[1], gpu_util_expected[gpu_util_id][1]) - gpu_util_id += 1 - self.assertEqual(gpu_util_id, len(gpu_util_expected)) - - sm_efficiency_expected = [(130, 0.5), (135, 0), (135, 1.0), (140, 0), (140, 0.6), (145, 0), (145, 0.9), - (150, 0), (150, 0.3), (170, 0), (170, 0), (200, 0), (200, 1.0), (220, 0)] - for gpu_id in profile.gpu_metrics_parser.gpu_ids: - ranges = profile.gpu_metrics_parser.approximated_sm_efficiency_ranges[gpu_id] - sm_efficiency_id = 0 - for r in ranges: - self.assertEqual( - r[0], sm_efficiency_expected[sm_efficiency_id][0]) - self.assertAlmostEqual( - r[2], sm_efficiency_expected[sm_efficiency_id][1]) - sm_efficiency_id += 1 - self.assertEqual( - r[1], sm_efficiency_expected[sm_efficiency_id][0]) - self.assertAlmostEqual( - 0, sm_efficiency_expected[sm_efficiency_id][1]) - sm_efficiency_id += 1 - self.assertEqual(sm_efficiency_id, len(sm_efficiency_expected)) - - count = 0 - for agg_by_op in profile.kernel_list_groupby_name_op: - if agg_by_op.name == 'void gemmSN_TN_kernel_64addr' and agg_by_op.op_name == 'aten::mat_mul': - self.assertAlmostEqual(agg_by_op.avg_blocks_per_sm, 0.6) - self.assertAlmostEqual(agg_by_op.avg_occupancy, 0.1) - count += 1 - if agg_by_op.name == 'void cunn_ClassNLLCriterion_updateGradInput_kernel' and \ - agg_by_op.op_name == 'aten::mm': - self.assertAlmostEqual( - agg_by_op.avg_blocks_per_sm, (0.5 * 10 + 0.3 * 25) / (10 + 25)) - self.assertAlmostEqual( - agg_by_op.avg_occupancy, (0.6 * 10 + 1.0 * 25) / (10 + 25)) - count += 1 - if agg_by_op.name == 'void cunn_ClassNLLCriterion_updateGradInput_kernel' and \ - agg_by_op.op_name == 'aten::mat_mul': - self.assertAlmostEqual(agg_by_op.avg_blocks_per_sm, 10.5) - self.assertAlmostEqual(agg_by_op.avg_occupancy, 0.3) - count += 1 - self.assertEqual(count, 3) - - count = 0 - for _id, (name, row) in enumerate(profile.kernel_stat.iterrows()): - # The kernel with zero 'dur' should be ignored. - if name == 'void gemmSN_TN_kernel_64addr': - self.assertAlmostEqual(row['blocks_per_sm'], 0.6) - self.assertAlmostEqual(row['occupancy'], 0.1) - count += 1 - if name == 'void cunn_ClassNLLCriterion_updateGradInput_kernel': - self.assertAlmostEqual( - row['blocks_per_sm'], (0.5 * 10 + 0.3 * 25 + 10.5 * 20) / (10 + 25 + 20)) - self.assertAlmostEqual( - row['occupancy'], (0.6 * 10 + 1.0 * 25 + 0.3 * 20) / (10 + 25 + 20)) - count += 1 - self.assertEqual(count, 2) - - # Test GPU utilization 3 metrics works fine if kernel out of ProfilerStep. - def test_gpu_utilization_kernel_out_of_step(self): - json_content = """ - [{ - "ph": "X", "cat": "Operator", - "name": "aten::mat_mul", "pid": 13721, "tid": "456", - "ts": 10, "dur": 10, - "args": {"Input Dims": [], "External id": 1} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 13721, "tid": "456", - "ts": 120, "dur": 70, - "args": {"Input Dims": [], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::mm", "pid": 13721, "tid": "456", - "ts": 220, "dur": 20, - "args": {"Input Dims": [], "External id": 4} - }, - { - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#2", "pid": 13721, "tid": "456", - "ts": 100, "dur": 100, - "args": {"Input Dims": [], "External id": 2} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 1, "tid": "stream 7", - "ts": 60, "dur": 20, - "args": {"correlation": 334, "external id": 1, "device": 1, - "blocks per SM": 0.5, "est. achieved occupancy %": 0.6} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 15, "dur": 5, - "args": {"correlation": 334, "external id": 1} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 1, "tid": "stream 7", - "ts": 240, "dur": 25, - "args": {"correlation": 337, "external id": 4, "device": 1, - "blocks per SM": 10.5, "est. achieved occupancy %": 0.3} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 230, "dur": 10, - "args": {"correlation": 337, "external id": 4} - }] - """ - profile = parse_json_trace(json_content) - profile.process() - - self.assertEqual(len(profile.gpu_metrics_parser.gpu_ids), 1) - self.assertAlmostEqual(profile.gpu_metrics_parser.gpu_utilization[1], 0.0) - self.assertTrue(profile.gpu_metrics_parser.avg_approximated_sm_efficiency_per_device[1] is None) - self.assertTrue(profile.gpu_metrics_parser.avg_occupancy_per_device[1] is None) - self.assertTrue(profile.gpu_metrics_parser.blocks_per_sm_count[1] > 0) - self.assertTrue(profile.gpu_metrics_parser.occupancy_count[1] > 0) - - count = 0 - for agg_by_op in profile.kernel_list_groupby_name_op: - if agg_by_op.name == 'void cunn_ClassNLLCriterion_updateGradInput_kernel' \ - and agg_by_op.op_name == 'aten::mat_mul': - self.assertAlmostEqual(agg_by_op.avg_blocks_per_sm, 0.5) - self.assertAlmostEqual(agg_by_op.avg_occupancy, 0.6) - count += 1 - if agg_by_op.name == 'void cunn_ClassNLLCriterion_updateGradInput_kernel' and \ - agg_by_op.op_name == 'aten::mm': - self.assertAlmostEqual( - agg_by_op.avg_blocks_per_sm, 10.5) - self.assertAlmostEqual( - agg_by_op.avg_occupancy, 0.3) - count += 1 - self.assertEqual(count, 2) - - count = 0 - for _id, (name, row) in enumerate(profile.kernel_stat.iterrows()): - # The kernel with zero 'dur' should be ignored. - if name == 'void cunn_ClassNLLCriterion_updateGradInput_kernel': - self.assertAlmostEqual(row['blocks_per_sm'], (20 * 0.5 + 25 * 10.5) / (20 + 25)) - self.assertAlmostEqual(row['occupancy'], (20 * 0.6 + 25 * 0.3) / (20 + 25)) - count += 1 - self.assertEqual(count, 1) - - def test_dump_gpu_metrics(self): - profile = RunProfile('test_dump_gpu_metrics', None) - # Faked data for easy to see in UI. Real data values are 1/100 of these. - gpu_util_buckets = [[(1621401187223005, 0.0), (1621401187224005, 0.0), - (1621401187225005, 0.6), (1621401187226005, 0.5), - (1621401187227005, 0.6), (1621401187228005, 0.2), - (1621401187229005, 0.6), (1621401187230005, 0.1), - (1621401187231005, 0.5), (1621401187232005, 0.2), - (1621401187233005, 0.3), (1621401187234005, 0.4), - (1621401187235005, 0.4219409282700422), - (1621401187236901, 0)]] - # Faked data for easy to see in UI. Real data values are 1/10 of these. - approximated_sm_efficiency_ranges = \ - [[(1621401187225275, 1621401187225278, 0.25), (1621401187225530, 1621401187225532, 0.125), - (1621401187225820, 1621401187225821, 0.125), (1621401187226325, 1621401187226327, 0.25), - (1621401187226575, 1621401187226577, 0.125), (1621401187226912, 1621401187226913, 0.125), - (1621401187227092, 1621401187227094, 0.125), (1621401187227619, 1621401187227620, 0.125), - (1621401187227745, 1621401187227746, 0.125), (1621401187227859, 1621401187227860, 0.125), - (1621401187227973, 1621401187227974, 0.125), (1621401187228279, 1621401187228280, 0.125), - (1621401187228962, 1621401187228963, 0.125), (1621401187229153, 1621401187229155, 0.125), - (1621401187229711, 1621401187229715, 0.125), (1621401187230162, 1621401187230163, 0.125), - (1621401187231100, 1621401187231103, 0.125), (1621401187231692, 1621401187231694, 0.5), - (1621401187232603, 1621401187232604, 0.125), (1621401187232921, 1621401187232922, 0.125), - (1621401187233342, 1621401187233343, 0.125), (1621401187233770, 1621401187233772, 0.125), - (1621401187234156, 1621401187234159, 0.125), (1621401187234445, 1621401187234446, 0.125), - (1621401187235025, 1621401187235028, 0.125), (1621401187235555, 1621401187235556, 0.125), - (1621401187236158, 1621401187236159, 0.125), (1621401187236278, 1621401187236279, 0.125), - (1621401187236390, 1621401187236391, 0.125), (1621401187236501, 1621401187236502, 0.125)]] - - basedir = os.path.dirname(os.path.realpath(__file__)) - trace_json_flat_path = os.path.join(basedir, 'gpu_metrics_input.json') - gpu_metrics_parser = GPUMetricsParser() - gpu_metrics_parser.gpu_util_buckets = gpu_util_buckets - gpu_metrics_parser.approximated_sm_efficiency_ranges = approximated_sm_efficiency_ranges - profile.gpu_metrics = gpu_metrics_parser.get_gpu_metrics() - with open(trace_json_flat_path, 'rb') as file: - raw_data = file.read() - data_with_gpu_metrics_compressed = profile.append_gpu_metrics(raw_data) - data_with_gpu_metrics_flat = gzip.decompress( - data_with_gpu_metrics_compressed) - - trace_json_expected_path = os.path.join(basedir, 'gpu_metrics_expected.json') - with open(trace_json_expected_path, 'rb') as file: - data_expected = file.read() - - # Parse to json in order to ignore text format difference. - data_with_gpu_metrics_json = json.loads( - data_with_gpu_metrics_flat.decode('utf8')) - data_expected_json = json.loads(data_expected.decode('utf8')) - data_with_gpu_metrics_str = json.dumps( - data_with_gpu_metrics_json, sort_keys=True) - data_expected_str = json.dumps(data_expected_json, sort_keys=True) - - self.assertEqual(data_with_gpu_metrics_str, data_expected_str) - - try: - _ = json.loads(data_with_gpu_metrics_flat.decode('utf8')) - except Exception: - self.assertTrue( - False, 'The string fails to be parsed by json after appending gpu metrics.') - - def test_memory_view(self): - json_content = """[ - { - "ph": "X", "cat": "Operator", - "name": "aten::to", "pid": 13721, "tid": "123", - "ts": 10, "dur": 10, - "args": {"Input Dims": [], "External id": 2} - }, - { - "ph": "X", "cat": "Operator", - "name": "enumerate(DataLoader)#_SingleProcessDataLoaderIter.__next__", "pid": 13721, "tid": "123", - "ts": 100, "dur": 180, - "args": {"Input Dims": [], "External id": 2} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::to", "pid": 13721, "tid": "123", - "ts": 200, "dur": 60, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::nll_loss_backward", "pid": 13721, "tid": "123", - "ts": 340, "dur": 70, - "args": {"Input Dims": [[], [32, 1000], [32], [], [], [], []], "External id": 4} - }, - { - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#1", "pid": 13721, "tid": "123", - "ts": 50, "dur": 400, - "args": {"Input Dims": [], "External id": 1} - }, - { - "ph": "X", "cat": "Operator", - "name": "ProfilerStep#2", "pid": 13721, "tid": "123", - "ts": 500, "dur": 500, - "args": {"Input Dims": [], "External id": 1} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::to", "pid": 13721, "tid": "123", - "ts": 510, "dur": 150, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::copy_", "pid": 13721, "tid": "123", - "ts": 520, "dur": 100, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 3} - }, - - { - "ph": "X", "cat": "Operator", - "name": "aten::liner", "pid": 13721, "tid": "123", - "ts": 700, "dur": 100, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::t", "pid": 13721, "tid": "123", - "ts": 705, "dur": 40, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::transpose", "pid": 13721, "tid": "123", - "ts": 710, "dur": 30, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::tranas_stride", "pid": 13721, "tid": "123", - "ts": 720, "dur": 10, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::addmm", "pid": 13721, "tid": "123", - "ts": 750, "dur": 40, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::to", "pid": 13721, "tid": "123", - "ts": 900, "dur": 100, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 3} - }, - { - "ph": "X", "cat": "Memcpy", - "name": "Memcpy HtoD (Pageable -> Device)", "pid": 0, "tid": "stream 7", - "ts": 405, "dur": 10, - "args": {"stream": 7, "correlation": 334, "external id": 4} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaMemcpyAsync", "pid": 13721, "tid": "456", - "ts": 360, "dur": 20, - "args": {"correlation": 334, "external id": 4} - }, - { - "ph": "X", "cat": "Memset", - "name": "Memset (Device)", "pid": 0, "tid": "stream 7", - "ts": 420, "dur": 5, - "args": {"stream": 7, "correlation": 40344, "external id": 4} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaMemsetAsync", "pid": 13721, "tid": "456", - "ts": 390, "dur": 10, - "args": {"correlation": 40344, "external id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void cunn_ClassNLLCriterion_updateGradInput_kernel", "pid": 0, "tid": "stream 7", - "ts": 430, "dur": 15, - "args": {"correlation": 40348, "external id": 4, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 405, "dur": 5, - "args": {"correlation": 40348, "external id": 4} - }, - - - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 90, - "args": { - "Device Type": 0, "Device Id": -1, "Addr": 90, "Bytes": 4 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 150, - "args": { - "Device Type": 0, "Device Id": -1, "Addr": 150, "Bytes": 4 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 200, - "args": { - "Device Type": 0, "Device Id": -1, "Addr": 200, "Bytes": 4 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 210, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 210, "Bytes": 4 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 265, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 265, "Bytes": 4 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 300, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 300, "Bytes": 4 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 350, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 350, "Bytes": 10 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 360, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 350, "Bytes": -10 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 450, - "args": { - "Device Type": 0, "Device Id": -1, "Addr": 450, "Bytes": 1000000 - } - }, - - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 515, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 515, "Bytes": 100 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 520, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 520, "Bytes": 100 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 600, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 520, "Bytes": -100 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 690, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 690, "Bytes": 100 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 701, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 701, "Bytes": 100 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 796, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 515, "Bytes": -100 - } - }, - - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 708, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 708, "Bytes": 100 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 742, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 708, "Bytes": -100 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 715, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 715, "Bytes": 50 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 735, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 715, "Bytes": -50 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 725, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 725, "Bytes": 50 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 728, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 725, "Bytes": -50 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 729, - "args": { - "Device Type": 0, "Device Id": -1, "Addr": 729, "Bytes": 50 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 746, - "args": { - "Device Type": 0, "Device Id": -1, "Addr": 746, "Bytes": 100 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 747, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 747, "Bytes": 20 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 749, - "args": { - "Device Type": 0, "Device Id": -1, "Addr": 690, "Bytes": -100 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 760, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 760, "Bytes": 30 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 780, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 760, "Bytes": -30 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 795, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 795, "Bytes": 10 - } - }, - { - "ph": "i", "s": "t", "name": "[memory]", - "pid": 13721, "tid": 123, - "ts": 799, - "args": { - "Device Type": 1, "Device Id": 0, "Addr": 795, "Bytes": -10 - } - } - ] - """ - import logging - - from torch_tb_profiler.utils import get_logger - logger = get_logger() - logger.addHandler(logging.StreamHandler()) - - profile = parse_json_trace(json_content) - profile.process() - memory_stats = profile.memory_snapshot.get_memory_statistics(profile.tid2tree) - - self.assertEqual(len(memory_stats), 2) - self.assertIn('GPU0', memory_stats) - - # validation - gpu_expected_data = { - # self increase size, self allocation size, self allocation count, increase size, allocation size, allocation count, call # noqa: E501 - 'aten::to': [104, 104, 2, 104, 204, 3, 4], - 'aten::nll_loss_backward': [0, 10, 1, 0, 10, 1, 1], - 'aten::copy_': [0, 100, 1, 0, 100, 1, 1], - 'aten::addmm': [0, 30, 1, 0, 30, 1, 1], - 'aten::tranas_stride': [0, 50, 1, 0, 50, 1, 1], - 'aten::transpose': [0, 50, 1, 0, 100, 2, 1], - 'aten::t': [0, 100, 1, 0, 200, 3, 1], - 'aten::liner': [20, 130, 3, 20, 360, 7, 1] - } - - cpu_expected_data = { - 'aten::to': [4, 4, 1, 4, 4, 1, 4], - 'aten::liner': [0, 100, 1, 50, 150, 2, 1], - 'aten::tranas_stride': [50, 50, 1, 50, 50, 1, 1], - 'aten::transpose': [0, 0, 0, 50, 50, 1, 1], - 'aten::t': [0, 0, 0, 50, 50, 1, 1] - } - - validate_data = [ - (memory_stats['CPU'], cpu_expected_data), - (memory_stats['GPU0'], gpu_expected_data) - ] - for (mem_stat, expected_data) in validate_data: - for name, values in expected_data.items(): - self.assertEqual(mem_stat[name], values) - - # Test group by 'kernel detail + op name'. - def test_group_by_kernel_columns(self): - json_content = """[ - { - "ph": "X", "cat": "Operator", - "name": "op1", "pid": 13721, "tid": "123", - "ts": 200, "dur": 60, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "op2", "pid": 13721, "tid": "456", - "ts": 340, "dur": 70, - "args": {"Input Dims": [[], [32, 1000], [32], [], [], [], []], "External id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "kernel1", "pid": 0, "tid": "stream 7", - "ts": 230, "dur": 15, - "args": {"correlation": 1000, "external id": 3, "device": 0, - "grid": [16, 1, 1], "block": [16, 16, 16], "registers per thread": 18, "shared memory": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 210, "dur": 5, - "args": {"correlation": 1000, "external id": 3} - }, - { - "ph": "X", "cat": "Kernel", - "name": "kernel1", "pid": 0, "tid": "stream 7", - "ts": 250, "dur": 10, - "args": {"correlation": 1001, "external id": 3, "device": 0, - "grid": [16, 1, 1], "block": [16, 16, 16], "registers per thread": 18, "shared memory": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 215, "dur": 5, - "args": {"correlation": 1001, "external id": 3} - }, - { - "ph": "X", "cat": "Kernel", - "name": "kernel1", "pid": 0, "tid": "stream 7", - "ts": 250, "dur": 13, - "args": {"correlation": 1002, "external id": 3, "device": 0, - "grid": [16, 1, 1], "block": [16, 16, 64], "registers per thread": 18, "shared memory": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 220, "dur": 5, - "args": {"correlation": 1002, "external id": 3} - }, - { - "ph": "X", "cat": "Kernel", - "name": "kernel1", "pid": 0, "tid": "stream 7", - "ts": 250, "dur": 17, - "args": {"correlation": 1003, "external id": 4, "device": 0, - "grid": [16, 1, 1], "block": [16, 16, 64], "registers per thread": 18, "shared memory": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 350, "dur": 5, - "args": {"correlation": 1003, "external id": 4} - } - ] - """ - profile = parse_json_trace(json_content) - profile.process() - expected_agg_kernels = [ - { - 'name': 'kernel1', - 'op_name': 'op1', - 'grid': '[16, 1, 1]', - 'block': '[16, 16, 16]', - 'registers per thread': 18, - 'shared memory': 0, - 'calls': 2, - 'total_duration': 15 + 10, - 'avg_duration': (15 + 10) / 2, - 'min_duration': min(15, 10), - 'max_duration': max(15, 10) - }, - { - 'name': 'kernel1', - 'op_name': 'op1', - 'grid': '[16, 1, 1]', - 'block': '[16, 16, 64]', # Only changed this. - 'registers per thread': 18, - 'shared memory': 0, - 'calls': 1, - 'total_duration': 13, - 'avg_duration': 13, - 'min_duration': 13, - 'max_duration': 13 - }, - { - 'name': 'kernel1', - 'op_name': 'op2', # Only changed this. - 'grid': '[16, 1, 1]', - 'block': '[16, 16, 64]', - 'registers per thread': 18, - 'shared memory': 0, - 'calls': 1, - 'total_duration': 17, - 'avg_duration': 17, - 'min_duration': 17, - 'max_duration': 17 - } - ] - index = 0 - self.assertEqual(len(profile.kernel_list_groupby_name_op), len(expected_agg_kernels)) - for agg_kernel in profile.kernel_list_groupby_name_op: - expected_agg_kernel = expected_agg_kernels[index] - self.assertEqual(agg_kernel.name, expected_agg_kernel['name']) - self.assertEqual(agg_kernel.op_name, expected_agg_kernel['op_name']) - self.assertEqual(str(agg_kernel.grid), expected_agg_kernel['grid']) - self.assertEqual(str(agg_kernel.block), expected_agg_kernel['block']) - self.assertEqual(agg_kernel.regs_per_thread, expected_agg_kernel['registers per thread']) - self.assertEqual(agg_kernel.shared_memory, expected_agg_kernel['shared memory']) - self.assertEqual(agg_kernel.calls, expected_agg_kernel['calls']) - self.assertEqual(agg_kernel.total_duration, expected_agg_kernel['total_duration']) - self.assertAlmostEqual(agg_kernel.avg_duration, expected_agg_kernel['avg_duration']) - self.assertEqual(agg_kernel.min_duration, expected_agg_kernel['min_duration']) - self.assertEqual(agg_kernel.max_duration, expected_agg_kernel['max_duration']) - index += 1 - - # Test group by 'kernel detail + op name' with invalid input lack of some kernel field - def test_group_by_kernel_columns_invalid_input(self): - json_content = """[ - { - "ph": "X", "cat": "Operator", - "name": "op1", "pid": 13721, "tid": "123", - "ts": 200, "dur": 60, - "args": {"Input Dims": [[2, 8, 5], [], [], [], [], [], [], []], "External id": 3} - }, - { - "ph": "X", "cat": "Kernel", - "name": "kernel1", "pid": 0, "tid": "stream 7", - "ts": 220, "dur": 1, - "args": {"correlation": 1000, "external id": 3, "device": 0, - "block": [16, 16, 16], "registers per thread": 18, "shared memory": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 210, "dur": 5, - "args": {"correlation": 1000, "external id": 3} - }, - { - "ph": "X", "cat": "Kernel", - "name": "kernel1", "pid": 0, "tid": "stream 7", - "ts": 230, "dur": 2, - "args": {"correlation": 1001, "external id": 3, "device": 0, - "grid": [16, 1, 1], "registers per thread": 18, "shared memory": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 220, "dur": 5, - "args": {"correlation": 1001, "external id": 3} - }, - { - "ph": "X", "cat": "Kernel", - "name": "kernel1", "pid": 0, "tid": "stream 7", - "ts": 240, "dur": 3, - "args": {"correlation": 1002, "external id": 3, "device": 0, - "grid": [16, 1, 1], "block": [16, 16, 16], "shared memory": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 230, "dur": 5, - "args": {"correlation": 1002, "external id": 3} - }, - { - "ph": "X", "cat": "Kernel", - "name": "kernel1", "pid": 0, "tid": "stream 7", - "ts": 250, "dur": 4, - "args": {"correlation": 1003, "external id": 3, "device": 0, - "grid": [16, 1, 1], "block": [16, 16, 16], "registers per thread": 18} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 240, "dur": 5, - "args": {"correlation": 1003, "external id": 3} - }, - { - "ph": "X", "cat": "Kernel", - "name": "kernel1", "pid": 0, "tid": "stream 7", - "ts": 260, "dur": 5, - "args": {"correlation": 1004, "external id": 3, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "456", - "ts": 250, "dur": 5, - "args": {"correlation": 1004, "external id": 3} - } - ] - """ - profile = parse_json_trace(json_content) - profile.process() - expected_agg_kernels = [ - { - 'name': 'kernel1', - 'op_name': 'op1', - 'grid': None, - 'block': [16, 16, 16], - 'registers per thread': 18, - 'shared memory': 0, - 'calls': 1, - 'total_duration': 1, - 'avg_duration': 1, - 'min_duration': 1, - 'max_duration': 1 - }, - { - 'name': 'kernel1', - 'op_name': 'op1', - 'grid': [16, 1, 1], - 'block': None, - 'registers per thread': 18, - 'shared memory': 0, - 'calls': 1, - 'total_duration': 2, - 'avg_duration': 2, - 'min_duration': 2, - 'max_duration': 2 - }, - { - 'name': 'kernel1', - 'op_name': 'op1', - 'grid': [16, 1, 1], - 'block': [16, 16, 16], - 'registers per thread': None, - 'shared memory': 0, - 'calls': 1, - 'total_duration': 3, - 'avg_duration': 3, - 'min_duration': 3, - 'max_duration': 3 - }, - { - 'name': 'kernel1', - 'op_name': 'op1', - 'grid': [16, 1, 1], - 'block': [16, 16, 16], - 'registers per thread': 18, - 'shared memory': None, - 'calls': 1, - 'total_duration': 4, - 'avg_duration': 4, - 'min_duration': 4, - 'max_duration': 4 - }, - { - 'name': 'kernel1', - 'op_name': 'op1', - 'grid': None, - 'block': None, - 'registers per thread': None, - 'shared memory': None, - 'calls': 1, - 'total_duration': 5, - 'avg_duration': 5, - 'min_duration': 5, - 'max_duration': 5 - } - ] - index = 0 - self.assertEqual(len(profile.kernel_list_groupby_name_op), len(expected_agg_kernels)) - for agg_kernel in profile.kernel_list_groupby_name_op: - expected_agg_kernel = expected_agg_kernels[index] - self.assertEqual(agg_kernel.name, expected_agg_kernel['name']) - self.assertEqual(agg_kernel.op_name, expected_agg_kernel['op_name']) - self.assertEqual(agg_kernel.grid, expected_agg_kernel['grid']) - self.assertEqual(agg_kernel.block, expected_agg_kernel['block']) - self.assertEqual(agg_kernel.regs_per_thread, expected_agg_kernel['registers per thread']) - print(agg_kernel.name, agg_kernel.grid, agg_kernel.block, agg_kernel.shared_memory) - self.assertEqual(agg_kernel.shared_memory, expected_agg_kernel['shared memory']) - self.assertEqual(agg_kernel.calls, expected_agg_kernel['calls']) - self.assertEqual(agg_kernel.total_duration, expected_agg_kernel['total_duration']) - self.assertAlmostEqual(agg_kernel.avg_duration, expected_agg_kernel['avg_duration']) - self.assertEqual(agg_kernel.min_duration, expected_agg_kernel['min_duration']) - self.assertEqual(agg_kernel.max_duration, expected_agg_kernel['max_duration']) - index += 1 - - # Test tensor core related feature. - def test_tensor_core(self): - json_content = """[ - { - "ph": "X", "cat": "Operator", - "name": "aten::conv2d", "pid": 13721, "tid": "123", - "ts": 200, "dur": 100, - "args": {"Input Dims": [[]], "External id": 3} - }, - { - "ph": "X", "cat": "Operator", - "name": "op_no_tc", "pid": 13721, "tid": "123", - "ts": 205, "dur": 10, - "args": {"Input Dims": [[]], "External id": 4} - }, - { - "ph": "X", "cat": "Operator", - "name": "aten::cudnn_convolution", "pid": 13721, "tid": "123", - "ts": 215, "dur": 10, - "args": {"Input Dims": [[]], "External id": 5} - }, - { - "ph": "X", "cat": "Kernel", - "name": "kernel_no_tc", "pid": 0, "tid": "stream 7", - "ts": 210, "dur": 10, - "args": {"correlation": 1000, "external id": 4, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "123", - "ts": 205, "dur": 5, - "args": {"correlation": 1000, "external id": 4} - }, - { - "ph": "X", "cat": "Kernel", - "name": "volta_fp16_s884cudnn_fp16_128x128_ldg8_splitK_relu_f2f_exp_small_nhwc_tn_v1", - "pid": 0, "tid": "stream 7", - "ts": 220, "dur": 15, - "args": {"correlation": 1001, "external id": 5, "device": 0} - }, - { - "ph": "X", "cat": "Runtime", - "name": "cudaLaunchKernel", "pid": 13721, "tid": "123", - "ts": 215, "dur": 5, - "args": {"correlation": 1001, "external id": 5} - } - ] - """ - profile = parse_json_trace(json_content) - profile.process() - - expected_agg_ops = { - 'aten::conv2d': { - 'tc_eligible': True, - 'tc_self_ratio': 0, - 'tc_total_ratio': 15 / (15 + 10) - }, - 'op_no_tc': { - 'tc_eligible': False, - 'tc_self_ratio': 0, - 'tc_total_ratio': 0 - }, - 'aten::cudnn_convolution': { - 'tc_eligible': True, - 'tc_self_ratio': 1.0, - 'tc_total_ratio': 1.0 - } - } - self.assertEqual(len(profile.op_list_groupby_name), len(expected_agg_ops)) - for agg_op in profile.op_list_groupby_name: - expected_agg_op = expected_agg_ops[agg_op.name] - self.assertEqual(agg_op.tc_eligible, expected_agg_op['tc_eligible']) - self.assertAlmostEqual(agg_op.tc_self_ratio, expected_agg_op['tc_self_ratio']) - self.assertAlmostEqual(agg_op.tc_total_ratio, expected_agg_op['tc_total_ratio']) - - expected_kernels_groupby_op = { - 'kernel_no_tc': { - 'op_name': 'op_no_tc', - 'tc_used': False, - 'op_tc_eligible': False - }, - 'volta_fp16_s884cudnn_fp16_128x128_ldg8_splitK_relu_f2f_exp_small_nhwc_tn_v1': { - 'op_name': 'aten::cudnn_convolution', - 'tc_used': True, - 'op_tc_eligible': True - } - } - self.assertEqual(len(profile.kernel_list_groupby_name_op), len(expected_kernels_groupby_op)) - for agg_kernel in profile.kernel_list_groupby_name_op: - expected_agg_kernel = expected_kernels_groupby_op[agg_kernel.name] - self.assertEqual(agg_kernel.op_name, expected_agg_kernel['op_name']) - self.assertEqual(agg_kernel.tc_used, expected_agg_kernel['tc_used']) - self.assertEqual(agg_kernel.op_tc_eligible, expected_agg_kernel['op_tc_eligible']) - - self.assertAlmostEqual(profile.tc_ratio[0], 15 / (15 + 10)) - self.assertAlmostEqual(profile.tc_eligible_ops_kernel_ratio, 15 / (15 + 10)) - - -class TestDistributed(unittest.TestCase): - - def test_distributed_nccl(self): - json_content0 = """[ - { - "ph": "X", "cat": "cpu_op", - "name": "nccl:broadcast", "pid": 23803, "tid": "23803", - "ts": 0, "dur": 75, - "args": {"External id": 146, "Input Dims": [[53120]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "Kernel", - "name": "ncclKernel_Broadcast_RING_LL_Sum_int8_t(ncclWorkElem)", "pid": 0, "tid": "stream 16", - "ts": 16, "dur": 16, - "args": {"device": 0, "correlation": 28506, "external id": 146} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "aten::add_", "pid": 23803, "tid": "23803", - "ts": 100, "dur": 20, - "args": {"External id": 24504, "Input Dims": [[1000], [1000], []], "Input type": ["float", "float", "Int"]} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel", "pid": 0, "tid": "stream 7", - "ts": 130, "dur": 161, - "args": {"device": 0, "correlation": 99765, "external id": 24504} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "nccl:all_reduce", "pid": 23803, "tid": "25166", - "ts": 160, "dur": 75, - "args": {"External id": 2513, "Input Dims": [[2049000]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "Kernel", - "name": "ncclKernel_AllReduce_RING_LL_Sum_float(ncclWorkElem)", "pid": 0, "tid": "stream 16", - "ts": 162, "dur": 1556, - "args": {"device": 0, "correlation": 33218, "external id": 2513} - } - ] - """ - json_content1 = """[ - { - "ph": "X", "cat": "cpu_op", - "name": "nccl:broadcast", "pid": 23803, "tid": "23803", - "ts": 0, "dur": 20, - "args": {"External id": 146, "Input Dims": [[53120]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "Kernel", - "name": "ncclKernel_Broadcast_RING_LL_Sum_int8_t(ncclWorkElem)", "pid": 0, "tid": "stream 16", - "ts": 8, "dur": 31, - "args": {"device": 0, "correlation": 28506, "external id": 146} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "aten::add_", "pid": 23803, "tid": "23803", - "ts": 25, "dur": 20, - "args": {"External id": 24504, "Input Dims": [[1000], [1000], []], "Input type": ["float", "float", "Int"]} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel", "pid": 0, "tid": "stream 7", - "ts": 30, "dur": 161, - "args": {"device": 0, "correlation": 99765, "external id": 24504} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "nccl:all_reduce", "pid": 23803, "tid": "25166", - "ts": 160, "dur": 75, - "args": {"External id": 2513, "Input Dims": [[2049000]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "Kernel", - "name": "ncclKernel_AllReduce_RING_LL_Sum_float(ncclWorkElem)", "pid": 0, "tid": "stream 16", - "ts": 562, "dur": 1058, - "args": {"device": 0, "correlation": 33218, "external id": 2513} - } - ] - """ - - profile0 = parse_json_trace(json_content0, 'worker0') - dist_data0 = DistributedRunProfileData(profile0) - self.assertTrue(profile0.has_communication) - self.assertEqual(len(profile0.comm_node_list), 2) - self.assertEqual(profile0.steps_costs[0].costs, [105, 0, 0, 16, 0, 0, 79, 35, 235]) - - profile1 = parse_json_trace(json_content1, 'worker1') - dist_data1 = DistributedRunProfileData(profile1) - self.assertTrue(profile1.has_communication) - self.assertEqual(len(profile1.comm_node_list), 2) - self.assertEqual(profile1.steps_costs[0].costs[3], 22) - - loader = RunLoader('test_nccl', '', None) - dist_profile = loader._process_distributed_profiles([dist_data0, dist_data1], 0) - self.assertEqual(dist_profile.steps_to_overlap['data']['0']['worker0'], [32, 73, 16, 114]) - self.assertEqual(dist_profile.steps_to_overlap['data']['0']['worker1'], [152, 9, 22, 52]) - self.assertEqual(dist_profile.steps_to_wait['data']['0']['worker0'], [1074, 498]) - self.assertEqual(dist_profile.steps_to_wait['data']['0']['worker1'], [1074, 15]) - self.assertEqual(dist_profile.comm_ops['data']['worker0']['rows'], - [['nccl:broadcast', 1, 212480, 212480, 16, 16, 16, 16], - ['nccl:all_reduce', 1, 8196000, 8196000, 1556, 1556, 1058, 1058]]) - self.assertEqual(dist_profile.comm_ops['data']['worker1']['rows'], - [['nccl:broadcast', 1, 212480, 212480, 31, 31, 16, 16], - ['nccl:all_reduce', 1, 8196000, 8196000, 1058, 1058, 1058, 1058]]) - - def test_distributed_gloo_gpu(self): - json_content0 = """[ - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:broadcast", "pid": 23803, "tid": "23803", - "ts": 16, "dur": 38, - "args": {"External id": 165, "Input Dims": [[53120]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:broadcast", "pid": 23803, "tid": "23805", - "ts": 25, "dur": 36, - "args": {"External id": 166, "Input Dims": [[53120]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:broadcast", "pid": 23803, "tid": "23803", - "ts": 66, "dur": 18, - "args": {"External id": 167, "Input Dims": [[53120]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "aten::add_", "pid": 23803, "tid": "23800", - "ts": 0, "dur": 20, - "args": {"External id": 24504, "Input Dims": [[1000], [1000], []], "Input type": ["float", "float", "Int"]} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel", "pid": 0, "tid": "stream 7", - "ts": 30, "dur": 101, - "args": {"device": 0, "correlation": 99765, "external id": 24504} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:all_reduce", "pid": 23803, "tid": "23805", - "ts": 110, "dur": 18, - "args": {"External id": 2513, "Input Dims": [[2049000]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:all_reduce", "pid": 23803, "tid": "23803", - "ts": 120, "dur": 36, - "args": {"External id": 2516, "Input Dims": [[2049000]], "Input type": ["float"]} - } - ] - """ - json_content1 = """[ - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:broadcast", "pid": 23803, "tid": "23803", - "ts": 20, "dur": 28, - "args": {"External id": 256, "Input Dims": [[53120]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:broadcast", "pid": 23803, "tid": "23805", - "ts": 28, "dur": 30, - "args": {"External id": 257, "Input Dims": [[53120]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:broadcast", "pid": 23803, "tid": "23803", - "ts": 77, "dur": 6, - "args": {"External id": 258, "Input Dims": [[53120]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "aten::add_", "pid": 23803, "tid": "23800", - "ts": 0, "dur": 30, - "args": {"External id": 24504, "Input Dims": [[1000], [1000], []], "Input type": ["float", "float", "Int"]} - }, - { - "ph": "X", "cat": "Kernel", - "name": "void at::native::vectorized_elementwise_kernel", "pid": 0, "tid": "stream 7", - "ts": 70, "dur": 70, - "args": {"device": 0, "correlation": 99765, "external id": 24504} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:all_reduce", "pid": 23803, "tid": "23805", - "ts": 88, "dur": 38, - "args": {"External id": 2513, "Input Dims": [[2049000]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:all_reduce", "pid": 23803, "tid": "23803", - "ts": 130, "dur": 16, - "args": {"External id": 2516, "Input Dims": [[2049000]], "Input type": ["float"]} - } - ] - """ - - profile0 = parse_json_trace(json_content0, 'worker0') - dist_data0 = DistributedRunProfileData(profile0) - self.assertTrue(profile0.has_communication) - self.assertEqual(len(profile0.comm_node_list), 5) - self.assertEqual(profile0.steps_costs[0].costs, [101, 0, 0, 39, 0, 0, 16, 0, 156]) - - profile1 = parse_json_trace(json_content1, 'worker1') - dist_data1 = DistributedRunProfileData(profile1) - self.assertTrue(profile1.has_communication) - self.assertEqual(len(profile1.comm_node_list), 5) - self.assertEqual(profile1.steps_costs[0].costs, [70, 0, 0, 44, 0, 0, 20, 12, 146]) - - loader = RunLoader('test_gloo_gpu', '', None) - dist_profile = loader._process_distributed_profiles([dist_data0, dist_data1], 0) - self.assertEqual(dist_profile.steps_to_overlap['data']['0']['worker0'], [31, 70, 39, 16]) - self.assertEqual(dist_profile.steps_to_overlap['data']['0']['worker1'], [16, 54, 44, 32]) - self.assertEqual(dist_profile.steps_to_wait['data']['0']['worker0'], [75, 34]) - self.assertEqual(dist_profile.steps_to_wait['data']['0']['worker1'], [78, 20]) - self.assertEqual(dist_profile.comm_ops['data']['worker0']['rows'], - [['gloo:broadcast', 3, 637440, 212480, 63, 21, 41, 14], - ['gloo:all_reduce', 2, 16392000, 8196000, 46, 23, 34, 17]]) - self.assertEqual(dist_profile.comm_ops['data']['worker1']['rows'], - [['gloo:broadcast', 3, 637440, 212480, 44, 15, 44, 15], - ['gloo:all_reduce', 2, 16392000, 8196000, 54, 27, 34, 17]]) - - def test_distributed_gloo_cpu(self): - json_content0 = """[ - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:broadcast", "pid": 23803, "tid": "23803", - "ts": 16, "dur": 38, - "args": {"External id": 165, "Input Dims": [[53120]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:broadcast", "pid": 23803, "tid": "23805", - "ts": 25, "dur": 36, - "args": {"External id": 166, "Input Dims": [[53120]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:broadcast", "pid": 23803, "tid": "23803", - "ts": 66, "dur": 18, - "args": {"External id": 167, "Input Dims": [[53120]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "aten::add_", "pid": 23803, "tid": "23800", - "ts": 0, "dur": 20, - "args": {"External id": 24504, "Input Dims": [[1000], [1000], []], "Input type": ["float", "float", "Int"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "aten::mul", "pid": 23803, "tid": "23800", - "ts": 30, "dur": 101, - "args": {"External id": 24505} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:all_reduce", "pid": 23803, "tid": "23805", - "ts": 110, "dur": 18, - "args": {"External id": 2513, "Input Dims": [[2049000]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:all_reduce", "pid": 23803, "tid": "23803", - "ts": 120, "dur": 36, - "args": {"External id": 2516, "Input Dims": [[2049000]], "Input type": ["float"]} - } - ] - """ - json_content1 = """[ - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:broadcast", "pid": 23803, "tid": "23803", - "ts": 20, "dur": 28, - "args": {"External id": 256, "Input Dims": [[53120]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:broadcast", "pid": 23803, "tid": "23805", - "ts": 28, "dur": 30, - "args": {"External id": 257, "Input Dims": [[53120]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:broadcast", "pid": 23803, "tid": "23803", - "ts": 77, "dur": 6, - "args": {"External id": 258, "Input Dims": [[53120]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "aten::add_", "pid": 23803, "tid": "23800", - "ts": 0, "dur": 30, - "args": {"External id": 24504, "Input Dims": [[1000], [1000], []], "Input type": ["float", "float", "Int"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "aten::mul", "pid": 23803, "tid": "23800", - "ts": 70, "dur": 70, - "args": {"External id": 24505} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:all_reduce", "pid": 23803, "tid": "23805", - "ts": 88, "dur": 38, - "args": {"External id": 2513, "Input Dims": [[2049000]], "Input type": ["float"]} - }, - { - "ph": "X", "cat": "cpu_op", - "name": "gloo:all_reduce", "pid": 23803, "tid": "23803", - "ts": 130, "dur": 16, - "args": {"External id": 2516, "Input Dims": [[2049000]], "Input type": ["float"]} - } - ] - """ - - profile0 = parse_json_trace(json_content0, 'worker0') - dist_data0 = DistributedRunProfileData(profile0) - self.assertTrue(profile0.has_communication) - self.assertEqual(len(profile0.comm_node_list), 5) - self.assertEqual(profile0.steps_costs[0].costs, [0, 0, 0, 109, 0, 0, 47, 0, 156]) - - profile1 = parse_json_trace(json_content1, 'worker1') - dist_data1 = DistributedRunProfileData(profile1) - self.assertTrue(profile1.has_communication) - self.assertEqual(len(profile1.comm_node_list), 5) - self.assertEqual(profile1.steps_costs[0].costs, [0, 0, 0, 98, 0, 0, 36, 12, 146]) - - loader = RunLoader('test_gloo_cpu', '', None) - dist_profile = loader._process_distributed_profiles([dist_data0, dist_data1], 0) - self.assertEqual(dist_profile.steps_to_overlap['data']['0']['worker0'], [47, 74, 35, 0]) - self.assertEqual(dist_profile.steps_to_overlap['data']['0']['worker1'], [36, 64, 34, 12]) - self.assertEqual(dist_profile.steps_to_wait['data']['0']['worker0'], [75, 34]) - self.assertEqual(dist_profile.steps_to_wait['data']['0']['worker1'], [78, 20]) - self.assertEqual(dist_profile.comm_ops['data']['worker0']['rows'], - [['gloo:broadcast', 3, 637440, 212480, 63, 21, 41, 14], - ['gloo:all_reduce', 2, 16392000, 8196000, 46, 23, 34, 17]]) - self.assertEqual(dist_profile.comm_ops['data']['worker1']['rows'], - [['gloo:broadcast', 3, 637440, 212480, 44, 15, 44, 15], - ['gloo:all_reduce', 2, 16392000, 8196000, 54, 27, 34, 17]]) - - -class TestMemoryCurve(unittest.TestCase): - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - self.event_data_cpu = [ - [1, 0, 0, 1, 4, 4, 0], # alloc 1 - [20, 0, 0, 1, -4, 0, 0], # free 1 - [100, 0, 0, 2, 8000, 8000, 0], # alloc 2 - [200, 0, 0, 2, -8000, 0, 0], # free 2 - [300, 0, 0, 3, 4, 4, 0], # alloc 3 - [400, 0, 0, 4, 16, 20, 0], # alloc 4 - [500, 0, 0, 5, 4000, 4020, 0], # alloc 5 - [600, 0, 0, 4, -16, 4004, 0], # free 4 - [700, 0, 0, 7, 80, 4084, 0], # alloc 7 - [800, 0, 0, 3, -4, 4080, 0], # free 3 - [900, 0, 0, 7, -80, 4000, 0], # free 7 - [905, 0, 0, 4, -4000, 0, 0], # free 5 - ] - - self.event_data_gpu = [ - [2, 1, 0, 11, 400, 400, 512], # alloc 11 - [22, 1, 0, 11, -400, 0, 512], # free 11 - [105, 1, 0, 12, 5000, 5000, 10240], # alloc 12 - [106, 1, 0, 13, 3000, 8000, 10240], # alloc 13 - [205, 1, 0, 12, -5000, 3000, 10240], # free 12 - [401, 1, 0, 14, 1024, 4024, 10240], # alloc 14 - [499, 1, 0, 15, 4, 4028, 10240], # alloc 15 - [501, 1, 0, 13, -3000, 1028, 10240], # free 13 - [502, 1, 0, 15, -4, 1024, 10240], # free 15 - [906, 1, 0, 14, -1024, 0, 10240], # free 14 - ] - - self.all_events = sorted(self.event_data_cpu + self.event_data_gpu, key=lambda e: e[0]) - - def entry(self, ts, dev, dev_id, addr, alloc_size, total_allocated, total_reserved): - return { - 'ph': 'i', 's': 't', 'name': '[memory]', 'pid': 0, 'tid': 0, 'ts': ts, - 'args': { - 'Device Type': dev, - 'Device Id': dev_id, - 'Addr': addr, - 'Bytes': alloc_size, - 'Total Allocated': total_allocated, - 'Total Reserved': total_reserved, - }, - } - - def test_memory_curve_no_step_plot(self): - json_content = json.dumps([self.entry(*data) for data in self.all_events]) - - profile = parse_json_trace(json_content) - profile.process() - result = RunProfile.get_memory_curve(profile, time_metric='us', memory_metric='B', patch_for_step_plot=False) - - start_ts = profile.profiler_start_ts - self.assertEqual(1, start_ts) - - curves = result['rows'] - - self.assertIn('CPU', curves) - self.assertIn('GPU0', curves) - - self.assertEqual(len(self.event_data_cpu), len(curves['CPU'])) - for i in range(len(self.event_data_cpu)): - # adjusted timestamp - self.assertEqual(self.event_data_cpu[i][0] - start_ts, curves['CPU'][i][0]) - # total allocated - self.assertEqual(self.event_data_cpu[i][-2], curves['CPU'][i][1]) - # total reserved - self.assertEqual(self.event_data_cpu[i][-1], curves['CPU'][i][2]) - - self.assertEqual(len(self.event_data_gpu), len(curves['GPU0'])) - for i in range(len(self.event_data_gpu)): - self.assertEqual(self.event_data_gpu[i][0] - start_ts, curves['GPU0'][i][0]) - self.assertEqual(self.event_data_gpu[i][-2], curves['GPU0'][i][1]) - self.assertEqual(self.event_data_gpu[i][-1], curves['GPU0'][i][2]) - - def test_memory_curve_step_plot(self): - json_content = json.dumps([self.entry(*data) for data in self.all_events]) - - profile = parse_json_trace(json_content) - profile.process() - result = RunProfile.get_memory_curve(profile, time_metric='us', memory_metric='B', patch_for_step_plot=True) - - start_ts = profile.profiler_start_ts - self.assertEqual(1, start_ts) - - curves = result['rows'] - - self.assertIn('CPU', curves) - self.assertIn('GPU0', curves) - - self.assertEqual(2 * len(self.event_data_cpu) - 1, len(curves['CPU'])) - for i in range(len(curves['CPU'])): - if i % 2 == 0: # original values - # adjusted timestamp - self.assertEqual(self.event_data_cpu[i//2][0] - start_ts, curves['CPU'][i][0]) - # total allocated - self.assertEqual(self.event_data_cpu[i//2][-2], curves['CPU'][i][1]) - # total reserved - self.assertEqual(self.event_data_cpu[i//2][-1], curves['CPU'][i][2]) - else: # interpolated values - self.assertEqual(self.event_data_cpu[i//2+1][0] - start_ts, curves['CPU'][i][0]) - self.assertEqual(self.event_data_cpu[i//2][-2], curves['CPU'][i][1]) - self.assertEqual(self.event_data_cpu[i//2][-1], curves['CPU'][i][2]) - - self.assertEqual(2 * len(self.event_data_gpu) - 1, len(curves['GPU0'])) - for i in range(len(self.event_data_gpu)): - if i % 2 == 0: # original values - self.assertEqual(self.event_data_gpu[i//2][0] - start_ts, curves['GPU0'][i][0]) - self.assertEqual(self.event_data_gpu[i//2][-2], curves['GPU0'][i][1]) - self.assertEqual(self.event_data_gpu[i//2][-1], curves['GPU0'][i][2]) - else: # interpolated values - self.assertEqual(self.event_data_gpu[i//2+1][0] - start_ts, curves['GPU0'][i][0]) - self.assertEqual(self.event_data_gpu[i//2][-2], curves['GPU0'][i][1]) - self.assertEqual(self.event_data_gpu[i//2][-1], curves['GPU0'][i][2]) - - -class TestModuleView(unittest.TestCase): - - def test_build_module_hierarchy(self): - from torch_tb_profiler.profiler import trace - from torch_tb_profiler.profiler.module_op import ( - _build_module_hierarchy, aggegate_module_view) - - json_content = """[ - { - "ph": "X", - "cat": "python_function", - "name": "test_root", - "pid": 1908, - "tid": 1908, - "ts": 1, - "dur": 19367, - "args": { - "External id": 0, - "Trace name": "PyTorch Profiler", - "Trace iteration": 0, - "Python id": 1, - "Python thread": 0 - } - }, - { - "ph": "X", - "cat": "python_function", - "name": "nn.Module: MyModule", - "pid": 1908, - "tid": 1908, - "ts": 2, - "dur": 211, - "args": { - "External id": 0, - "Trace name": "PyTorch Profiler", - "Trace iteration": 0, - "Python id": 2, - "Python parent id": 1, - "Python module id": 0 - } - }, - { - "ph": "X", - "cat": "python_function", - "name": "nn.Module: Linear", - "pid": 1908, - "tid": 1908, - "ts": 5, - "dur": 62, - "args": { - "External id": 0, - "Trace name": "PyTorch Profiler", - "Trace iteration": 0, - "Python id": 3, - "Python parent id": 2, - "Python thread": 0, - "Python module id": 1 - } - }, - { - "ph": "X", - "cat": "cpu_op", - "name": "aten::addmm", - "pid": 1908, - "tid": 1908, - "ts": 10, - "dur": 31, - "args": { - "External id": 12182, - "Trace name": "PyTorch Profiler", - "Trace iteration": 0, - "Fwd thread id": 0, - "Sequence number": 4006, - "python_caller_id": 3 - } - }, - { - "ph": "X", - "cat": "python_function", - "name": "nn.Module: MyModule", - "pid": 1908, - "tid": 1908, - "ts": 1000, - "dur": 211, - "args": { - "External id": 0, - "Trace name": "PyTorch Profiler", - "Trace iteration": 0, - "Python id": 4, - "Python parent id": 1, - "Python module id": 0 - } - }, - { - "ph": "X", - "cat": "python_function", - "name": "nn.Module: Linear", - "pid": 1908, - "tid": 1908, - "ts": 1001, - "dur": 62, - "args": { - "External id": 0, - "Trace name": "PyTorch Profiler", - "Trace iteration": 0, - "Python id": 5, - "Python parent id": 4, - "Python thread": 0, - "Python module id": 1 - } - }, - { - "ph": "X", - "cat": "cpu_op", - "name": "aten::addmm", - "pid": 1908, - "tid": 1908, - "ts": 1002, - "dur": 32, - "args": { - "External id": 12182, - "Trace name": "PyTorch Profiler", - "Trace iteration": 0, - "Fwd thread id": 0, - "Sequence number": 4006, - "python_caller_id": 5 - } - }, - { - "ph": "X", - "cat": "python_function", - "name": "nn.Module: MyModule", - "pid": 1908, - "tid": 1908, - "ts": 2000, - "dur": 211, - "args": { - "External id": 0, - "Trace name": "PyTorch Profiler", - "Trace iteration": 0, - "Python id": 6, - "Python parent id": 1, - "Python module id": 0 - } - }, - { - "ph": "X", - "cat": "python_function", - "name": "nn.Module: Linear", - "pid": 1908, - "tid": 1908, - "ts": 2001, - "dur": 62, - "args": { - "External id": 0, - "Trace name": "PyTorch Profiler", - "Trace iteration": 0, - "Python id": 7, - "Python parent id": 6, - "Python thread": 0, - "Python module id": 1 - } - }, - { - "ph": "X", - "cat": "cpu_op", - "name": "aten::addmm", - "pid": 1908, - "tid": 1908, - "ts": 2002, - "dur": 33, - "args": { - "External id": 12182, - "Trace name": "PyTorch Profiler", - "Trace iteration": 0, - "Fwd thread id": 0, - "Sequence number": 4006, - "python_caller_id": 7 - } - }, - { - "ph": "X", - "cat": "python_function", - "name": "nn.Module: Conv2", - "pid": 1908, - "tid": 1908, - "ts": 3000, - "dur": 211, - "args": { - "External id": 0, - "Trace name": "PyTorch Profiler", - "Trace iteration": 0, - "Python id": 8, - "Python parent id": 1, - "Python module id": 100 - } - } - ] - """ - data = parse_json_trace(json_content) - stats = aggegate_module_view(data.tid2tree, data.events) - stats.sort(key=lambda x: x.name) - self.assertEqual(2, len(stats)) - self.assertEqual('Conv2', stats[0].name) - self.assertEqual('MyModule', stats[1].name) - self.assertEqual(1, len(stats[1].children)) - self.assertEqual('Linear', stats[1].children[0].name) - - content = json.loads(json_content) - - events = [] - for data in content: - event = trace.create_event(data, False) - events.append(event) - - roots = _build_module_hierarchy(events) - roots.sort(key=lambda x: x.name) - self.assertEqual(2, len(roots)) - self.assertEqual('nn.Module: Conv2', roots[0].name) - self.assertEqual('nn.Module: MyModule', roots[1].name) - self.assertEqual(1, len(roots[1].children)) - self.assertEqual('nn.Module: Linear', roots[1].children[0].name) - - -class TestDataPipe(unittest.TestCase): - - def test_datapipe(self): - json_content = """[ - { - "ph": "X", "cat": "cpu_op", - "name": "enumerate(DataPipe)#ShufflerIterDataPipe", "pid": 7557, "tid": 7557, - "ts": 100, "dur": 23, - "args": { - "External id": 34, - "Trace name": "PyTorch Profiler", "Trace iteration": 0 - } - } - ]""" - profile = parse_json_trace(json_content) - profile.process() - - dataloader_ranges = profile.role_ranges[ProfileRole.DataLoader] - datapipe_range = None - for range in dataloader_ranges: - if range[0] == 100 and range[1] == 123: - datapipe_range = range - break - self.assertTrue(datapipe_range is not None) - - root = next(iter(profile.tid2tree.values())) - ops, _ = root.get_operator_and_kernels() - datapipe_op = None - for op in ops: - if op.name.startswith('enumerate(DataPipe)'): - datapipe_op = op - break - - self.assertTrue(datapipe_op is None) - - -if __name__ == '__main__': - unittest.main() diff --git a/plugins/tensorboard-plugins/tb_plugin/test/test_ranges.py b/plugins/tensorboard-plugins/tb_plugin/test/test_ranges.py deleted file mode 100644 index d40fc3e02..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/test/test_ranges.py +++ /dev/null @@ -1,50 +0,0 @@ -import unittest -import math - -from torch_tb_profiler.profiler.overall_parser import ( - merge_ranges, subtract_ranges_lists, intersection_ranges_lists, get_ranges_sum -) - - -def check_ranges_equal(ranges1, ranges2): - if len(ranges1) != len(ranges2): - return False - for i in range(len(ranges1)): - if ranges1[i][0] != ranges2[i][0] or ranges1[i][1] != ranges2[i][1]: - return False - return True - - -class TestOverallParser(unittest.TestCase): - def test_merge_ranges(self): - src_ranges = [(1.1, 2.2), (1.5, 2.3), (3.3, 3.9), (3.5, 3.6), (3.7, 3.8), (4.1, 4.2)] - expected_ranges = [(1.1, 2.3), (3.3, 3.9), (4.1, 4.2)] - dst_ranges = merge_ranges(src_ranges, True) - is_equal = check_ranges_equal(dst_ranges, expected_ranges) - self.assertTrue(is_equal) - - def test_subtract_ranges_lists(self): - ranges1 = [(1.1, 2.2), (3.3, 4.4), (5.5, 6.6)] - ranges2 = [(0, 0.1), (1.0, 1.4), (1.5, 1.6), (1.9, 3.4), (4.3, 4.6)] - expected_ranges = [(1.4, 1.5), (1.6, 1.9), (3.4, 4.3), (5.5, 6.6)] - dst_ranges = subtract_ranges_lists(ranges1, ranges2) - is_equal = check_ranges_equal(dst_ranges, expected_ranges) - self.assertTrue(is_equal) - - def test_intersection_ranges_lists(self): - ranges1 = [(1.1, 2.2), (3.3, 4.4), (5.5, 6.6)] - ranges2 = [(0, 0.1), (1.0, 1.4), (1.5, 1.6), (1.9, 3.4), (4.3, 4.6)] - expected_ranges = [(1.1, 1.4), (1.5, 1.6), (1.9, 2.2), (3.3, 3.4), (4.3, 4.4)] - dst_ranges = intersection_ranges_lists(ranges1, ranges2) - is_equal = check_ranges_equal(dst_ranges, expected_ranges) - self.assertTrue(is_equal) - - def test_get_ranges_sum(self): - ranges = [(1.1, 2.2), (3.3, 4.4), (5.5, 6.6)] - expected_sum = 3.3 - dst_sum = get_ranges_sum(ranges) - self.assertTrue(math.isclose(dst_sum, expected_sum)) - - -if __name__ == '__main__': - unittest.main() diff --git a/plugins/tensorboard-plugins/tb_plugin/test/test_tensorboard_end2end.py b/plugins/tensorboard-plugins/tb_plugin/test/test_tensorboard_end2end.py deleted file mode 100644 index 46636d118..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/test/test_tensorboard_end2end.py +++ /dev/null @@ -1,170 +0,0 @@ -import json -import os -import random -import shutil -import socket -import tempfile -import time -import unittest -import urllib -import urllib.request -from subprocess import Popen -from urllib.error import HTTPError - - -def get_samples_dir(): - return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'resources') - - -class TestEnd2End(unittest.TestCase): - - # def test_tensorboard_gs(self): - # test_folder = 'gs://pe-tests-public/tb_samples/' - # expected_runs = b'["resnet50_profiler_api_num_workers_0", "resnet50_profiler_api_num_workers_4"]' - # self._test_tensorboard_with_arguments(test_folder, expected_runs, {'TORCH_PROFILER_START_METHOD':'spawn'}) - - def test_tensorboard_end2end(self): - test_folder = get_samples_dir() - expected_runs = b'["resnet50_num_workers_0", "resnet50_num_workers_4"]' - - print('starting spawn mode testing...') - self._test_tensorboard_with_arguments(test_folder, expected_runs, {'TORCH_PROFILER_START_METHOD': 'spawn'}) - - @unittest.skip('fork is not use anymore') - def test_tensorboard_fork(self): - test_folder = get_samples_dir() - expected_runs = b'["resnet50_num_workers_0", "resnet50_num_workers_4"]' - - print('starting fork mode testing') - self._test_tensorboard_with_arguments(test_folder, expected_runs) - - def test_tensorboard_with_path_prefix(self): - test_folder = get_samples_dir() - expected_runs = b'["resnet50_num_workers_0", "resnet50_num_workers_4"]' - self._test_tensorboard_with_arguments(test_folder, expected_runs, path_prefix='/tensorboard/viewer/') - - def test_tensorboard_with_symlinks(self): - logdir = tempfile.mkdtemp(prefix='tensorboard_logdir') - - samples_dir = get_samples_dir() - - # Create the following layout, with 1 symlink to a run dir, and 1 regular run dir: - # logdir/ - # run_concrete/ - # run_symlink/ --> path/to/samples/resnet50_num_workers_4/ - shutil.copytree(os.path.join(samples_dir, 'resnet50_num_workers_0'), os.path.join(logdir, 'run_concrete')) - os.symlink(os.path.join(samples_dir, 'resnet50_num_workers_4'), os.path.join(logdir, 'run_symlink')) - - expected_runs = b'["run_concrete", "run_symlink"]' - self._test_tensorboard_with_arguments(logdir, expected_runs) - - shutil.rmtree(logdir) - - def _test_tensorboard_with_arguments(self, test_folder, expected_runs, env=None, path_prefix=None): - host = 'localhost' - port = random.randint(6008, 65535) - - try: - if env: - env_copy = os.environ.copy() - env_copy.update(env) - env = env_copy - if not path_prefix: - tb = Popen(['tensorboard', '--logdir='+test_folder, '--port='+str(port)], env=env) - else: - tb = Popen(['tensorboard', '--logdir='+test_folder, '--port='+str(port), - '--path_prefix='+path_prefix], env=env) - self._test_tensorboard(host, port, expected_runs, path_prefix) - finally: - pid = tb.pid - print('tensorboard process {} is terminating.'.format(pid)) - tb.terminate() - - def _test_tensorboard(self, host, port, expected_runs, path_prefix): - if not path_prefix: - link_prefix = 'http://{}:{}/data/plugin/pytorch_profiler/'.format(host, port) - else: - path_prefix = path_prefix.strip('/') - link_prefix = 'http://{}:{}/{}/data/plugin/pytorch_profiler/'.format(host, port, path_prefix) - run_link = link_prefix + 'runs' - - expected_links_format = [ - link_prefix + 'overview?run={}&worker=worker0&span=1&view=Overview', - link_prefix + 'operation?run={}&worker=worker0&span=1&view=Operator&group_by=Operation', - link_prefix + 'operation/table?run={}&worker=worker0&span=1&view=Operator&group_by=Operation', - link_prefix + 'kernel/table?run={}&worker=worker0&span=1&view=Kernel&group_by=Kernel', - link_prefix + 'kernel?run={}&worker=worker0&span=1&view=Kernel&group_by=Kernel' - ] - - retry_times = 60 - while True: - try: - socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((host, port)) - print('tensorboard start successfully') - break - except socket.error: - time.sleep(2) - retry_times -= 1 - if retry_times < 0: - self.fail('tensorboard start timeout') - continue - - retry_times = 60 - - while True: - try: - response = urllib.request.urlopen(run_link) - data = response.read() - runs = None - if data: - data = json.loads(data) - runs = data.get('runs') - if runs: - runs = '[{}]'.format(', '.join(['"{}"'.format(i) for i in runs])) - runs = runs.encode('utf-8') - if runs == expected_runs: - break - if retry_times % 10 == 0: - print('receive mismatched data, retrying', data) - time.sleep(2) - retry_times -= 1 - if retry_times < 0: - self.fail('Load run timeout') - except Exception: - if retry_times > 0: - continue - else: - raise - - links = [] - for run in json.loads(expected_runs): - for expected_link in expected_links_format: - links.append(expected_link.format(run)) - - if os.environ.get('TORCH_PROFILER_REGEN_RESULT_CHECK') == '1': - with open('result_check_file.txt', 'w', encoding='utf-8') as f: - # NOTE: result_check_file.txt is manually generated and verified. - # And then checked-in so that we can make sure that frontend - # content change can be detected on code change. - for link in links: - response = urllib.request.urlopen(link) - f.write(response.read().decode('utf-8')) - f.write('\n') - else: - with open('result_check_file.txt', 'r') as f: - lines = f.readlines() - i = 0 - print('starting testing...') - for link in links: - try: - response = urllib.request.urlopen(link) - self.assertEqual(response.read(), lines[i].strip().encode(encoding='utf-8')) - i = i + 1 - except HTTPError as e: - self.fail(e) - self.assertEqual(i, 10) - print('ending testing...') - - -if __name__ == '__main__': - unittest.main() diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/__init__.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/__init__.py deleted file mode 100644 index f7b951e60..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# -------------------------------------------------------------------------- - -# Entry point for Pytorch TensorBoard plugin package. - -__version__ = '0.4.0.11' diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/config/config.ini b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/config/config.ini deleted file mode 100644 index 500d472d2..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/config/config.ini +++ /dev/null @@ -1,11 +0,0 @@ -[URL] -pytorch_data_loading_url = https://pytorch.org/docs/stable/data.html#single-and-multi-process-data-loading -pytorch_amp_url = https://pytorch.org/docs/stable/amp.html -pytorch_ckp_url = https://pytorch.org/docs/stable/checkpoint.html -cuda_nn_ddp_instead_url = https://pytorch.org/docs/stable/notes/cuda.html#cuda-nn-ddp-instead -compress_url = https://pytorch.org/docs/stable/ddp_comm_hooks.html -grad_acc_url = https://towardsdatascience.com/what-is-gradient-accumulation-in-deep-learning-ec034122cfa -lamb_url = https://nvidia.github.io/apex/optimizers.html#apex.optimizers.FusedLAMB -repository_url = https://gitee.com/ascend/att/tree/master/plugins/tensorboard-plugins/tb_plugin -[EMAIL] -author_email = pmail_mindstudio@huawei.com \ No newline at end of file diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/consts.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/consts.py deleted file mode 100644 index b3e202af6..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/consts.py +++ /dev/null @@ -1,116 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# -# Copyright(c) 2023 Huawei Technologies. -# All rights reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Modifications: Add visualization of PyTorch Ascend profiling. -# -------------------------------------------------------------------------- -import enum -import re -from collections import namedtuple - -PLUGIN_NAME = 'pytorch_profiler' - -WORKER_PATTERN = re.compile(r"""^(.*?) # worker name - (\.\d+)? # optional timestamp like 1619499959628 used as span name - \.pt\.trace\.json$""", re.X) - -TRACE_PATTERN = re.compile(r"""^trace_view\.json$""") -WORKER_SPAN_PATTERN = re.compile(r"""^(.*?)_(\d+(\.\d+)?)_ascend_pt$""") - -NODE_PROCESS_PATTERN = re.compile(r"""^(.*)_(\d+)""") -MONITOR_RUN_REFRESH_INTERNAL_IN_SECONDS = 10 -MAX_GPU_PER_NODE = 64 -MAX_FILE_SIZE = 500 * 1024 * 1024 -MAX_LINUX_PATH_LENGTH = 4096 -MAX_WINDOWS_PATH_LENGTH = 260 - -View = namedtuple('View', 'id, name, display_name') -OVERALL_VIEW = View(1, 'overall', 'Overview') -OP_VIEW = View(2, 'operator', 'Operator') -KERNEL_VIEW = View(3, 'kernel', 'Kernel') -TRACE_VIEW = View(4, 'trace', 'Trace') -DISTRIBUTED_VIEW = View(5, 'distributed', 'Distributed') -MEMORY_VIEW = View(6, 'memory', 'Memory') -MODULE_VIEW = View(7, 'module', 'Module') -LIGHTNING_VIEW = View(8, 'lightning', 'Lightning') - -TOOLTIP_GPU_UTIL = \ - 'GPU Utilization:\n' \ - 'GPU busy time / All steps time. The higher, the better. ' \ - 'GPU busy time is the time during which there is at least one GPU kernel running on it. ' \ - 'All steps time is the total time of all profiler steps(or called as iterations).\n' -TOOLTIP_SM_EFFICIENCY = \ - 'Est. SM Efficiency:\n' \ - 'Estimated Stream Multiprocessor Efficiency. The higher, the better. ' \ - 'This metric of a kernel, SM_Eff_K = min(blocks of this kernel / SM number of this GPU, 100%). ' \ - "This overall number is the sum of all kernels' SM_Eff_K weighted by kernel's execution duration, " \ - 'divided by all steps time.\n' -TOOLTIP_OCCUPANCY_COMMON = \ - 'Est. Achieved Occupancy:\n' \ - 'For most cases such as memory bandwidth bounded kernels, the higher the better. ' \ - 'Occupancy is the ratio of active warps on an SM ' \ - 'to the maximum number of active warps supported by the SM. ' \ - 'The theoretical occupancy of a kernel is upper limit occupancy of this kernel, ' \ - 'limited by multiple factors such as kernel shape, kernel used resource, ' \ - 'and the GPU compute capability.\n' \ - 'Est. Achieved Occupancy of a kernel, OCC_K = ' \ - 'min(threads of the kernel / SM number / max threads per SM, theoretical occupancy of the kernel). ' -TOOLTIP_OCCUPANCY_OVERVIEW = \ - "This overall number is the weighted average of all kernels' OCC_K " \ - "using kernel's execution duration as weight. " \ - 'It shows fine-grained low-level GPU utilization.\n' -TOOLTIP_TENSOR_CORES = \ - 'Kernel using Tensor Cores:\n' \ - 'Total GPU Time for Tensor Core kernels / Total GPU Time for all kernels.\n' -TOOLTIP_OCCUPANCY_TABLE = \ - "This \"Mean\" number is the weighted average of all calls' OCC_K of the kernel, " \ - "using each call's execution duration as weight. " \ - 'It shows fine-grained low-level GPU utilization.' -TOOLTIP_BLOCKS_PER_SM = \ - 'Blocks Per SM = blocks of this kernel / SM number of this GPU.\n' \ - 'If this number is less than 1, it indicates the GPU multiprocessors are not fully utilized.\n' \ - '\"Mean Blocks per SM\" is the weighted average of all calls of this kernel, ' \ - "using each call's execution duration as weight." -TOOLTIP_OP_TC_ELIGIBLE = \ - 'Whether this operator is eligible to use Tensor Cores.' -TOOLTIP_OP_TC_SELF = \ - 'Time of self-kernels with Tensor Cores / Time of self-kernels.' -TOOLTIP_OP_TC_TOTAL = \ - 'Time of kernels with Tensor Cores / Time of kernels.' -TOOLTIP_KERNEL_USES_TC = \ - 'Whether this kernel uses Tensor Cores.' -TOOLTIP_KERNEL_OP_TC_ELIGIBLE = \ - 'Whether the operator launched this kernel is eligible to use Tensor Cores.' -TOOLTIP_OP_TC_ELIGIBLE_AICORE = \ - 'Whether this operator is eligible to use AICore.' -TOOLTIP_OP_TC_SELF_AICORE = \ - 'Time of Device Self Duration With AICore / Device Self Duration.' -TOOLTIP_OP_TC_TOTAL_AICORE = \ - 'Time of Device Total Duration With AICore / Device Total Duration.' - - -class InputFilesType(enum.Enum): - KERNEL_DETAILS_CSV = 'kernel_details.csv' - MEMORY_RECORD_CSV = 'memory_record.csv' - MEMORY_OPERATOR_CSV = 'operator_memory.csv' - MEMORY_COMPONENT_CSV = 'npu_module_mem.csv' - OPERATOR_DETAILS_CSV = 'operator_details.csv' - DISTRIBUTED_STEP_CSV = 'step_trace_time.csv' - DISTRIBUTED_COMMUNICATION_JSON = 'communication.json' - - -INPUT_FILE_LIST = [e.value for e in InputFilesType] diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/__init__.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/__init__.py deleted file mode 100644 index 296f53b7c..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. -# Copyright(c) 2023 Huawei Technologies. -# All rights reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Modifications: Add visualization of PyTorch Ascend profiling. -# -------------------------------------------------------------------------- -from .cache import Cache -from .file import (BaseFileSystem, StatData, abspath, basename, download_file, - exists, get_filesystem, glob, isdir, join, listdir, - makedirs, read, register_filesystem, relpath, walk, stat, check_file_valid) diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/azureblob.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/azureblob.py deleted file mode 100644 index 2fcd69fee..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/azureblob.py +++ /dev/null @@ -1,187 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -import os - -from azure.storage.blob import ContainerClient - -from .. import utils -from .base import BaseFileSystem, RemotePath, StatData -from .utils import as_bytes, as_text, parse_blob_url - -logger = utils.get_logger() - - -class AzureBlobSystem(RemotePath, BaseFileSystem): - """Provides filesystem access to S3.""" - - def __init__(self): - if not ContainerClient: - raise ImportError('azure-storage-blob must be installed for Azure Blob support.') - self.connection_string = os.environ.get('AZURE_STORAGE_CONNECTION_STRING', None) - - def exists(self, filename): - """Returns whether the path is a directory or not.""" - basename, parts = self.split_blob_path(filename) - if basename is None or parts is None: - return False - if basename == '': - # root container case - return True - else: - return basename == parts[0] - - def read(self, file, binary_mode=False, size=None, continue_from=None): - """Reads contents of a file to a string.""" - logger.info('azure blob: starting reading file %s' % file) - account, container, path = self.container_and_path(file) - client = self.create_container_client(account, container) - blob_client = client.get_blob_client(path) - if not blob_client.exists(): - raise FileNotFoundError("file %s doesn't exist!" % path) - - downloader = blob_client.download_blob(offset=continue_from, length=size) - if continue_from is not None: - continuation_token = continue_from + downloader.size - else: - continuation_token = downloader.size - - data = downloader.readall() - logger.info('azure blob: file %s download is done, size is %d' % (file, len(data))) - if binary_mode: - return as_bytes(data), continuation_token - else: - return as_text(data), continuation_token - - def write(self, filename, file_content, binary_mode=False): - """Writes string file contents to a file.""" - account, container, path = self.container_and_path(filename) - client = self.create_container_client(account, container) - - if binary_mode: - if not isinstance(file_content, bytes): - raise TypeError('File content type must be bytes') - else: - file_content = as_bytes(file_content) - client.upload_blob(path, file_content) - - def download_file(self, file_to_download, file_to_save): - logger.info('azure blob: starting downloading file %s as %s' % (file_to_download, file_to_save)) - account, container, path = self.container_and_path(file_to_download) - client = self.create_container_client(account, container) - blob_client = client.get_blob_client(path) - if not blob_client.exists(): - raise FileNotFoundError("file %s doesn't exist!" % path) - - downloader = blob_client.download_blob() - with open(file_to_save, 'wb') as downloaded_file: - data = downloader.readall() - downloaded_file.write(data) - logger.info('azure blob: file %s is downloaded as %s, size is %d' % - (file_to_download, file_to_save, len(data))) - - def glob(self, filename): - """Returns a list of files that match the given pattern(s).""" - # Only support prefix with * at the end and no ? in the string - star_i = filename.find('*') - quest_i = filename.find('?') - if quest_i >= 0: - raise NotImplementedError( - '{} not supported by compat glob'.format(filename) - ) - if star_i != len(filename) - 1: - return [] - - filename = filename[:-1] - - account, container, path = self.container_and_path(filename) - client = self.create_container_client(account, container) - blobs = client.list_blobs(name_starts_with=path) - return [blob.name for blob in blobs] - - def isdir(self, dirname): - """Returns whether the path is a directory or not.""" - basename, parts = self.split_blob_path(dirname) - if basename is None or parts is None: - return False - if basename == '': - # root container case - return True - else: - return basename == parts[0] and len(parts) > 1 - - def listdir(self, dirname): - """Returns a list of entries contained within a directory.""" - account, container, path = self.container_and_path(dirname) - client = self.create_container_client(account, container) - blob_iter = client.list_blobs(name_starts_with=path) - items = [] - for blob in blob_iter: - item = self.relpath(blob.name, path) - if items not in items: - items.append(item) - return items - - def makedirs(self, path): - """No need create directory since the upload blob will automatically create""" - pass - - def stat(self, filename): - """Returns file statistics for a given path.""" - account, container, path = self.container_and_path(filename) - client = self.create_container_client(account, container) - blob_client = client.get_blob_client(path) - props = blob_client.get_blob_properties() - return StatData(props.size) - - def walk(self, top, topdown=True, onerror=None): - account, container, path = self.container_and_path(top) - client = self.create_container_client(account, container) - blobs = client.list_blobs(name_starts_with=path) - results = {} - for blob in blobs: - dirname, basename = self.split(blob.name) - dirname = 'https://{}/{}/{}'.format(account, container, dirname) - results.setdefault(dirname, []).append(basename) - for key, value in results.items(): - yield key, None, value - - def split_blob_path(self, blob_path): - """ Find the first blob start with blob_path, then get the relative path starting from dirname(blob_path). - Finally, split the relative path. - return (basename(blob_path), [relative splitted paths]) - If blob_path doesn't exist, return (None, None) - For example, - For blob https://trainingdaemon.blob.core.windows.net/tests/test1/test2/test.txt - * If the blob_path is '', return ('', [test1, test2, test.txt]) - * If the blob_path is test1, return (test1, [test2, test.txt]) - * If the blob_path is test1/test2, return (test2, [test2, test.txt]) - * If the blob_path is test1/test2/test.txt, return (test.txt, [test.txt]) - """ - account, container, path = self.container_and_path(blob_path) - client = self.create_container_client(account, container) - blobs = client.list_blobs(name_starts_with=path, maxresults=1) - - for blob in blobs: - dir_path, basename = self.split(path) - if dir_path: - rel_path = blob.name[len(dir_path):] - parts = rel_path.lstrip('/').split('/') - else: - parts = blob.name.split('/') - return (basename, parts) - return (None, None) - - def container_and_path(self, url): - """Split an Azure blob -prefixed URL into container and blob path.""" - root, parts = parse_blob_url(url) - if len(parts) != 2: - raise ValueError('Invalid azure blob url %s' % url) - return root, parts[0], parts[1] - - def create_container_client(self, account, container): - if self.connection_string: - client = ContainerClient.from_connection_string(self.connection_string, container) - else: - client = ContainerClient.from_container_url('https://{}/{}'.format(account, container)) - return client diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/base.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/base.py deleted file mode 100644 index ab0a40f04..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/base.py +++ /dev/null @@ -1,114 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -import os -from abc import ABC, abstractmethod -from collections import namedtuple - -# Data returned from the Stat call. -StatData = namedtuple('StatData', ['length']) - - -class BaseFileSystem(ABC): - def support_append(self): - return False - - def append(self, filename, file_content, binary_mode=False): - pass - - def download_file(self, file_to_download, file_to_save): - pass - - @abstractmethod - def exists(self, filename): - raise NotImplementedError - - @abstractmethod - def read(self, file, binary_mode=False, size=None, continue_from=None): - raise NotImplementedError - - @abstractmethod - def write(self, filename, file_content, binary_mode=False): - raise NotImplementedError - - @abstractmethod - def glob(self, filename): - raise NotImplementedError - - @abstractmethod - def isdir(self, dirname): - raise NotImplementedError - - @abstractmethod - def listdir(self, dirname): - raise NotImplementedError - - @abstractmethod - def makedirs(self, path): - raise NotImplementedError - - @abstractmethod - def stat(self, filename): - raise NotImplementedError - - -class BasePath(ABC): - @abstractmethod - def join(self, path, *paths): - pass - - @abstractmethod - def abspath(self, path): - pass - - @abstractmethod - def basename(self, path): - pass - - @abstractmethod - def relpath(self, path, start): - pass - - -class LocalPath(BasePath): - def abspath(self, path): - return os.path.abspath(os.path.expanduser(os.path.expandvars(path))) - - def basename(self, path): - return os.path.basename(path) - - def relpath(self, path, start): - return os.path.relpath(path, start) - - def join(self, path, *paths): - return os.path.join(path, *paths) - - -class RemotePath(BasePath): - def split(self, path): - """ - Split a pathname. Returns tuple '(head, tail)' where 'tail' is - everything after the final slash. Either part may be empty. - """ - sep = '/' - i = path.rfind(sep) + 1 - head, tail = path[:i], path[i:] - head = head.rstrip(sep) - return (head, tail) - - def join(self, path, *paths): - """Join paths with a slash.""" - return '/'.join((path,) + paths) - - def abspath(self, path): - return path - - def basename(self, path): - return path.split('/')[-1] - - def relpath(self, path, start): - if not path.startswith(start): - return path - start = start.rstrip('/') - begin = len(start) + 1 # include the ending slash '/' - return path[begin:] diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/cache.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/cache.py deleted file mode 100644 index ea9afab66..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/cache.py +++ /dev/null @@ -1,81 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -import tempfile - -from .. import utils -from .. import multiprocessing as mp -from . import file -from .file import basename, is_local, download_file, read - -logger = utils.get_logger() - - -class Cache: - def __init__(self, cache_dir=None): - self._lock = mp.Lock() - self._manager = mp.Manager() - self._cache_dict = self._manager.dict() - self._cache_dir = cache_dir - - def __getstate__(self): - """The multiprocessing module can start one of three ways: spawn, fork, or forkserver. - The default mode is fork in Unix and spawn on Windows and macOS. - Therefore, the __getstate__ and __setstate__ are used to pickle/unpickle the state in spawn mode. - """ - data = self.__dict__.copy() - # remove the _manager to bypass the following pickle error - # TypeError: cannot pickle 'weakref' object - if hasattr(self, '_manager'): - del data['_manager'] - logger.debug('Cache.__getstate__: %s ' % data) - return data, file._REGISTERED_FILESYSTEMS - - def __setstate__(self, state): - """The default logging level in new process is warning. Only warning and error log can be written to - streams. - So, we need call use_absl_handler in the new process. - """ - from absl import logging - logging.use_absl_handler() - logger.debug('Cache.__setstate__ %s ' % (state,)) - data, file._REGISTERED_FILESYSTEMS = state - self.__dict__.update(data) - - def read(self, filename): - local_file = self.get_remote_cache(filename) - return read(local_file) - - @property - def cache_dir(self): - return self._cache_dir - - def get_remote_cache(self, filename): - """Try to get the local file in the cache. download it to local if it cannot be found in cache.""" - local_file = self.get_file(filename) - if local_file is None: - if is_local(filename): - return filename - else: - local_file = tempfile.NamedTemporaryFile( - 'w+t', suffix='.%s' % basename(filename), dir=self._cache_dir, delete=False) - local_file.close() - download_file(filename, local_file.name) - self.add_file(filename, local_file.name) - return local_file.name - - return local_file - - def get_file(self, filename): - return self._cache_dict.get(filename) - - def add_file(self, source_file, local_file): - with self._lock: - logger.debug('add local cache %s for file %s' % (local_file, source_file)) - self._cache_dict[source_file] = local_file - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_value, traceback): - self._manager.__exit__(exc_type, exc_value, traceback) diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/file.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/file.py deleted file mode 100644 index 9ef5d8485..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/file.py +++ /dev/null @@ -1,658 +0,0 @@ -""" -This file is forked from -https://github.com/tensorflow/tensorboard/blob/master/tensorboard/compat/tensorflow_stub/io/gfile.py. -The following functionalities are added after forking: -* Check Azure Blob & Google Cloud available or not -* get_filesystem changes to support Azure Blobs -* add BaseFileSystem and PathBase abstracted class for the filesystem. -* add download_file for each file system to cache the remote file to local temporary folder. -* add AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY for S3 file system which is not supported by tensorboard. -* add Azure blob file system -* add Google Cloud file system -* add specialized walk for Local file system, Azure Blob and Google Cloud to improve the walk performance. -* add global wrapper for abspath, basename, join, download_file. -* change the global walk wrapper to support specialized walk. -""" -import glob as py_glob -import os -import platform -import sys -import tempfile - -from .. import utils -from .base import BaseFileSystem, LocalPath, RemotePath, StatData -from .utils import as_bytes, as_text, parse_blob_url -from ..consts import MAX_FILE_SIZE, MAX_WINDOWS_PATH_LENGTH, MAX_LINUX_PATH_LENGTH - -logger = utils.get_logger() - -S3_ENABLED = True -try: - import boto3 - import botocore.exceptions -except ImportError: - S3_ENABLED = False - -BLOB_ENABLED = True -try: - from azure.storage.blob import ContainerClient -except ImportError: - BLOB_ENABLED = False - -GS_ENABLED = True -try: - # Imports the Google Cloud client library - from google.cloud import storage -except ImportError: - GS_ENABLED = False - - -_DEFAULT_BLOCK_SIZE = 16 * 1024 * 1024 - -# Registry of filesystems by prefix. -# -# Currently supports: -# * "s3://" URLs for S3 based on boto3 -# * "https://.blob.core.windows.net" for Azure Blob based on azure-storage-blob -# * "gs://" URLs for Google Cloud based on google-cloud-storage -# * Local filesystem when not match any prefix. -_REGISTERED_FILESYSTEMS = {} - - -def register_filesystem(prefix, filesystem): - if ":" in prefix: - raise ValueError("Filesystem prefix cannot contain a :") - _REGISTERED_FILESYSTEMS[prefix] = filesystem - - -def get_filesystem(filename): - """Return the registered filesystem for the given file.""" - prefix = "" - index = filename.find("://") - if index >= 0: - prefix = filename[:index] - if prefix.upper() in ('HTTP', 'HTTPS'): - root, _ = parse_blob_url(filename) - if root.lower().endswith('.blob.core.windows.net'): - fs = _REGISTERED_FILESYSTEMS.get('blob', None) - else: - raise ValueError("Not supported file system for prefix %s" % root) - else: - fs = _REGISTERED_FILESYSTEMS.get(prefix, None) - if fs is None: - raise ValueError("No recognized filesystem for prefix %s" % prefix) - return fs - - -class LocalFileSystem(LocalPath, BaseFileSystem): - def __init__(self): - pass - - @staticmethod - def islink(path): - return os.path.islink(path) - - def exists(self, filename): - return os.path.exists(filename) - - def read(self, file, binary_mode=False, size=None, continue_from=None): - mode = "rb" if binary_mode else "r" - encoding = None if binary_mode else "utf8" - if not self.exists(file): - raise FileNotFoundError(file) - - offset = None - if continue_from is not None: - offset = continue_from.get("opaque_offset", None) - with open(file, mode, encoding=encoding) as f: - if offset is not None: - f.seek(offset) - data = f.read(size) - # The new offset may not be `offset + len(data)`, due to decoding - # and newline translation. - # So, just measure it in whatever terms the underlying stream uses. - continuation_token = {"opaque_offset": f.tell()} - return (data, continuation_token) - - def write(self, filename, file_content, binary_mode=False): - """Writes string file contents to a file, overwriting any existing contents. - """ - self._write(filename, file_content, "wb" if binary_mode else "w") - - def support_append(self): - return True - - def append(self, filename, file_content, binary_mode=False): - """Append string file contents to a file. - """ - self._write(filename, file_content, "ab" if binary_mode else "a") - - def _write(self, filename, file_content, mode): - encoding = None if "b" in mode else "utf8" - with open(filename, mode, encoding=encoding) as f: - compatify = as_bytes if "b" in mode else as_text - f.write(compatify(file_content)) - - def glob(self, filename): - """Returns a list of files that match the given pattern(s).""" - if isinstance(filename, str): - return [ - matching_filename - for matching_filename in py_glob.glob(filename) - ] - else: - return [ - matching_filename - for single_filename in filename - for matching_filename in py_glob.glob(single_filename) - ] - - def isdir(self, dirname): - return os.path.isdir(dirname) - - def listdir(self, dirname): - entries = os.listdir(dirname) - entries = [item for item in entries] - return entries - - def makedirs(self, path): - os.makedirs(path, exist_ok=True) - - def stat(self, filename): - """Returns file statistics for a given path.""" - # NOTE: Size of the file is given by .st_size as returned from - # os.stat(), but we convert to .length - file_length = os.stat(filename).st_size - return StatData(file_length) - - def walk(self, top, topdown=True, onerror=None): - yield from os.walk(top, topdown, onerror, followlinks=True) - - -class S3FileSystem(RemotePath, BaseFileSystem): - """Provides filesystem access to S3.""" - - def __init__(self): - if not boto3: - raise ImportError("boto3 must be installed for S3 support.") - self._s3_endpoint = os.environ.get("S3_ENDPOINT", None) - access_key = os.environ.get("AWS_ACCESS_KEY_ID") - secret_key = os.environ.get("AWS_SECRET_ACCESS_KEY") - if access_key and secret_key: - boto3.setup_default_session( - aws_access_key_id=access_key, aws_secret_access_key=secret_key) - - def bucket_and_path(self, url): - """Split an S3-prefixed URL into bucket and path.""" - if url.startswith("s3://"): - url = url[len("s3://"):] - idx = url.index("/") - bucket = url[:idx] - path = url[(idx + 1):] - return bucket, path - - def exists(self, filename): - """Determines whether a path exists or not.""" - client = boto3.client("s3", endpoint_url=self._s3_endpoint) - bucket, path = self.bucket_and_path(filename) - r = client.list_objects(Bucket=bucket, Prefix=path, Delimiter="/") - if r.get("Contents") or r.get("CommonPrefixes"): - return True - return False - - def read(self, file, binary_mode=False, size=None, continue_from=None): - """Reads contents of a file to a string.""" - s3 = boto3.resource("s3", endpoint_url=self._s3_endpoint) - bucket, path = self.bucket_and_path(file) - args = {} - - # S3 use continuation tokens of the form: {byte_offset: number} - offset = 0 - if continue_from is not None: - offset = continue_from.get("byte_offset", 0) - - endpoint = "" - if size is not None: - endpoint = offset + size - - if offset != 0 or endpoint != "": - args["Range"] = "bytes={}-{}".format(offset, endpoint) - - logger.info("s3: starting reading file %s" % file) - try: - stream = s3.Object(bucket, path).get(**args)["Body"].read() - except botocore.exceptions.ClientError as exc: - if exc.response["Error"]["Code"] in ["416", "InvalidRange"]: - if size is not None: - # Asked for too much, so request just to the end. Do this - # in a second request so we don't check length in all cases. - client = boto3.client("s3", endpoint_url=self._s3_endpoint) - obj = client.head_object(Bucket=bucket, Key=path) - content_length = obj["ContentLength"] - endpoint = min(content_length, offset + size) - if offset == endpoint: - # Asked for no bytes, so just return empty - stream = b"" - else: - args["Range"] = "bytes={}-{}".format(offset, endpoint) - stream = s3.Object(bucket, path).get(**args)["Body"].read() - else: - raise - - logger.info("s3: file %s download is done, size is %d" % - (file, len(stream))) - # `stream` should contain raw bytes here (i.e., there has been neither decoding nor newline translation), - # so the byte offset increases by the expected amount. - continuation_token = {"byte_offset": (offset + len(stream))} - if binary_mode: - return (bytes(stream), continuation_token) - else: - return (stream.decode("utf-8"), continuation_token) - - def write(self, filename, file_content, binary_mode=False): - """Writes string file contents to a file.""" - client = boto3.client("s3", endpoint_url=self._s3_endpoint) - bucket, path = self.bucket_and_path(filename) - if binary_mode: - if not isinstance(file_content, bytes): - raise TypeError("File content type must be bytes") - else: - file_content = as_bytes(file_content) - client.put_object(Body=file_content, Bucket=bucket, Key=path) - - def download_file(self, file_to_download, file_to_save): - logger.info("s3: starting downloading file %s as %s" % - (file_to_download, file_to_save)) - s3 = boto3.resource("s3", endpoint_url=self._s3_endpoint) - bucket, path = self.bucket_and_path(file_to_download) - s3.Bucket(bucket).download_file(path, file_to_save) - logger.info("s3: file %s is downloaded as %s" % (file_to_download, file_to_save)) - return - - def glob(self, filename): - """Returns a list of files that match the given pattern(s).""" - # Only support prefix with * at the end and no ? in the string - star_i = filename.find("*") - quest_i = filename.find("?") - if quest_i >= 0: - raise NotImplementedError("{} not supported".format(filename)) - if star_i != len(filename) - 1: - return [] - - filename = filename[:-1] - client = boto3.client("s3", endpoint_url=self._s3_endpoint) - bucket, path = self.bucket_and_path(filename) - p = client.get_paginator("list_objects") - keys = [] - for r in p.paginate(Bucket=bucket, Prefix=path): - for content in r.get("Contents", []): - key = content["Key"][len(path):] - if key: - keys.append(filename + key) - return keys - - def isdir(self, dirname): - """Returns whether the path is a directory or not.""" - client = boto3.client("s3", endpoint_url=self._s3_endpoint) - bucket, path = self.bucket_and_path(dirname) - if not path.endswith("/"): - path += "/" - r = client.list_objects(Bucket=bucket, Prefix=path, Delimiter="/") - if r.get("Contents") or r.get("CommonPrefixes"): - return True - return False - - def listdir(self, dirname): - """Returns a list of entries contained within a directory.""" - client = boto3.client("s3", endpoint_url=self._s3_endpoint) - bucket, path = self.bucket_and_path(dirname) - p = client.get_paginator("list_objects") - if not path.endswith("/"): - path += "/" - keys = [] - for r in p.paginate(Bucket=bucket, Prefix=path, Delimiter="/"): - keys.extend( - prefixes["Prefix"][len(path): -1] for prefixes in r.get("CommonPrefixes", []) - ) - for content in r.get("Contents", []): - key = content["Key"][len(path):] - if key: - keys.append(key) - return keys - - def makedirs(self, path): - """Creates a directory and all parent/intermediate directories.""" - if not self.exists(path): - client = boto3.client("s3", endpoint_url=self._s3_endpoint) - bucket, dir_path = self.bucket_and_path(path) - if not dir_path.endswith("/"): - dir_path += "/" - client.put_object(Body="", Bucket=bucket, Key=dir_path) - - def stat(self, filename): - """Returns file statistics for a given path.""" - # Size of the file is given by ContentLength from S3 - client = boto3.client("s3", endpoint_url=self._s3_endpoint) - bucket, path = self.bucket_and_path(filename) - - obj = client.head_object(Bucket=bucket, Key=path) - return StatData(obj["ContentLength"]) - - -register_filesystem("", LocalFileSystem()) -if S3_ENABLED: - register_filesystem("s3", S3FileSystem()) - -if BLOB_ENABLED: - from .azureblob import AzureBlobSystem - register_filesystem("blob", AzureBlobSystem()) - -if GS_ENABLED: - from .gs import GoogleBlobSystem - register_filesystem("gs", GoogleBlobSystem()) - - -class File(object): - def __init__(self, filename, mode): - if mode not in ("r", "rb", "br", "w", "wb", "bw"): - raise ValueError("mode {} not supported by File".format(mode)) - self.filename = filename - self.fs = get_filesystem(self.filename) - self.fs_supports_append = self.fs.support_append() - self.buff = None - self.buff_chunk_size = _DEFAULT_BLOCK_SIZE - self.buff_offset = 0 - self.continuation_token = None - self.write_temp = None - self.write_started = False - self.binary_mode = "b" in mode - self.write_mode = "w" in mode - self.closed = False - - def __enter__(self): - return self - - def __exit__(self, *args): - self.close() - self.buff = None - self.buff_offset = 0 - self.continuation_token = None - - def __iter__(self): - return self - - def _read_buffer_to_offset(self, new_buff_offset): - old_buff_offset = self.buff_offset - read_size = min(len(self.buff), new_buff_offset) - old_buff_offset - self.buff_offset += read_size - return self.buff[old_buff_offset: old_buff_offset + read_size] - - def read(self, n=None): - """Reads contents of file to a string. - - Args: - n: int, number of bytes or characters to read, otherwise - read all the contents of the file - - Returns: - Subset of the contents of the file as a string or bytes. - """ - if self.write_mode: - raise OSError("File not opened in read mode") - - result = None - if self.buff and len(self.buff) > self.buff_offset: - # read from local buffer - if n is not None: - chunk = self._read_buffer_to_offset(self.buff_offset + n) - if len(chunk) == n: - return chunk - result = chunk - n -= len(chunk) - else: - # add all local buffer and update offsets - result = self._read_buffer_to_offset(len(self.buff)) - - # read from filesystem - read_size = max(self.buff_chunk_size, n) if n is not None else None - (self.buff, self.continuation_token) = self.fs.read( - self.filename, self.binary_mode, read_size, self.continuation_token) - self.buff_offset = 0 - - # add from filesystem - if n is not None: - chunk = self._read_buffer_to_offset(n) - else: - # add all local buffer and update offsets - chunk = self._read_buffer_to_offset(len(self.buff)) - result = result + chunk if result else chunk - - return result - - def write(self, file_content): - """Writes string file contents to file, clearing contents of the file - on first write and then appending on subsequent calls. - """ - if not self.write_mode: - raise OSError("File not opened in write mode") - - if self.closed: - raise OSError("File already closed") - - if self.fs_supports_append: - if not self.write_started: - # write the first chunk to truncate file if it already exists - self.fs.write(self.filename, file_content, self.binary_mode) - self.write_started = True - else: - # append the later chunks - self.fs.append(self.filename, file_content, self.binary_mode) - else: - # add to temp file, but wait for flush to write to final filesystem - if self.write_temp is None: - mode = "w+b" if self.binary_mode else "w+" - self.write_temp = tempfile.TemporaryFile(mode) - - compatify = as_bytes if self.binary_mode else as_text - self.write_temp.write(compatify(file_content)) - - def __next__(self): - line = None - while True: - if not self.buff: - # read one unit into the buffer - line = self.read(1) - if line and (line[-1] == "\n" or not self.buff): - return line - if not self.buff: - return None - else: - index = self.buff.find("\n", self.buff_offset) - if index != -1: - # include line until now plus newline - chunk = self.read(index + 1 - self.buff_offset) - line = line + chunk if line else chunk - return line - - # read one unit past end of buffer - chunk = self.read(len(self.buff) + 1 - self.buff_offset) - line = line + chunk if line else chunk - if line and (line[-1] == "\n" or not self.buff): - return line - if not self.buff: - return None - - def next(self): - return self.__next__() - - def flush(self): - if self.closed: - raise OSError("File already closed") - - if not self.fs_supports_append: - if self.write_temp is not None: - # read temp file from the beginning - self.write_temp.flush() - self.write_temp.seek(0) - chunk = self.write_temp.read() - if chunk is not None: - # write full contents and keep in temp file - self.fs.write(self.filename, chunk, self.binary_mode) - self.write_temp.seek(len(chunk)) - - def close(self): - self.flush() - if self.write_temp is not None: - self.write_temp.close() - self.write_temp = None - self.write_started = False - self.closed = True - - -def exists(filename): - """Determines whether a path exists or not.""" - return get_filesystem(filename).exists(filename) - - -def abspath(path): - return get_filesystem(path).abspath(path) - - -def basename(path): - return get_filesystem(path).basename(path) - - -def relpath(path, start): - return get_filesystem(path).relpath(path, start) - - -def join(path, *paths): - return get_filesystem(path).join(path, *paths) - - -def download_file(file_to_download, file_to_save): - """Downloads the file, returning a temporary path to the file after finishing.""" - get_filesystem(file_to_download).download_file(file_to_download, file_to_save) - - -def glob(filename): - """Returns a list of files that match the given pattern(s).""" - return get_filesystem(filename).glob(filename) - - -def is_local(path): - """Returns whether the path is a local path""" - return isinstance(get_filesystem(path), LocalFileSystem) - - -def isdir(dirname): - """Returns whether the path is a directory or not.""" - return get_filesystem(dirname).isdir(dirname) - - -def listdir(dirname): - """Returns a list of entries contained within a directory. - - The list is in arbitrary order. It does not contain the special entries "." - and "..". - """ - return get_filesystem(dirname).listdir(dirname) - - -def makedirs(path): - """Creates a directory and all parent/intermediate directories.""" - return get_filesystem(path).makedirs(path) - - -def walk(top, topdown=True, onerror=None): - """Recursive directory tree generator for directories. - - Args: - top: string, a Directory name - topdown: bool, Traverse pre order if True, post order if False. - onerror: optional handler for errors. Should be a function, it will be - called with the error as argument. Rethrowing the error aborts the walk. - - Errors that happen while listing directories are ignored. - - Yields: - Each yield is a 3-tuple: the pathname of a directory, followed by lists - of all its subdirectories and leaf files. - (dirname, [subdirname, subdirname, ...], [filename, filename, ...]) - as strings - """ - fs = get_filesystem(top) - if hasattr(fs, "walk"): - yield from fs.walk(top, topdown, onerror) - else: - top = fs.abspath(top) - listing = fs.listdir(top) - - files = [] - subdirs = [] - for item in listing: - full_path = fs.join(top, item) - if fs.isdir(full_path): - subdirs.append(item) - else: - files.append(item) - - here = (top, subdirs, files) - - if topdown: - yield here - - for subdir in subdirs: - joined_subdir = fs.join(top, subdir) - for subitem in walk(joined_subdir, topdown, onerror=onerror): - yield subitem - - if not topdown: - yield here - - -def stat(filename): - """Returns file statistics for a given path.""" - return get_filesystem(filename).stat(filename) - - -def read(file): - with File(file, 'rb') as f: - return f.read() - - -def is_link(path): - return LocalFileSystem.islink(path) - - -def is_too_big_file(filepath): - return stat(filepath).length > MAX_FILE_SIZE - - -def has_too_long_path(filepath): - if platform.system() == 'Windows' and len(filepath) > MAX_WINDOWS_PATH_LENGTH: - logger.warning( - f'The path length of the file "{filepath}" exceeds the maximum limit of {MAX_WINDOWS_PATH_LENGTH} ' - f'and will be skipped.') - return True - elif len(filepath) > MAX_WINDOWS_PATH_LENGTH: - logger.warning( - f'The path length of the file "{filepath}" exceeds the maximum limit of {MAX_LINUX_PATH_LENGTH} ' - f'and will be skipped.') - return True - else: - return False - - -def check_file_valid(filepath): - if is_link(filepath): - logger.warning(f'File "{filepath}" is a soft link and will be skipped.') - return False - if is_too_big_file(filepath): - logger.warning( - f'File "{filepath}" exceeds the maximum limit size of 500MB and will be skipped.') - return False - if has_too_long_path(filepath): - return False - return True - diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/gs.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/gs.py deleted file mode 100644 index 8596bce2b..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/gs.py +++ /dev/null @@ -1,126 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -from google.cloud import storage - -from .. import utils -from .base import BaseFileSystem, RemotePath, StatData - -logger = utils.get_logger() - - -class GoogleBlobSystem(RemotePath, BaseFileSystem): - """Provides filesystem access to S3.""" - - def __init__(self): - if not storage: - raise ImportError('google-cloud-storage must be installed for Google Cloud Blob support.') - - def exists(self, filename): - """Returns whether the path is a directory or not.""" - bucket_name, path = self.bucket_and_path(filename) - client = self.create_google_cloud_client() - bucket = client.bucket(bucket_name) - return bucket.blob(path).exists() - - def read(self, file, binary_mode=False, size=None, continue_from=None): - raise NotImplementedError - - def write(self, filename, file_content, binary_mode=False): - raise NotImplementedError - - def glob(self, filename): - raise NotImplementedError - - def download_file(self, file_to_download, file_to_save): - bucket_name, path = self.bucket_and_path(file_to_download) - client = self.create_google_cloud_client() - bucket = client.bucket(bucket_name) - blob = bucket.blob(path) - blob.download_to_filename(file_to_save) - - def isdir(self, dirname): - """Returns whether the path is a directory or not.""" - basename, parts = self.split_blob_path(dirname) - if basename is None or parts is None: - return False - if basename == '': - # root container case - return True - else: - return basename == parts[0] and len(parts) > 1 - - def listdir(self, dirname): - """Returns a list of entries contained within a directory.""" - bucket_name, path = self.bucket_and_path(dirname) - client = self.create_google_cloud_client() - blobs = client.list_blobs(bucket_name, prefix=path) - items = [] - for blob in blobs: - item = self.relpath(blob.name, path) - if items not in items: - items.append(item) - return items - - def makedirs(self, path): - """No need create directory since the upload blob will automatically create""" - pass - - def stat(self, filename): - """Returns file statistics for a given path.""" - bucket_name, path = self.bucket_and_path(filename) - client = self.create_google_cloud_client() - bucket = client.bucket(bucket_name) - blob = bucket.get_blob(path) - return StatData(blob.size) - - def walk(self, top, topdown=True, onerror=None): - bucket_name, path = self.bucket_and_path(top) - client = self.create_google_cloud_client() - blobs = client.list_blobs(bucket_name, prefix=path) - results = {} - for blob in blobs: - dirname, basename = self.split(blob.name) - dirname = 'gs://{}/{}'.format(bucket_name, dirname) - results.setdefault(dirname, []).append(basename) - for key, value in results.items(): - yield key, None, value - - def split_blob_path(self, blob_path): - """ Find the first blob start with blob_path, then get the relative path starting from dirname(blob_path). - Finally, split the relative path. - return (basename(blob_path), [relative splitted paths]) - If blob_path doesn't exist, return (None, None) - For example, - For blob gs://tests/test1/test2/test.txt - * If the blob_path is '', return ('', [test1, test2, test.txt]) - * If the blob_path is test1, return (test1, [test2, test.txt]) - * If the blob_path is test1/test2, return (test2, [test2, test.txt]) - * If the blob_path is test1/test2/test.txt, return (test.txt, [test.txt]) - """ - bucket_name, path = self.bucket_and_path(blob_path) - client = self.create_google_cloud_client() - blobs = client.list_blobs(bucket_name, prefix=path, delimiter=None, max_results=1) - - for blob in blobs: - dir_path, basename = self.split(path) - if dir_path: - rel_path = blob.name[len(dir_path):] - parts = rel_path.lstrip('/').split('/') - else: - parts = blob.name.split('/') - return (basename, parts) - return (None, None) - - def bucket_and_path(self, url): - """Split an S3-prefixed URL into bucket and path.""" - if url.startswith('gs://'): - url = url[len('gs://'):] - idx = url.index('/') - bucket = url[:idx] - path = url[(idx + 1):] - return bucket, path - - def create_google_cloud_client(self): - client = storage.Client.create_anonymous_client() - return client diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/utils.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/utils.py deleted file mode 100644 index 79e9afc39..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/io/utils.py +++ /dev/null @@ -1,72 +0,0 @@ -def as_str_any(value): - """Converts to `str` as `str(value)`, but use `as_str` for `bytes`. - - Args: - value: A object that can be converted to `str`. - - Returns: - A `str` object. - """ - if isinstance(value, bytes): - return as_str(value) - else: - return str(value) - - -def as_text(bytes_or_text, encoding="utf-8"): - """Returns the given argument as a unicode string. - - Args: - bytes_or_text: A `bytes`, `str`, or `unicode` object. - encoding: A string indicating the charset for decoding unicode. - - Returns: - A `str` (Python 3) object. - - Raises: - TypeError: If `bytes_or_text` is not a binary or unicode string. - """ - if isinstance(bytes_or_text, str): - return bytes_or_text - elif isinstance(bytes_or_text, bytes): - return bytes_or_text.decode(encoding) - else: - raise TypeError( - "Expected binary or unicode string, got %r" % bytes_or_text - ) - - -# Convert an object to a `str` in both Python 2 and 3. -as_str = as_text - - -def as_bytes(bytes_or_text, encoding="utf-8"): - """Converts either bytes or unicode to `bytes`, using utf-8 encoding for - text. - - Args: - bytes_or_text: A `bytes`, `str`, or `unicode` object. - encoding: A string indicating the charset for encoding unicode. - - Returns: - A `bytes` object. - - Raises: - TypeError: If `bytes_or_text` is not a binary or unicode string. - """ - if isinstance(bytes_or_text, str): - return bytes_or_text.encode(encoding) - elif isinstance(bytes_or_text, bytes): - return bytes_or_text - else: - raise TypeError( - "Expected binary or unicode string, got %r" % (bytes_or_text,) - ) - - -def parse_blob_url(url): - from urllib import parse - url_path = parse.urlparse(url) - - parts = url_path.path.lstrip('/').split('/', 1) - return url_path.netloc, tuple(parts) diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/multiprocessing.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/multiprocessing.py deleted file mode 100644 index b71773505..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/multiprocessing.py +++ /dev/null @@ -1,13 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -import multiprocessing as mp -import os - - -def get_start_method(): - return os.getenv('TORCH_PROFILER_START_METHOD', 'spawn') - - -__all__ = [x for x in dir(mp.get_context(get_start_method())) if not x.startswith('_')] -globals().update((name, getattr(mp.get_context(get_start_method()), name)) for name in __all__) diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/plugin.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/plugin.py deleted file mode 100644 index 2651f87c0..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/plugin.py +++ /dev/null @@ -1,651 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. -# Copyright(c) 2023 Huawei Technologies. -# All rights reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Modifications: Add visualization of PyTorch Ascend profiling. -# -------------------------------------------------------------------------- -import atexit -import copy -import gzip -import json -import os -import shutil -import sys -import tempfile -import threading -import time -from collections import OrderedDict -from queue import Queue - -import werkzeug -from tensorboard.plugins import base_plugin -from werkzeug import exceptions, wrappers - -from . import consts, io, utils -from .profiler import RunLoader -from .run import DistributedRunProfile, Run, RunProfile - -logger = utils.get_logger() - - -def decorate_headers(func): - def wrapper(*args, **kwargs): - headers = func(*args, **kwargs) - headers.extend(TorchProfilerPlugin.headers) - return headers - - return wrapper - - -exceptions.HTTPException.get_headers = decorate_headers(exceptions.HTTPException.get_headers) - - -class TorchProfilerPlugin(base_plugin.TBPlugin): - """TensorBoard plugin for Torch Profiler.""" - - plugin_name = consts.PLUGIN_NAME - headers = [('X-Content-Type-Options', 'nosniff')] - CONTENT_TYPE = 'application/json' - - def __init__(self, context: base_plugin.TBContext): - """Instantiates TorchProfilerPlugin. - Args: - context: A base_plugin.TBContext instance. - """ - super(TorchProfilerPlugin, self).__init__(context) - self.logdir = io.abspath(context.logdir.rstrip('/')) - - self._load_lock = threading.Lock() - self._load_threads = [] - - self._runs = OrderedDict() - self._runs_lock = threading.Lock() - - self._temp_dir = tempfile.mkdtemp() - self._cache = io.Cache(self._temp_dir) - self._queue = Queue() - self._gpu_metrics_file_dict = {} - monitor_runs = threading.Thread(target=self._monitor_runs, name='monitor_runs', daemon=True) - monitor_runs.start() - - receive_runs = threading.Thread(target=self._receive_runs, name='receive_runs', daemon=True) - receive_runs.start() - - self.diff_run_cache = {} - self.diff_run_flatten_cache = {} - - def clean(): - logger.debug('starting cleanup...') - self._cache.__exit__(*sys.exc_info()) - logger.debug('remove temporary cache directory %s' % self._temp_dir) - shutil.rmtree(self._temp_dir) - - atexit.register(clean) - - def is_active(self): - """Returns whether there is relevant data for the plugin to process. - If there is no any pending run, hide the plugin - """ - if self.is_loading: - return True - else: - with self._runs_lock: - return bool(self._runs) - - def get_plugin_apps(self): - return { - '/index.js': self.static_file_route, - '/index.html': self.static_file_route, - '/trace_viewer_full.html': self.static_file_route, - '/trace_embedding.html': self.static_file_route, - '/trace_script.js': self.static_file_route, - '/runs': self.runs_route, - '/views': self.views_route, - '/workers': self.workers_route, - '/spans': self.spans_route, - '/overview': self.overview_route, - '/operation': self.operation_pie_route, - '/operation/table': self.operation_table_route, - '/operation/stack': self.operation_stack_route, - '/kernel': self.kernel_pie_route, - '/kernel/table': self.kernel_table_route, - '/kernel/tc_pie': self.kernel_tc_route, - '/trace': self.trace_route, - '/distributed/gpuinfo': self.dist_gpu_info_route, - '/distributed/overlap': self.comm_overlap_route, - '/distributed/waittime': self.comm_wait_route, - '/distributed/commops': self.comm_ops_route, - '/memory': self.memory_route, - '/memory_curve': self.memory_curve_route, - '/memory_events': self.memory_events_route, - '/module': self.module_route, - '/tree': self.op_tree_route, - '/diff': self.diff_run_route, - '/diffnode': self.diff_run_node_route, - } - - def frontend_metadata(self): - return base_plugin.FrontendMetadata(es_module_path='/index.js', disable_reload=True) - - @wrappers.Request.application - def runs_route(self, request: werkzeug.Request): - with self._runs_lock: - names = list(self._runs.keys()) - - data = { - 'runs': names, - 'loading': self.is_loading - } - return self.respond_as_json(data) - - @wrappers.Request.application - def views_route(self, request: werkzeug.Request): - name = request.args.get('run') - self._validate(run=name) - run = self._get_run(name) - views_list = [view.display_name for view in run.views] - data = { - 'device_target': run.device_target, - 'views': views_list - } - return self.respond_as_json(data) - - @wrappers.Request.application - def workers_route(self, request: werkzeug.Request): - name = request.args.get('run') - view = request.args.get('view') - self._validate(run=name, view=view) - run = self._get_run(name) - # Required datas are in file 'trace_view.json' in Ascend. - if run.device_target == 'Ascend' and view == 'Overview': - view = 'Trace' - return self.respond_as_json(run.get_workers(view)) - - @wrappers.Request.application - def spans_route(self, request: werkzeug.Request): - name = request.args.get('run') - worker = request.args.get('worker') - self._validate(run=name, worker=worker) - run = self._get_run(name) - return self.respond_as_json(run.get_spans(worker)) - - @wrappers.Request.application - def overview_route(self, request: werkzeug.Request): - profile = self._get_profile_for_request(request) - name = request.args.get('run') - run = self._get_run(name) - data = profile.overview - is_gpu_used = profile.has_runtime or profile.has_kernel or profile.has_memcpy_or_memset - normal_workers = [worker for worker in run.workers if worker != 'All'] - data['environments'] = [{'title': 'Number of Worker(s)', 'value': str(len(normal_workers))}, - {'title': 'Device Type', 'value': 'GPU' if is_gpu_used else 'CPU'}] - if profile.gpu_summary and profile.gpu_tooltip: - data['gpu_metrics'] = {'title': 'GPU Summary', - 'data': profile.gpu_summary, - 'tooltip': profile.gpu_tooltip} - - return self.respond_as_json(data) - - @wrappers.Request.application - def operation_pie_route(self, request: werkzeug.Request): - profile = self._get_profile_for_request(request) - - group_by = request.args.get('group_by') - if group_by == 'OperationAndInputShape': - return self.respond_as_json(profile.operation_pie_by_name_input) - else: - return self.respond_as_json(profile.operation_pie_by_name) - - @wrappers.Request.application - def operation_table_route(self, request: werkzeug.Request): - profile = self._get_profile_for_request(request) - - group_by = request.args.get('group_by') - if group_by == 'OperationAndInputShape': - return self.respond_as_json(profile.operation_table_by_name_input) - else: - return self.respond_as_json(profile.operation_table_by_name) - - @wrappers.Request.application - def operation_stack_route(self, request: werkzeug.Request): - profile = self._get_profile_for_request(request) - - op_name = request.args.get('op_name') - self._validate(op_name=op_name) - group_by = request.args.get('group_by') - input_shape = request.args.get('input_shape') - if group_by == 'OperationAndInputShape': - return self.respond_as_json(profile.operation_stack_by_name_input[str(op_name) + '###' + str(input_shape)]) - else: - return self.respond_as_json(profile.operation_stack_by_name[str(op_name)]) - - @wrappers.Request.application - def kernel_pie_route(self, request: werkzeug.Request): - profile = self._get_profile_for_request(request) - - return self.respond_as_json(profile.kernel_pie) - - @wrappers.Request.application - def kernel_table_route(self, request: werkzeug.Request): - profile = self._get_profile_for_request(request) - - group_by = request.args.get('group_by') - if group_by == 'Kernel': - return self.respond_as_json(profile.kernel_table) - else: - return self.respond_as_json(profile.kernel_op_table) - - @wrappers.Request.application - def kernel_tc_route(self, request: werkzeug.Request): - profile = self._get_profile_for_request(request) - - return self.respond_as_json(profile.tc_pie) - - @wrappers.Request.application - def trace_route(self, request: werkzeug.Request): - profile = self._get_profile_for_request(request) - - if not profile.has_kernel: # Pure CPU. - raw_data = self._cache.read(profile.trace_file_path) - if not profile.trace_file_path.endswith('.gz'): - raw_data = gzip.compress(raw_data, 1) - else: - file_with_gpu_metrics = self._gpu_metrics_file_dict.get(profile.trace_file_path) - if file_with_gpu_metrics: - raw_data = io.read(file_with_gpu_metrics) - else: - raw_data = self._cache.read(profile.trace_file_path) - if not profile.trace_file_path.endswith('.gz'): - raw_data = gzip.compress(raw_data, 1) - - # write the data to temp file - fp = tempfile.NamedTemporaryFile('w+b', suffix='.json.gz', dir=self._temp_dir, delete=False) - fp.close() - # Already compressed, no need to gzip.open - with open(fp.name, mode='wb') as file: - file.write(raw_data) - self._gpu_metrics_file_dict[profile.trace_file_path] = fp.name - - headers = [('Content-Encoding', 'gzip')] - headers.extend(TorchProfilerPlugin.headers) - return werkzeug.Response(raw_data, content_type=TorchProfilerPlugin.CONTENT_TYPE, headers=headers) - - @wrappers.Request.application - def dist_gpu_info_route(self, request: werkzeug.Request): - profile = self._get_distributed_profile_for_request(request) - return self.respond_as_json(profile.gpu_info) - - @wrappers.Request.application - def comm_overlap_route(self, request: werkzeug.Request): - profile = self._get_distributed_profile_for_request(request) - return self.respond_as_json(profile.steps_to_overlap) - - @wrappers.Request.application - def comm_wait_route(self, request: werkzeug.Request): - profile = self._get_distributed_profile_for_request(request) - return self.respond_as_json(profile.steps_to_wait) - - @wrappers.Request.application - def comm_ops_route(self, request: werkzeug.Request): - profile = self._get_distributed_profile_for_request(request) - return self.respond_as_json(profile.comm_ops) - - @wrappers.Request.application - def memory_route(self, request: werkzeug.Request): - profile = self._get_profile_for_request(request) - start_ts = request.args.get('start_ts', None) - end_ts = request.args.get('end_ts', None) - memory_metric = request.args.get('memory_metric', 'KB') - if start_ts is not None: - start_ts = int(start_ts) - if end_ts is not None: - end_ts = int(end_ts) - - return self.respond_as_json( - profile.get_memory_stats(start_ts=start_ts, end_ts=end_ts, memory_metric=memory_metric), True) - - @wrappers.Request.application - def memory_curve_route(self, request: werkzeug.Request): - profile = self._get_profile_for_request(request) - if profile.device_target == 'Ascend': - return self.respond_as_json(profile.memory_all_curve, True) - else: - time_metric = request.args.get('time_metric', 'ms') - memory_metric = request.args.get('memory_metric', 'MB') - return self.respond_as_json( - profile.get_memory_curve(time_metric=time_metric, memory_metric=memory_metric), True) - - @wrappers.Request.application - def memory_events_route(self, request: werkzeug.Request): - profile = self._get_profile_for_request(request) - start_ts = request.args.get('start_ts', None) - end_ts = request.args.get('end_ts', None) - time_metric = request.args.get('time_metric', 'ms') - memory_metric = request.args.get('memory_metric', 'KB') - if profile.device_target == 'Ascend': - temp_memory_events = copy.deepcopy(profile.memory_events) - operator_memory_events = temp_memory_events['operator']['rows'] - if start_ts is not None: - start_ts = float(start_ts) - if end_ts is not None: - end_ts = float(end_ts) - for key in operator_memory_events: - if start_ts is not None and end_ts is not None: - operator_memory_events[key] = [ - i - for i in operator_memory_events[key] - if i[2] and start_ts <= i[2] <= end_ts - ] - elif start_ts is not None: - operator_memory_events[key] = [ - i - for i in operator_memory_events[key] - if i[2] and start_ts <= i[2] - ] - elif end_ts is not None: - operator_memory_events[key] = [ - i - for i in operator_memory_events[key] - if i[2] and end_ts >= i[2] - ] - return self.respond_as_json(temp_memory_events, True) - else: - if start_ts is not None: - start_ts = int(start_ts) - if end_ts is not None: - end_ts = int(end_ts) - return self.respond_as_json( - profile.get_memory_events(start_ts, end_ts, time_metric=time_metric, - memory_metric=memory_metric), True) - - @wrappers.Request.application - def module_route(self, request: werkzeug.Request): - profile = self._get_profile_for_request(request) - content = profile.get_module_view() - if content: - return self.respond_as_json(content, True) - else: - name = request.args.get('run') - worker = request.args.get('worker') - span = request.args.get('span') - raise exceptions.NotFound('could not find the run for %s/%s/%s' % (name, worker, span)) - - @wrappers.Request.application - def op_tree_route(self, request: werkzeug.Request): - profile = self._get_profile_for_request(request) - content = profile.get_operator_tree() - return self.respond_as_json(content, True) - - @wrappers.Request.application - def diff_run_route(self, request: werkzeug.Request): - base, exp = self.get_diff_runs(request) - diff_stats = self.get_diff_status(base, exp) - content = diff_stats.get_diff_tree_summary() - return self.respond_as_json(content, True) - - @wrappers.Request.application - def diff_run_node_route(self, request: werkzeug.Request): - base, exp = self.get_diff_runs(request) - path = request.args.get('path', '0') - stats_dict = self.get_diff_stats_dict(base, exp) - diff_stat = stats_dict.get(path) - if diff_stat is None: - raise exceptions.NotFound('could not find diff run for %s' % (path)) - content = diff_stat.get_diff_node_summary(path) - return self.respond_as_json(content, True) - - @wrappers.Request.application - def static_file_route(self, request: werkzeug.Request): - filename = os.path.basename(request.path) - extension = os.path.splitext(filename)[1] - if extension == '.html': - mimetype = 'text/html' - elif extension == '.css': - mimetype = 'text/css' - elif extension == '.js': - mimetype = 'application/javascript' - else: - mimetype = 'application/octet-stream' - filepath = os.path.join(os.path.dirname(__file__), 'static', filename) - try: - with open(filepath, 'rb') as infile: - contents = infile.read() - except IOError as e: - raise exceptions.NotFound('404 Not Found') from e - return werkzeug.Response( - contents, content_type=mimetype, headers=TorchProfilerPlugin.headers - ) - - @staticmethod - def respond_as_json(obj, compress: bool = False): - content = json.dumps(obj) - headers = [] - headers.extend(TorchProfilerPlugin.headers) - if compress: - content_bytes = content.encode('utf-8') - raw_data = gzip.compress(content_bytes, 1) - headers.append(('Content-Encoding', 'gzip')) - return werkzeug.Response(raw_data, content_type=TorchProfilerPlugin.CONTENT_TYPE, headers=headers) - else: - return werkzeug.Response(content, content_type=TorchProfilerPlugin.CONTENT_TYPE, headers=headers) - - @property - def is_loading(self): - with self._load_lock: - return bool(self._load_threads) - - def get_diff_runs(self, request: werkzeug.Request): - name = request.args.get('run') - span = request.args.get('span') - worker = request.args.get('worker') - self._validate(run=name, worker=worker, span=span) - base = self._get_profile(name, worker, span) - - exp_name = request.args.get('exp_run') - exp_span = request.args.get('exp_span') - exp_worker = request.args.get('exp_worker') - self._validate(exp_run=exp_name, exp_worker=exp_worker, exp_span=exp_span) - exp = self._get_profile(exp_name, exp_worker, exp_span) - - return base, exp - - def get_diff_status(self, base: RunProfile, exp: RunProfile): - key = (base, exp) - diff_stats = self.diff_run_cache.get(key) - if diff_stats is None: - diff_stats = base.compare_run(exp) - self.diff_run_cache[key] = diff_stats - - return diff_stats - - def get_diff_stats_dict(self, base: RunProfile, exp: RunProfile): - key = (base, exp) - stats_dict = self.diff_run_flatten_cache.get(key) - if stats_dict is None: - diff_stats = self.get_diff_status(base, exp) - stats_dict = diff_stats.flatten_diff_tree() - self.diff_run_flatten_cache[key] = stats_dict - return stats_dict - - def _monitor_runs(self): - logger.info('Monitor runs begin') - touched = set() - try: - while True: - try: - logger.debug('Scan run dir') - run_dirs = self._get_run_dirs() - - has_dir = False - # Assume no deletion on run directories, trigger async load if find a new run - for run_dir in run_dirs: - has_dir = True - run_device = f'{run_dir["name"]}_{run_dir["device_target"]}' - if run_device not in touched: - touched.add(run_device) - logger.info('Find run directory %s', run_dir['name']) - # Use threading to avoid UI stall and reduce data parsing time - t = threading.Thread(target=self._load_run, args=(run_dir,)) - t.start() - with self._load_lock: - self._load_threads.append(t) - - if not has_dir: - # handle directory removed case. - self._runs.clear() - except Exception as ex: - logger.warning('Failed to scan runs. Exception=%s', ex, exc_info=True) - - time.sleep(consts.MONITOR_RUN_REFRESH_INTERNAL_IN_SECONDS) - except Exception: - logger.exception('Failed to start monitor_runs') - - def _receive_runs(self): - while True: - run: Run = self._queue.get() - if run is None: - continue - - logger.info('Add run %s', run.name) - with self._runs_lock: - is_new = run.name not in self._runs - self._runs[run.name] = run - if is_new: - self._runs = OrderedDict(sorted(self._runs.items())) - - def _get_run_dirs(self): - """Scan logdir, find PyTorch Profiler run directories. - A directory is considered to be a gpu run if it contains 1 or more *.pt.trace.json[.gz]. - E.g. there are 2 runs: run1, run2 - /run1 - /[worker1].pt.trace.json.gz - /[worker2].pt.trace.json.gz - /run2 - /[worker1].pt.trace.json - A directory is considered to be an ascend run if it satisfies the following two conditions: - 1.At least one subdirectory with the name in this format: {worker}_{span}_ascend_pt. - 2.The subdirectory in condition 1 has a 'ASCEND_PROFILER_OUTPUT' subdirectory which - contains at least one of these 4 kind of files: - [ - 'trace_view.json(.gz)', - 'kernel_details.csv', - 'operator_details.csv', - 'operator_memory.csv' & 'memory_record.csv' - ] - E.g. there are 2 runs: run1, run2 - /run1 - /[worker1]_[span1]_ascend_pt - /ASCEND_PROFILER_OUTPUT - /trace_view.json - /kernel_details.csv - /operator_details.csv - /operator_memory.csv - /memory_record.csv - /[worker2]_[span1]_ascend_pt - /ASCEND_PROFILER_OUTPUT - /trace_view.json - /operator_details.csv - /run2 - /[worker1]_[span1]_ascend_pt - /ASCEND_PROFILER_OUTPUT - /memory_record.csv - /operator_memory.csv - """ - for root, subdirs, files in io.walk(self.logdir): - for subdir in subdirs: - if str(subdir) == 'ASCEND_PROFILER_OUTPUT': - match = consts.WORKER_SPAN_PATTERN.match(io.basename(root)) - if match is not None: - run_name = io.abspath(io.join(root, '..')) - yield {'name': run_name, 'device_target': 'Ascend'} - break - - for file in files: - if utils.is_gpu_chrome_trace_file(file): - yield {'name': root, 'device_target': 'GPU'} - break - - def _load_run(self, run_dir): - try: - name = self._get_run_name(run_dir['name']) - logger.info('Load run %s', name) - # Currently, assume run data is immutable, so just load once - loader = RunLoader(name, run_dir['name'], self._cache, run_dir['device_target']) - run = loader.load() - if run.profiles: - self._queue.put(run) - logger.info('Run %s loaded', name) - else: - logger.warning(f'Run {name} skipped') - except Exception as ex: - logger.warning('Failed to load run %s. Exception=%s', ex, name, exc_info=True) - - t = threading.current_thread() - with self._load_lock: - try: - self._load_threads.remove(t) - except ValueError: - logger.warning('could not find the thread {}'.format(run_dir)) - - def _get_run(self, name) -> Run: - with self._runs_lock: - run = self._runs.get(name, None) - - if run is None: - raise exceptions.NotFound('could not find the run for %s' % (name)) - - return run - - def _get_run_name(self, run_dir): - logdir = io.abspath(self.logdir) - if run_dir == logdir: - name = io.basename(run_dir) - else: - name = io.relpath(run_dir, logdir) - return name - - def _get_profile_for_request(self, request: werkzeug.Request) -> RunProfile: - name = request.args.get('run') - span = request.args.get('span') - worker = request.args.get('worker') - self._validate(run=name, worker=worker) - profile = self._get_profile(name, worker, span) - if not isinstance(profile, RunProfile): - raise exceptions.BadRequest('Get an unexpected profile type %s for %s/%s' % (type(profile), name, worker)) - - return profile - - def _get_distributed_profile_for_request(self, request: werkzeug.Request) -> DistributedRunProfile: - name = request.args.get('run') - span = request.args.get('span') - self._validate(run=name) - profile = self._get_profile(name, 'All', span) - if not isinstance(profile, DistributedRunProfile): - raise exceptions.BadRequest('Get an unexpected distributed profile type %s for %s' % (type(profile), name)) - - return profile - - def _get_profile(self, name, worker, span): - run = self._get_run(name) - profile = run.get_profile(worker, span) - if profile is None: - raise exceptions.NotFound('could not find the profile for %s/%s/%s ' % (name, worker, span)) - return profile - - def _validate(self, **kwargs): - for name, v in kwargs.items(): - if v is None: - raise exceptions.BadRequest('Must specify %s in request url' % (name)) diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/__init__.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/__init__.py deleted file mode 100644 index 59a0e6415..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# -------------------------------------------------------------------------- -__all__ = ['RunLoader'] - -from .loader import RunLoader diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/communication.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/communication.py deleted file mode 100644 index 0afcdb11a..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/communication.py +++ /dev/null @@ -1,95 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -from typing import Dict, List, Tuple - -from .. import utils -from .node import CommunicationNode -from .range_utils import get_ranges_sum, merge_ranges - -logger = utils.get_logger() - - -def generate_communication_nodes( - communication_data: Dict[int, CommunicationNode], - steps: List[Tuple[int, int]], - steps_names: List[str]): - comm_node_list: List[CommunicationNode] = [] - - # Sort the communication node according the start time, this is for correlating communication node between workers - for comm_node in communication_data.values(): - comm_node.kernel_ranges.sort(key=lambda x: (x[0], -x[1])) - comm_node_list.append(comm_node) - comm_node_list.sort(key=lambda x: (x.start_time, -x.end_time)) - - # Find each communication node belong to which step - index = 0 - valid_steps = len(steps) - for comm_node in comm_node_list: - while index < valid_steps: - if comm_node.start_time >= steps[index][0] and comm_node.end_time <= steps[index][1]: - comm_node.step_name = steps_names[index] - break - elif comm_node.start_time >= steps[index][1]: - index += 1 - else: - logger.error('Found a communication op not belong to any step.') - break - if index >= valid_steps: - logger.error('Found communication ops not belong to any step. ') - break - - return comm_node_list - - -def analyze_communication_nodes(comm_node_list: List[CommunicationNode])\ - -> Tuple[Dict[str, Tuple[int, int]], Dict[str, List[int]]]: - step_comm_stats: Dict[str, Tuple[int, int]] = {} - total_comm_stats: Dict[str, Tuple[int, int, List, List]] = {} - - step_to_comm_ranges: Dict[str, Tuple[List, List]] = {} - for comm_node in comm_node_list: - if comm_node.step_name not in step_to_comm_ranges: - step_to_comm_ranges[comm_node.step_name] = [[], []] - step_to_comm_ranges[comm_node.step_name][0].extend(comm_node.kernel_ranges) - step_to_comm_ranges[comm_node.step_name][1].extend(comm_node.real_time_ranges) - - if comm_node.name not in total_comm_stats: - total_comm_stats[comm_node.name] = [0, 0, [], []] - total_comm_stats[comm_node.name][0] += 1 - bytes_one_value = 0 - if comm_node.input_shape: - for i, shape in enumerate(comm_node.input_shape): - if comm_node.input_type[i] == 'long int': - bytes_one_value = 8 - elif comm_node.input_type[i] == 'float': - bytes_one_value = 4 - elif comm_node.input_type[i] == 'int': - bytes_one_value = 4 - elif comm_node.input_type[i] == 'c10::Half': - bytes_one_value = 2 - elif comm_node.input_type[i] == 'c10:BFloat16': - bytes_one_value = 2 - elif comm_node.input_type[i] == 'unsigned char': - bytes_one_value = 1 - else: - logger.warning('Found an unknown tensor type: {}'.format(comm_node.input_type[i])) - bytes_one_value = 0 - total_size = 1 - for size in shape: - total_size *= size - total_comm_stats[comm_node.name][1] += total_size * bytes_one_value - total_comm_stats[comm_node.name][2].extend(comm_node.kernel_ranges) - total_comm_stats[comm_node.name][3].extend(comm_node.real_time_ranges) - - for step, comm_ranges in step_to_comm_ranges.items(): - step_comm_stats[step] = [ - get_ranges_sum(merge_ranges(comm_ranges[0])), - get_ranges_sum(merge_ranges(comm_ranges[1])) - ] - - for _, stats in total_comm_stats.items(): - stats[2] = get_ranges_sum(merge_ranges(stats[2])) - stats[3] = get_ranges_sum(merge_ranges(stats[3])) - - return step_comm_stats, total_comm_stats diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/data.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/data.py deleted file mode 100644 index 00544e635..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/data.py +++ /dev/null @@ -1,488 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# -# Copyright(c) 2023 Huawei Technologies. -# All rights reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Modifications: Add visualization of PyTorch Ascend profiling. -# -------------------------------------------------------------------------- -import gzip -import io as sysio -import json -import math -import os.path -import re -import tempfile -from json.decoder import JSONDecodeError -from typing import Dict, List, Optional -from configparser import ConfigParser - -from .op_tree import OpTreeBuilder -from .. import io, utils -from ..consts import InputFilesType, INPUT_FILE_LIST -from ..utils import href -from . import trace -from .communication import analyze_communication_nodes -from .event_parser import CommLibTypes, EventParser, ProfileRole -from .gpu_metrics_parser import GPUMetricsParser -from .kernel_parser import KernelParser -from .memory_parser import MemoryParser, MemorySnapshot -from .node import OperatorNode -from .op_agg import ModuleAggregator -from .overall_parser import OverallParser -from .tensor_cores_parser import TensorCoresParser -from .trace import BaseEvent, EventTypes, MemoryEvent - -logger = utils.get_logger() -config = ConfigParser() -config_path = os.path.join(os.getcwd(), 'torch_tb_profiler', 'config', '../config/config.ini') -config.read(config_path) - - -class RunProfileData(object): - def __init__(self, worker: str, span: str, trace_json: Dict): - self.worker = worker - self.span = span - - # metadatas - self.is_pytorch_lightning = trace_json.get('Framework', None) == 'pytorch-lightning' - self.data_schema_version = trace_json.get('schemaVersion', None) - self.distributed_info = trace_json.get('distributedInfo', None) - self.device_props = trace_json.get('deviceProperties', None) - - self.profiler_start_ts = float('inf') - self.events: List[BaseEvent] = [] - - trace_body = trace_json.get('traceEvents', None) - fwd_bwd_events = [] - if trace_body is not None: - for data in trace_body: - if data.get('ts') is not None: - try: - self.profiler_start_ts = min(self.profiler_start_ts, float(data.get('ts'))) - except ValueError: - logger.warning(f'The operator {data.get("name")} has wrong "ts" format, expected a number.') - if data.get('cat') == 'forward_backward': - fwd_bwd_events.append(data) - else: - event = trace.create_event(data, self.is_pytorch_lightning) - if event is not None: - event.ts = float(event.ts) - self.events.append(event) - - self.events.sort(key=lambda e: e.ts) - self.forward_backward_events = trace.create_association_events(fwd_bwd_events) - - self.trace_file_path: str = None - self.kernel_file_path: str = None - self.kernel_statistic_path: str = None - - # Event Parser results - self.tid2tree: Dict[int, OperatorNode] = None - self.pl_tid2tree: Dict[int, OperatorNode] = None - self.used_devices = [] - self.use_dp: bool = False - self.use_ddp: bool = False - self.comm_lib = None - self.has_runtime: bool = False - self.has_kernel: bool = True - self.has_trace: bool = True - self.has_communication: bool = False - self.has_memcpy_or_memset: bool = False - self.role_ranges = None - self.steps_costs = None - self.steps_names = None - self.avg_costs = None - self.has_memory: bool = False - self.has_operator_view: bool = False - - # GPU parser - self.gpu_metrics_parser: GPUMetricsParser = None - - # Operator aggregator - self.op_list_groupby_name = None - self.op_list_groupby_name_input = None - self.stack_lists_group_by_name = None - self.stack_lists_group_by_name_input = None - self.kernel_list_groupby_name_op = None - - # Kernel and Tensor Core - self.kernel_stat = None - self.tc_ratio = None - self.tc_eligible_ops_kernel_ratio = None - self.tc_used_ratio = None # If it's a pure CPU run, then this keeps as None. - - # Communicator - self.comm_node_list = None - self.comm_overlap_costs = None - self.memory_snapshot: Optional[MemorySnapshot] = None - - # recommendation based on analysis result. - self.recommendations = [] - - # npu memory data - self.memory_operator_path: str = None - self.memory_curve_path: str = None - self.memory_component_path: str = None - - # npu operator data - self.operator_path: str = None - - # npu communication data - self.distributed_csv_path: str = None - self.communication_json_path: str = None - - self.step_to_overlap = None - self.step_to_wait = None - self.comm_op = None - - @staticmethod - def parse_gpu(worker, span, path, cache_dir): - trace_path, trace_json = RunProfileData._preprocess_file(path, cache_dir, 'GPU') - if not trace_json: - return None - - profile = RunProfileData.from_json(worker, span, trace_json) - profile.trace_file_path = trace_path - return profile - - @staticmethod - def parse_npu(worker, span, path, cache_dir): - trace_json = {} - trace_path = path - has_trace = False - has_kernel = False - has_memory_record = False - has_memory_operator = False - has_communication_overlap = False - has_communication_wait_ops = False - - for file in io.listdir(path): - if utils.is_npu_trace_path(file) and io.check_file_valid(io.join(path, file)): - has_trace = True - trace_file = io.join(path, file) - trace_path, trace_json = RunProfileData._preprocess_file(trace_file, cache_dir, 'Ascend') - break - - profile = RunProfileData(worker, span, trace_json) - with utils.timing('EventParser.parse'): - parser = EventParser() - with utils.timing('EventParser: parse nodes'): - tid2list, tid2zero_rt_list, staled_device_nodes, _ = parser.parse_nodes(profile.events) - - with utils.timing('EventParser: build operator tree'): - builder = OpTreeBuilder() - profile.tid2tree = builder.build_tree(tid2list, tid2zero_rt_list, staled_device_nodes, - fwd_bwd_map=profile.forward_backward_events, is_ascend=True) - profile.trace_file_path = trace_path - profile.has_trace = has_trace - if math.isinf(profile.profiler_start_ts): - profile.profiler_start_ts = 0 - - for file in io.listdir(path): - if str(file) in INPUT_FILE_LIST and io.check_file_valid(io.join(path, file)): - if InputFilesType(file) == InputFilesType.KERNEL_DETAILS_CSV: - has_kernel = True - profile.kernel_file_path = io.join(path, file) - if InputFilesType(file) == InputFilesType.MEMORY_RECORD_CSV: - has_memory_record = True - profile.memory_curve_path = io.join(path, file) - if InputFilesType(file) == InputFilesType.MEMORY_OPERATOR_CSV: - has_memory_operator = True - profile.memory_operator_path = io.join(path, file) - if InputFilesType(file) == InputFilesType.MEMORY_COMPONENT_CSV: - profile.memory_component_path = io.join(path, file) - if InputFilesType(file) == InputFilesType.OPERATOR_DETAILS_CSV: - profile.has_operator_view = True - profile.operator_path = io.join(path, file) - if InputFilesType(file) == InputFilesType.DISTRIBUTED_STEP_CSV: - has_communication_overlap = True - profile.distributed_csv_path = io.join(path, file) - if InputFilesType(file) == InputFilesType.DISTRIBUTED_COMMUNICATION_JSON: - has_communication_wait_ops = True - profile.communication_json_path = io.join(path, file) - - profile.has_kernel = has_kernel - profile.has_memory = has_memory_operator and has_memory_record - profile.has_communication = has_communication_wait_ops and has_communication_overlap - if profile.has_communication: - with utils.timing('EventParser.parse'): - parser = EventParser() - with utils.timing('EventParser: parse steps times'): - # Process steps - parser.parse_steps(profile.events, parser.communication_data) - - profile.steps_names = parser.steps_names - return profile - - @staticmethod - def from_json(worker, span, trace_json: Dict): - profile = RunProfileData(worker, span, trace_json) - with utils.timing('Data processing'): - profile.process() - profile.analyze() - return profile - - @staticmethod - def _preprocess_file(trace_path, cache_dir, device_target): - if not io.exists(trace_path): - raise FileNotFoundError(trace_path) - - data = io.read(trace_path) - if trace_path.endswith('.gz'): - data = gzip.decompress(data) - - json_reencode = False - try: - trace_json = json.loads(data) - except JSONDecodeError as e: - # Kineto may export json file with non-ascii code. before this is fixed, use a workaround - # to handle JSONDecodeError, re-encode it and save to a temp file - try: - trace_json = json.loads(data, strict=False) - except JSONDecodeError: - with sysio.StringIO() as fout: - str_data = data.decode('utf-8') - # only replace the N/A without surrounding double quote - fout.write(re.sub(r'(? 24 * 3600 * 1000: - del trace_json['traceEvents'][end_index] - json_reencode = True - - if json_reencode: - fp = tempfile.NamedTemporaryFile('w+t', suffix='.json.gz', dir=cache_dir, delete=False) - fp.close() - with gzip.open(fp.name, mode='wt') as fzip: - fzip.write(json.dumps(trace_json)) - trace_path = fp.name - - return trace_path, trace_json - - def process(self): - with utils.timing('EventParser.parse'): - parser = EventParser() - self.tid2tree, self.pl_tid2tree = parser.parse(self.events, self.forward_backward_events) - - self.has_runtime = parser.has_runtime - self.has_kernel = parser.has_kernel - self.has_memcpy_or_memset = parser.has_memcpy_or_memset - self.steps_names = parser.steps_names - self.used_devices = sorted(list(parser.used_devices)) - self.use_dp = parser.use_dp - self.use_ddp = parser.use_ddp - self.role_ranges = parser.role_ranges - - self.comm_lib = parser.comm_lib - self.has_communication = parser.has_communication - self.comm_node_list = parser.comm_node_list - - # Starting aggregate - logger.debug('ModuleAggregator') - with utils.timing('ModuleAggregator aggegation'): - module_aggregator = ModuleAggregator() - module_aggregator.aggregate(self.tid2tree) - self.op_list_groupby_name = module_aggregator.op_list_groupby_name - self.op_list_groupby_name_input = module_aggregator.op_list_groupby_name_input - self.stack_lists_group_by_name = module_aggregator.stack_lists_group_by_name - self.stack_lists_group_by_name_input = module_aggregator.stack_lists_group_by_name_input - self.kernel_list_groupby_name_op = module_aggregator.kernel_list_groupby_name_op - - logger.debug('OverallParser') - with utils.timing('OverallParser aggegation'): - overall_parser = OverallParser() - overall_parser.aggregate(parser.steps, parser.role_ranges) - self.avg_costs = overall_parser.avg_costs - self.steps_costs = overall_parser.steps_costs - self.comm_overlap_costs = overall_parser.communication_overlap - - logger.debug('GPUMetricsParser') - self.gpu_metrics_parser = GPUMetricsParser.parse_events( - self.events, parser.global_start_ts, parser.global_end_ts, parser.steps[0][0], parser.steps[-1][1]) - - logger.debug('TensorCoresParser') - tensorcores_parser = TensorCoresParser.parse_events( - self.tid2tree, module_aggregator.ops, self.gpu_metrics_parser.gpu_ids) - self.tc_eligible_ops_kernel_ratio = tensorcores_parser.tc_eligible_ops_kernel_ratio - self.tc_ratio = tensorcores_parser.tc_ratio - - if self.has_kernel: - logger.debug('KernelParser') - with utils.timing('parse kernels'): - kernel_parser = KernelParser() - kernel_parser.parse_events(self.events) - self.kernel_stat = kernel_parser.kernel_stat - self.tc_used_ratio = kernel_parser.tc_used_ratio - - memory_events = self._memory_events() - if memory_events: - memory_parser = MemoryParser(memory_events) - self.memory_snapshot = memory_parser.find_memory_nodes(self.tid2tree) - - def analyze(self): - self.recommendations = [] - - dataloader_ratio = self.avg_costs.costs[ProfileRole.DataLoader] / self.avg_costs.costs[ProfileRole.Total] - if dataloader_ratio > 0.05: - percentage = dataloader_ratio * 100 - url = config.get('URL', 'pytorch_data_loading_url') - self.recommendations.append( - f'This run has high time cost on input data loading. {percentage:.1f}% of the step ' + - "time is in DataLoader. You could try to set num_workers on DataLoader's construction " + - f"and {href('enable multi-processes on data loading', url)}." - ) - - self._analyze_distributed_metrics() - self._analyze_gpu_metrics() - - if self.device_props: - # Tensor Cores feature is available on GPU cards with compute capability >= 7.0 - major = self.device_props[0].get('computeMajor') - # If it's a pure CPU run, then self.tc_used_ratio is None, this rule will not be triggered. - if major is not None and major >= 7: - if math.isclose(self.tc_used_ratio, 0.0) and self.tc_eligible_ops_kernel_ratio > 0.0: - url = config.get('URL', 'pytorch_amp_url') - self.recommendations.append( - f'Kernels with {round(self.tc_eligible_ops_kernel_ratio * 100)}%' - ' time are launched by Tensor Cores eligible operators. ' - f"You could enable {href('Automatic Mixed Precision', url)} to speedup by using FP16.") - - # Memory related - if self.memory_snapshot: - for (dev_type, dev_id), peak_mem in self.memory_snapshot.get_peak_memory().items(): - if dev_type == -1: # ignore cpu - continue - total_mem = self.device_props[dev_id].get('totalGlobalMem') - if total_mem is not None and peak_mem > total_mem * 0.9: - percentage = peak_mem / total_mem * 100 if total_mem > 0 else 0 - total_mem_gb = total_mem / 1024 / 1024 / 1024 - ckp_url = config.get('URL', 'pytorch_ckp_url') - amp_url = config.get('URL', 'pytorch_amp_url') - self.recommendations.append( - f'Device memory usage is at the limit of device memory capacity ' - f'({percentage:.1f}% of {total_mem_gb:.1f}GB on GPU{dev_id}). ' - 'To get better value of your GPU or to use larger batch size for training, please refer to ' - f"{href('Gradient Checkpoint', ckp_url)} or {href('Automatic Mixed Precision', amp_url)}.") - break - - def _analyze_distributed_metrics(self): - if self.use_dp and len(self.used_devices) > 1: - url = config.get('URL', 'cuda_nn_ddp_instead_url') - self.recommendations.append( - f"It is recommended to {href('use DistributedDataParallel instead of DataParallel', url)}" - ' to do multi-GPU training.') - - if self.use_ddp and CommLibTypes.Nccl not in self.comm_lib and self.device_props: - for device_prop in self.device_props: - major = device_prop.get('computeMajor') - minor = device_prop.get('computeMinor') - if major is None or minor is None: - continue - compute_capability = '{}.{}'.format(major, minor) - if float(compute_capability) >= 3.5: - text = ( - 'Nccl backend is currently the fastest and highly recommended backend' - ' when using DDP for training.') - self.recommendations.append(text) - break - - communication_ratio = self.avg_costs.costs[ProfileRole.Communication] / self.avg_costs.costs[ProfileRole.Total] - if communication_ratio > 0.1: - percentage = communication_ratio * 100 - compress_url = config.get('URL', 'compress_url') - grad_acc_url = config.get('URL', 'grad_acc_url') - lamb_url = config.get('URL', 'lamb_url') - self.recommendations.append( - f'This run has high time cost on communication. {percentage:.1f}% of the step time is in ' - f"communication. You could try {href('Gradient Compression', compress_url)} or " - f"{href('Gradient Accumulation', grad_acc_url)} or increase the batch size. " - 'Note: Gradient accumulation will increase global effective batch size, which may hurt model ' - f"convergence and accuracy. For such case, you may want to evaluate {href('LAMB optimizer', lamb_url)}." - ) - - def _memory_events(self) -> List[MemoryEvent]: - memory_events = [e for e in self.events if e.type == EventTypes.MEMORY] - memory_events.sort(key=lambda e: e.ts) - return memory_events - - def _analyze_gpu_metrics(self): - def get_gpus_str(gpus): - gpu_list_str = str(gpus[0]) - for i in range(1, len(gpus)): - if i == len(gpus) - 1: - gpu_list_str += 'and {}'.format(gpus[i]) - else: - gpu_list_str += ', {}'.format(gpus[i]) - has_str = 'has' if len(gpu_list_str) == 1 else 'have' - return gpu_list_str, has_str - - low_util_gpus = [] - for gpu_id in self.gpu_metrics_parser.gpu_ids: - if self.gpu_metrics_parser.gpu_utilization[gpu_id] < 0.5: - low_util_gpus.append(gpu_id) - if len(low_util_gpus) > 0: - gpu_list_str, has_str = get_gpus_str(low_util_gpus) - text = 'GPU {} {} low utilization. You could try to ' \ - 'increase batch size to improve. Note: Increasing batch size ' \ - 'may affect the speed and stability of model convergence.'.format(gpu_list_str, has_str) - self.recommendations.append(text) - - -class DistributedRunProfileData: - def __init__(self, run_profile_data: RunProfileData): - self.worker = run_profile_data.worker - self.span = run_profile_data.span - self.steps_names = run_profile_data.steps_names - self.has_communication = run_profile_data.has_communication - self.comm_lib = run_profile_data.comm_lib - self.comm_node_list = run_profile_data.comm_node_list - self.comm_overlap_costs = run_profile_data.comm_overlap_costs - self.used_devices = run_profile_data.used_devices - self.device_props = run_profile_data.device_props - self.distributed_info = run_profile_data.distributed_info - - self.step_to_overlap = run_profile_data.step_to_overlap - self.step_to_wait = run_profile_data.step_to_wait - self.comm_op = run_profile_data.comm_op - - self.total_comm_stats = None - self.step_comm_stats = None - - def communication_parse(self): - self.step_comm_stats, self.total_comm_stats = analyze_communication_nodes(self.comm_node_list) diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/__init__.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/__init__.py deleted file mode 100644 index 3dae52e35..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .contract import DiffStats, OpAgg -from .tree import (DiffNode, compare_op_tree, diff_summary, print_node, - print_ops) diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/contract.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/contract.py deleted file mode 100644 index ce0cba35d..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/contract.py +++ /dev/null @@ -1,99 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -from collections import namedtuple -from typing import Dict, List - -OpAgg = namedtuple('OpAgg', [ - 'name', - 'calls', - 'host_duration', - 'device_duration', - 'self_host_duration', - 'self_device_duration']) - - -class OpStats: - def __init__(self, - name, - duration, - device_duration, - total_duration, - aggs: List[OpAgg]): - self.name = name - self.duration = duration - self.device_duration = device_duration - self.total_duration = total_duration - self.op_aggs = aggs - - def __str__(self) -> str: - return f'{self.name}: {self.duration}/{self.device_duration}/{len(self.op_aggs)}' - - -class DiffStats: - def __init__(self, left: OpStats, right: OpStats): - self.left = left - self.right = right - self.children: List[DiffStats] = [] - - def flatten_diff_tree(self) -> Dict[str, 'DiffStats']: - result: Dict[str, DiffStats] = {} - - def traverse(node: DiffStats, path: str): - result[path] = node - for i, child in enumerate(node.children): - traverse(child, f'{path}-{i}') - - traverse(self, '0') - return result - - def to_dict(self): - d = { - 'left': { - 'name': self.left.name, - 'duration': self.left.duration, - 'device_duration': self.left.device_duration, - 'total_duration': self.left.total_duration, - 'aggs': [] - }, - 'right': { - 'name': self.right.name, - 'duration': self.right.duration, - 'device_duration': self.right.device_duration, - 'total_duration': self.right.total_duration, - 'aggs': [] - } - } - - for agg in self.left.op_aggs: - d['left']['aggs'].append(agg._asdict()) - - for agg in self.right.op_aggs: - d['right']['aggs'].append(agg._asdict()) - - return d - - def get_diff_tree_summary(self): - def traverse_node_recursive(node: DiffStats): - d = node.to_dict() - - d['children'] = [] - for c in node.children: - d['children'].append(traverse_node_recursive(c)) - - return d - - return traverse_node_recursive(self) - - def get_diff_node_summary(self, path: str): - def traverse_node(node: DiffStats, path: str): - d = node.to_dict() - d['path'] = path - return d - - d = traverse_node(self, path) - d['children'] = [] - for i, c in enumerate(self.children): - d['children'].append(traverse_node(c, f'{path}-{i}')) - - return d diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/operator.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/operator.py deleted file mode 100644 index 4434c65ad..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/operator.py +++ /dev/null @@ -1,124 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -from abc import ABCMeta -from typing import List, Tuple, Union - -from ..node import DeviceNode, OperatorNode -from ..op_agg import aggregate_ops -from .contract import OpAgg - - -class Operator(metaclass=ABCMeta): - def __init__(self, name) -> None: - self.name: str = name - - def __str__(self) -> str: - return f'{self.name}: {self.duration}' - - @property - def duration(self) -> int: - return 0 - - @property - def device_duration(self) -> int: - return 0 - - @property - def total_duration(self): - return self.device_duration or self.duration - - def aggregate_ops(self): - ops, _ = self.get_operators_and_kernels() - agg_result = aggregate_ops(ops, [lambda x: x.name])[0] - for agg in agg_result.values(): - yield OpAgg( - agg.name, - agg.calls, - round(agg.host_duration, 3), - round(agg.device_duration, 3), - round(agg.self_host_duration, 3), - round(agg.self_device_duration, 3)) - - def get_operators_and_kernels(self) -> Tuple[List[OperatorNode], List[DeviceNode]]: - return [], [] - - -class BlankOp(Operator): - def __init__(self) -> None: - super().__init__('Blank') - - -class UnknownOp(Operator): - def __init__(self, device_duration: int, duration: int) -> None: - super().__init__('Unknown') - self.device_duration = device_duration - self.duration = duration - - @property - def duration(self) -> int: - return self.duration - - @property - def device_duration(self) -> int: - return self.device_duration - - -class Operators(Operator): - def __init__(self, nodes: Union[OperatorNode, List[OperatorNode]]): - if not nodes: - raise ValueError('the operator node is None or empty') - if isinstance(nodes, OperatorNode): - super().__init__(nodes.name) - elif isinstance(nodes, list): - super().__init__('CompositeNodes') - - self.op_nodes: Union[OperatorNode, List[OperatorNode]] = nodes - - @property - def duration(self): - if isinstance(self.op_nodes, list): - return sum(n.duration for n in self.op_nodes) - else: - return self.op_nodes.duration - - @property - def device_duration(self): - if isinstance(self.op_nodes, list): - return sum(n.device_duration for n in self.op_nodes) - else: - return self.op_nodes.device_duration - - @property - def total_duration(self): - if isinstance(self.op_nodes, list): - return sum(n.device_duration or n.duration for n in self.op_nodes) - else: - return self.op_nodes.device_duration or self.op_nodes.duration - - def __str__(self) -> str: - if isinstance(self.op_nodes, list): - return f'{self.name}: {len(self.op_nodes)}: {self.op_nodes[0].name}: {self.total_duration}' - else: - return f'{self.name}: {self.op_nodes.__class__.__name__}: {self.total_duration}' - - def get_operators_and_kernels(self) -> Tuple[List[OperatorNode], List[DeviceNode]]: - if isinstance(self.op_nodes, list): - nodes = self.op_nodes - else: - nodes = [self.op_nodes] - - ops: List[OperatorNode] = [] - kernels: List[DeviceNode] = [] - for n in nodes: - op, k = n.get_operator_and_kernels() - ops.extend(op) - kernels.extend(k) - return ops, kernels - - -def create_operator(op_nodes: Union[OperatorNode, List[OperatorNode]]) -> Operator: - if op_nodes: - return Operators(op_nodes) - else: - return BlankOp() diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/tree.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/tree.py deleted file mode 100644 index c5cf5fad4..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/diffrun/tree.py +++ /dev/null @@ -1,163 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -import sys -from typing import Generator, List, Union - -from ..node import (BackwardNode, DataLoaderNode, ModuleNode, OperatorNode, - OptimizerNode, ProfilerStepNode) -from .contract import DiffStats, OpStats -from .operator import Operator, Operators, create_operator - -INDENT = ' ' -RUN_NODE_TYPES = (BackwardNode, DataLoaderNode, ModuleNode, OptimizerNode, ProfilerStepNode) - - -class DiffNode: - def __init__(self, left: Operator, right: Operator): - self.left: Operator = left - self.right: Operator = right - self.children: List[DiffNode] = [] - - def build_tree(self): - """build the children from the left_node and right_node""" - if not isinstance(self.left, Operators) or not isinstance(self.right, Operators): - return - - if isinstance(self.left.op_nodes, OperatorNode) and isinstance(self.right.op_nodes, OperatorNode): - # simple node match. - diff_nodes = list(DiffNode.compare_operator_nodes( - self.left.op_nodes.children, self.right.op_nodes.children)) - if diff_nodes: - self.children.extend(diff_nodes) - elif isinstance(self.left.op_nodes, list) and isinstance(self.right.op_nodes, list): - # compare two list - diff_nodes = list(DiffNode.compare_operator_nodes(self.left.op_nodes, self.right.op_nodes)) - if diff_nodes: - self.children.extend(diff_nodes) - else: - # one single item and one list - pass - - @staticmethod - def create_node( - left: Union[OperatorNode, List[OperatorNode]], - right: Union[OperatorNode, List[OperatorNode]]) -> 'DiffNode': - if isinstance(left, list) and len(left) == 1: - left = left[0] - if isinstance(right, list) and len(right) == 1: - right = right[0] - - node = DiffNode(create_operator(left), create_operator(right)) - node.build_tree() - return node - - @staticmethod - def compare_operator_nodes( - left_nodes: List[OperatorNode], - right_nodes: List[OperatorNode]) -> Generator['DiffNode', None, None]: - """Given two OperatorNode lists, find the DataLoader/Module/Backward/Optimizer node and - create the child list DiffNode - """ - right_keys = [(type(r), r.name) for r in right_nodes] - - # find matching points in the two list - matched_paris = [] - key_index = 0 - for i, left_node in enumerate(left_nodes): - if not isinstance(left_node, RUN_NODE_TYPES): - # only handle DataLoader/Module/Backward/Optimizer nodes - continue - - for j in range(key_index, len(right_keys)): - if right_keys[j] == (type(left_node), left_node.name): - matched_paris.append((i, j)) - key_index = j + 1 - break - - if not matched_paris: - # there is not any matching points. - return - - # split the two list by the matching points - l_iter = 0 - r_iter = 0 - - for (left, r) in matched_paris: - left_child = left_nodes[l_iter:left] - right_child = right_nodes[r_iter:r] - if left_child or right_child: - yield DiffNode.create_node(left_child, right_child) - - yield DiffNode.create_node(left_nodes[left], right_nodes[r]) - l_iter = left + 1 - r_iter = r + 1 - # end time is bigger than threshold. - # Or do we need move the logic into frondend for visualization? - - # process the remaining nodes - left_remaining = left_nodes[l_iter:] - right_remaining = right_nodes[r_iter:] - if left_remaining or right_remaining: - yield DiffNode.create_node(left_remaining, right_remaining) - - -def compare_op_tree(left: OperatorNode, right: OperatorNode) -> DiffNode: - '''Create the diff tree from two root node - TODO: need handle the different threads case - need add runtimes besides of children? - ''' - left_children = list(get_tree_operators(left)) - right_children = list(get_tree_operators(right)) - return DiffNode.create_node(left_children, right_children) - - -def get_tree_operators(root: OperatorNode) -> Generator[OperatorNode, None, None]: - '''Get the operators by the root operators by excluding the ProfilerStepNode - ''' - profiler_nodes = [c for c in root.children if isinstance(c, ProfilerStepNode)] - if not profiler_nodes: - # there is no ProfilerStepNode at all - yield from root.children - else: - yield from (child for p in profiler_nodes for child in p.children) - - -def diff_summary(node: DiffNode) -> DiffStats: - if not node: - return None - - left = OpStats( - node.left.name, - node.left.duration, - node.left.device_duration, - node.left.total_duration, - list(node.left.aggregate_ops())) - right = OpStats( - node.right.name, - node.right.duration, - node.right.device_duration, - node.right.total_duration, - list(node.right.aggregate_ops())) - - stats = DiffStats(left, right) - for child in node.children: - stats.children.append(diff_summary(child)) - - return stats - - -def print_node(node: Union[DiffNode, DiffStats], level: int, index: int, file=sys.stdout): - file.write(f'{INDENT * level}level {level}, index {index}:\n') - file.write(f'{INDENT * (level + 1)}left : {node.left}\n') - file.write(f'{INDENT * (level + 1)}right: {node.right}\n') - for i, child in enumerate(node.children): - print_node(child, level + 1, i, file=file) - - -def print_ops(op: Operators, prefix: str = INDENT, file=sys.stdout): - if isinstance(op.op_nodes, list): - for n in op.op_nodes: - file.write(f'{prefix}{n.name}\n') - else: - file.write(f'{prefix}{op.op_nodes.name}\n') diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/event_parser.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/event_parser.py deleted file mode 100644 index 9b364e0db..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/event_parser.py +++ /dev/null @@ -1,467 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -import sys -from collections import defaultdict -from dataclasses import dataclass -from enum import IntEnum -from typing import Dict, Iterable, List, Optional, Tuple - -from .. import utils -from .communication import generate_communication_nodes -from .node import (CommunicationNode, DeviceNode, ModuleNode, OperatorNode, PLModuleNode, PLProfileNode, - ProfilerStepNode, RuntimeNode, create_operator_node) -from .op_tree import OpTreeBuilder -from .range_utils import merge_ranges -from .trace import BaseEvent, DurationEvent, EventTypes, KernelEvent, NcclOpNameSet, GlooOpNameSet - -logger = utils.get_logger() - -CommLibTypes = IntEnum('CommLibTypes', ['Nccl', 'Gloo'], start=0) - - -class ProfileRole(IntEnum): - Kernel = 0 - Memcpy = 1 - Memset = 2 - Communication = 3 - Runtime = 4 - DataLoader = 5 - CpuOp = 6 - Other = 7 - Total = 8 - - -@dataclass -class NodeInfoParams: - event: DurationEvent - corrid_to_device: Dict[int, List[DeviceNode]] - corrid_to_runtime: Dict[int, RuntimeNode] - externalid_to_runtime: Dict[int, List[RuntimeNode]] - tid2list: Dict[int, List[OperatorNode]] - pl_tid2list: Dict[int, List[PLProfileNode]] - tid2zero_rt_list: Dict[int, List[RuntimeNode]] - - -class NodeParserMixin: - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - self.communication_data: Dict[int, CommunicationNode] = {} - self.device_node_list: List[DeviceNode] = [] - self.runtime_node_list: List[RuntimeNode] = [] - self.used_devices = set() - self.use_dp = False - self.use_ddp = False - self.comm_lib = set() - - def parse_nodes(self, events: Iterable[BaseEvent]): - # For OperatorNode and ProfilerStepNode: - # Use time interval containing relationship to build father-child correlation, - # which is consistent with autograd profiler. - # For RuntimeNode: - # Use external_id to build correlation with its father OperatorNode or ProfilerStepNode. - # Because in the case when RuntimeNode has duration 0 and starts at same time as a OperatorNode, - # just use interval containing relationship can't tell it is child or brother of the OperatorNode. - # value is a list of OperatorNode and ProfilerStepNode. Do not include RuntimeNode - tid2list: Dict[int, List[OperatorNode]] = defaultdict(list) - # value is a list of PLProfileNode. Do not include RuntimeNode - pl_tid2list: Dict[int, List[PLProfileNode]] = defaultdict(list) - # value is a list of RuntimeNode with external_id=0. They will be attached to root nodes. - tid2zero_rt_list: Dict[int, List[RuntimeNode]] = defaultdict(list) - corrid_to_device: Dict[int, List[DeviceNode]] = defaultdict(list) # value is a list of DeviceNode - - corrid_to_runtime: Dict[int, RuntimeNode] = {} # value is a RuntimeNode - externalid_to_runtime: Dict[int, List[RuntimeNode]] = defaultdict(list) # value is a list of RuntimeNode - - for event in events: - if event.type == EventTypes.MEMORY: - continue - params = NodeInfoParams(event, corrid_to_device, corrid_to_runtime, externalid_to_runtime, tid2list, - pl_tid2list, tid2zero_rt_list) - self._parse_node(params) - - if CommLibTypes.Nccl in self.comm_lib: - for event in events: - if event.type == EventTypes.KERNEL: - self._update_communication_node(event) - - # associate CUDA Runtimes with CPU events - for op_list in tid2list.values(): - for op in op_list: - runtime_nodes = externalid_to_runtime.pop(op.external_id, []) - if runtime_nodes: - op.runtimes.extend(runtime_nodes) - - if len(corrid_to_device) > 0: - node_count_dict = defaultdict(int) - for nodes in corrid_to_device.values(): - for n in nodes: - node_count_dict[n.type] += 1 - - logger.debug(("Some events doesn't belongs to any operators: " - f"{', '.join([':'.join((k, str(v))) for k, v in node_count_dict.items()])}")) - - staled_device_nodes = [] - for device_nodes in corrid_to_device.values(): - staled_device_nodes.extend([n for n in device_nodes if n.type == EventTypes.KERNEL]) - - return tid2list, tid2zero_rt_list, staled_device_nodes, pl_tid2list - - def _update_communication_node(self, event: KernelEvent): - """Update the communication node by using the TraceEvent instance""" - external_id = event.external_id - comm_node = self.communication_data.get(external_id) - if comm_node: - ts = event.ts - dur = event.duration - comm_node.kernel_ranges.append((ts, ts + dur)) - comm_node.total_time += dur - - return comm_node is not None - - def _parse_node(self, params: NodeInfoParams): - event = params.event - corrid_to_device = params.corrid_to_device - corrid_to_runtime = params.corrid_to_runtime - externalid_to_runtime = params.externalid_to_runtime - tid2list = params.tid2list - pl_tid2list = params.pl_tid2list - tid2zero_rt_list = params.tid2zero_rt_list - corrid = event.correlation_id - tid = event.tid - if event.type in [EventTypes.KERNEL, EventTypes.MEMCPY, EventTypes.MEMSET]: - self.used_devices.add(event.pid) - device_node = DeviceNode.create(event) - if corrid in corrid_to_runtime: - rt_node = corrid_to_runtime[corrid] # Don't pop it because it may be used by next kernel. - if rt_node.device_nodes is None: - rt_node.device_nodes = [] - rt_node.device_nodes.append(device_node) - else: - corrid_to_device[corrid].append(device_node) - self.device_node_list.append(device_node) - elif event.type == EventTypes.RUNTIME: - device_nodes = corrid_to_device.pop(corrid, None) - rt_node = RuntimeNode.create(event, device_nodes) - corrid_to_runtime[corrid] = rt_node - externalid_to_runtime[rt_node.external_id].append(rt_node) - # Some runtimes has external_id 0, which will not be correlated to any operator. - # So get them and attach them to root node. - if rt_node.external_id == 0: - tid2zero_rt_list[tid].append(rt_node) - self.runtime_node_list.append(rt_node) - - # check the external_id - if device_nodes: - for device_node in device_nodes: - if rt_node.external_id != device_node.external_id: - logger.warning( - 'Runtime and Device-op have same correlation id %s but with different external id!' - ' (rt external_id, device external_id): (%s, %s)' % - (corrid, rt_node.external_id, device_node.external_id)) - elif event.type in [EventTypes.PYTHON, - EventTypes.OPERATOR, - EventTypes.PL_MODULE, - EventTypes.PROFILER_STEP, - EventTypes.MODULE, - EventTypes.USER_ANNOTATION]: - if event.type == EventTypes.PROFILER_STEP: - op_node = ProfilerStepNode.create(event) - elif event.type == EventTypes.MODULE: - op_node = ModuleNode.create(event) - elif event.type == EventTypes.PL_MODULE: - op_node = PLModuleNode.create(event) - else: - op_node = create_operator_node(event) - if event.name in NcclOpNameSet or event.name in GlooOpNameSet: - comm_node = CommunicationNode.create(event) - if event.name in NcclOpNameSet: - self.comm_lib.add(CommLibTypes.Nccl) - if event.name in GlooOpNameSet: - self.comm_lib.add(CommLibTypes.Gloo) - ts = event.ts - dur = event.duration - comm_node.kernel_ranges.append((ts, ts + dur)) - comm_node.total_time = dur - self.communication_data[op_node.external_id] = comm_node - if event.name == 'DataParallel.forward': - self.use_dp = True - if event.name == 'DistributedDataParallel.forward': - self.use_ddp = True - if op_node: - tid2list[int(tid)].append(op_node) - elif event.type == EventTypes.PL_PROFILE: - op_node = PLProfileNode.create(event) - pl_tid2list[int(tid)].append(op_node) - - -class StepParser: - def __init__(self): - # we could not use [[]] * len here since they all point to same memory - self.role_ranges: List[List[Tuple[int, int]]] = [[] for _ in range(ProfileRole.Total - 1)] - self.steps: List[Tuple[int, int]] = [] - self.steps_names: List[str] = [] - self.cpu_min_ts = sys.maxsize # Min time of CPU side events. - self.cpu_max_ts = -sys.maxsize - 1 # Max time of CPU side events. - self.global_min_ts = sys.maxsize # Min time of all events. - self.global_max_ts = -sys.maxsize - 1 # Max time of all events. - # The below two form time range for adding gpu utilization to trace view. - # Use 'PyTorch Profiler (0)' as them. - # If not exists, assign global_min_ts and global_max_ts to them. - self.global_start_ts = sys.maxsize - self.global_end_ts = -sys.maxsize - 1 - - def parse_steps(self, events: Iterable[DurationEvent], comm_nodes: Dict[int, CommunicationNode]): - for event in events: - if event.type == EventTypes.MEMORY: - continue - - self._parse_step(event, comm_nodes) - if event.type == EventTypes.TRACE and event.name == 'PyTorch Profiler (0)': - self.global_start_ts = event.ts - self.global_end_ts = event.ts + event.duration - if self.global_start_ts == sys.maxsize: - self.global_start_ts = self.global_min_ts - if self.global_end_ts == -sys.maxsize - 1: - self.global_end_ts = self.global_max_ts - - if len(self.steps) == 0: - self.steps.append((self.cpu_min_ts, self.cpu_max_ts)) - self.steps_names.append('0') - - for i, role_range in enumerate(self.role_ranges): - self.role_ranges[i] = merge_ranges(role_range) - - def update_device_steps(self, runtime_node_list: List[RuntimeNode]): - self._update_steps_duration(*self._find_device_steps(runtime_node_list)) - - @property - def has_runtime(self): - return bool(self.role_ranges[ProfileRole.Runtime]) - - @property - def has_kernel(self): - return bool(self.role_ranges[ProfileRole.Kernel]) - - @property - def has_communication(self): - return bool(self.role_ranges[ProfileRole.Communication]) - - @property - def has_memcpy_or_memset(self): - return bool(self.role_ranges[ProfileRole.Memcpy] or self.role_ranges[ProfileRole.Memset]) - - def _parse_step(self, event: DurationEvent, comm_nodes: Dict[int, CommunicationNode]): - def check_name(name: str): - return (name.startswith('enumerate(DataLoader)#') and name.endswith('.__next__')) or name.startswith( - 'enumerate(DataPipe)#') - - ts = event.ts - dur = event.duration - evt_type = event.type - if evt_type == EventTypes.KERNEL: - if event.external_id in comm_nodes: - self.role_ranges[ProfileRole.Communication].append((ts, ts + dur)) - else: - self.role_ranges[ProfileRole.Kernel].append((ts, ts + dur)) - elif evt_type == EventTypes.MEMCPY: - self.role_ranges[ProfileRole.Memcpy].append((ts, ts + dur)) - elif evt_type == EventTypes.MEMSET: - self.role_ranges[ProfileRole.Memset].append((ts, ts + dur)) - elif evt_type == EventTypes.RUNTIME: - self.role_ranges[ProfileRole.Runtime].append((ts, ts + dur)) - elif evt_type in [EventTypes.OPERATOR, EventTypes.USER_ANNOTATION] and check_name(event.name): - self.role_ranges[ProfileRole.DataLoader].append((ts, ts + dur)) - elif event.type == EventTypes.PROFILER_STEP: - self.steps.append((ts, ts + dur)) - self.steps_names.append(str(event.step)) - elif evt_type in [EventTypes.PYTHON, EventTypes.OPERATOR, EventTypes.USER_ANNOTATION]: - if event.name in GlooOpNameSet or event.name in NcclOpNameSet: - self.role_ranges[ProfileRole.Communication].append((ts, ts + dur)) - else: - self.role_ranges[ProfileRole.CpuOp].append((ts, ts + dur)) - - # Record host side min and max time. - if evt_type in [EventTypes.PYTHON, EventTypes.OPERATOR, EventTypes.PROFILER_STEP]: - self.cpu_min_ts = min(self.cpu_min_ts, ts) - self.cpu_max_ts = max(self.cpu_max_ts, ts + dur) - # Record global wise min and max time. - self.global_min_ts = min(self.global_min_ts, ts) - self.global_max_ts = max(self.global_max_ts, ts + dur) - - def _find_device_steps(self, runtime_node_list: List[RuntimeNode]): - """return steps associated with device nodes. - """ - runtime_node_list = sorted(runtime_node_list, key=lambda x: x.start_time) - - # Use similar code with two-way merge to get all runtimes inside each host-side step span, - # then record each step's min kernel start time and max kernel end time: - steps_device: List[Tuple[int, int]] = [(sys.maxsize, -sys.maxsize - 1)] * len(self.steps) - # where the steps associated with devcie node, if yes, the related array item is larger than 0. - steps_matched_device_nodes: List[int] = [0] * len(self.steps) - - i_step = 0 - i_runtime = 0 - step_device_min_ts = sys.maxsize - step_device_max_ts = -sys.maxsize - 1 - matched_device_nodes = set() - - while i_step < len(self.steps) and i_runtime < len(runtime_node_list): - step_host_start_time = self.steps[i_step][0] - step_host_end_time = self.steps[i_step][1] - if runtime_node_list[i_runtime].start_time < step_host_start_time: - # This runtime is ahead of or intersects with this step span. Skip this runtime. - i_runtime += 1 - elif runtime_node_list[i_runtime].end_time <= step_host_end_time: - # and runtime_node_list[i_runtime].start_time >= step_host_start_time - # This runtime is inside this step span. Scan its device_nodes. - rt = runtime_node_list[i_runtime] - if rt.device_nodes is not None: - for device_node in rt.device_nodes: - step_device_min_ts = min(device_node.start_time, step_device_min_ts) - step_device_max_ts = max(device_node.end_time, step_device_max_ts) - matched_device_nodes.add(device_node) - steps_matched_device_nodes[i_step] += 1 - i_runtime += 1 - elif runtime_node_list[i_runtime].start_time < step_host_end_time: - # and runtime_node_list[i_runtime].end_time > step_host_end_time - # This runtime intersects with this step span. Skip this runtime. - i_runtime += 1 - else: - # runtime_node_list[i_runtime].start_time >= step_host_end_time - # This runtime starts after this step's end. Record and move forward this step. - steps_device[i_step] = (step_device_min_ts, step_device_max_ts) - i_step += 1 - step_device_min_ts = sys.maxsize - step_device_max_ts = -sys.maxsize - 1 - - while i_step < len(self.steps): - # This step doesn't launch any device side event, just assign it as empty. - steps_device[i_step] = (step_device_min_ts, step_device_max_ts) - step_device_min_ts = sys.maxsize - step_device_max_ts = -sys.maxsize - 1 - i_step += 1 - - # If there are matched device, find the first step end time before steps_device[0][0] - prev_step_end_time: Optional[int] = None - if len(matched_device_nodes) > 0: - prev_step_end_time = self.steps[0][0] - if steps_device[0][0] != sys.maxsize: # When step 0 has device event. - for device_node in self.device_node_list: - if device_node not in matched_device_nodes: - # Now this device_node is not launched inside any step span. - if device_node.end_time < steps_device[0][0]: - prev_step_end_time = max(prev_step_end_time, device_node.end_time) - - return prev_step_end_time, steps_device, steps_matched_device_nodes - - def _update_steps_duration(self, - prev_step_end_time: Optional[int], - steps_device: List[Tuple[int, int]], - steps_matched_device_nodes: List[int]): - """Update self.steps considering device side events launched by each host side step. - Update self.steps_names if some tail steps are removed.""" - - # Change step time to device side on the condition that any step have device time. - is_use_gpu = prev_step_end_time is not None - if is_use_gpu: - for i_step, step in enumerate(self.steps): - step_start_time = max(prev_step_end_time, step[0]) - step_end_time = step[1] - if steps_device[i_step][0] == sys.maxsize: # When step i_step has no device event. - # Assign to step_start_time when kernel is behind host step end. - step_end_time = max(step_end_time, step_start_time) - else: - step_end_time = max(step_end_time, steps_device[i_step][1]) - if step_end_time < step_start_time: - logger.warning( - 'Abnormal step_end_time of step {}: [{}, {}]'.format( - i_step, step_start_time, step_end_time)) - step_end_time = step_start_time - self.steps[i_step] = (step_start_time, step_end_time) # Update step time considering device side. - prev_step_end_time = step_end_time - - is_remove_tail_steps = True - if is_use_gpu and len(self.steps) > 1 and is_remove_tail_steps: - i_step = len(self.steps) - 1 - while i_step >= 0: - if steps_matched_device_nodes[i_step] > 0: - break - i_step -= 1 - if i_step >= 0: - keep_steps = i_step + 1 - if i_step > 0 and steps_matched_device_nodes[i_step - 1] * 0.8 > steps_matched_device_nodes[i_step]: - keep_steps = i_step - if keep_steps < len(self.steps): - logger.warning( - 'Remove the last {} steps from overview. ' - 'Because the profiler may fail to capture all the kernels launched by these steps.'.format( - len(self.steps) - keep_steps - )) - self.steps = self.steps[:keep_steps] - self.steps_names = self.steps_names[:keep_steps] - - -class EventParser(NodeParserMixin, StepParser): - def __init__(self): - super().__init__() - self.comm_node_list: List[CommunicationNode] = None - - def parse(self, events: Iterable[BaseEvent], fwd_bwd_map: Dict[int, int]) -> Dict[int, List[OperatorNode]]: - with utils.timing('EventParser: parse nodes'): - tid2list, tid2zero_rt_list, staled_device_nodes, pl_tid2list = self.parse_nodes(events) - - with utils.timing('EventParser: build operator tree'): - builder = OpTreeBuilder() - tid2tree = builder.build_tree(tid2list, tid2zero_rt_list, staled_device_nodes, fwd_bwd_map=fwd_bwd_map) - pl_tid2tree = builder.build_tree(pl_tid2list, {}, [], {}) - - with utils.timing('EventParser: parse steps times'): - # Process steps - self.parse_steps(events, self.communication_data) - if len(self.comm_lib) > 1: - logger.warning( - 'Multiple communication libs are found. To avoid confusing, we disable the distributed view.') - self.communication_data.clear() - - # Move the interleaved logic out of each NodeParser and StepParser - self.update_device_steps(self.runtime_node_list) - - self.comm_node_list = generate_communication_nodes(self.communication_data, self.steps, self.steps_names) - return tid2tree, pl_tid2tree - - @staticmethod - def print_tree(root): - class Ctx: - tid: int = -1 - name_stack: list = [] - - ctx = Ctx() - - def print_node_set_prefix(node: OperatorNode): - header = f'[{ctx.tid}]' + '.'.join(ctx.name_stack[1:]) # omit the CallTreeRoot - prefix_len = len(ctx.name_stack) * 4 - 4 - 1 - if len(ctx.name_stack) > 1: - logger.info(header) - prefix = ' ' * prefix_len - logger.info(prefix, node.name) - logger.info(prefix, 'time:', node.start_time, '-->', node.end_time) - - def push(node: OperatorNode): - ctx.name_stack.append(node.name) - - def pop(): - ctx.name_stack.pop() - - def traverse_opeartor_node(node: OperatorNode): - print_node_set_prefix(node) - - push(node) - for n in node.children: - traverse_opeartor_node(n) - pop() - - ctx.tid = root.tid - traverse_opeartor_node(root) - ctx.tid = -1 diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/gpu_metrics_parser.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/gpu_metrics_parser.py deleted file mode 100644 index 1321d5f6d..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/gpu_metrics_parser.py +++ /dev/null @@ -1,314 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# -------------------------------------------------------------------------- -from typing import Iterable, List - -from .. import consts, utils -from .range_utils import (get_ranges_sum, intersection_ranges_lists, - intersection_ranges_lists_with_value, merge_ranges, - merge_ranges_with_value) -from .trace import BaseEvent, EventTypes, KernelEvent - -logger = utils.get_logger() - - -# For calculating GPU utilization, and approximated SM efficiency. -class GPUMetricsParser(object): - def __init__(self): - # All gpu ids that used by any kernel. - self.gpu_ids = set() - # For calculating GPU utilization. - self.kernel_ranges_per_device = [[] for _ in range(consts.MAX_GPU_PER_NODE)] - self.gpu_utilization = [None] * consts.MAX_GPU_PER_NODE - self.gpu_util_timeline_unit_size = 0 - self.gpu_util_timeline_unit_name = '' - self.gpu_util_buckets = [[] for _ in range(consts.MAX_GPU_PER_NODE)] - # For calculating approximated SM efficiency. - self.blocks_per_sm_per_device = [[] for _ in range(consts.MAX_GPU_PER_NODE)] - self.avg_approximated_sm_efficiency_per_device = [None] * consts.MAX_GPU_PER_NODE - self.approximated_sm_efficiency_ranges = [[] for _ in range(consts.MAX_GPU_PER_NODE)] - self.gpu_sm_efficiency_json = None - self.blocks_per_sm_count = [0] * consts.MAX_GPU_PER_NODE - # For calculating averaged occupancy. - self.occupancy_per_device = [[] for _ in range(consts.MAX_GPU_PER_NODE)] - self.avg_occupancy_per_device = [None] * consts.MAX_GPU_PER_NODE - self.occupancy_count = [0] * consts.MAX_GPU_PER_NODE - - def calculate_gpu_utilization(self, global_start_time, global_end_time, steps_start_time, steps_end_time): - # Make bucket_size to 10-power's of us, and number of buckets to (10, 100]. - # 10-power's of us, in order to straight forward for user to understand. - # If number of buckets are too many, the value of gpu utilization will be either 0 or 1. - def get_bucket_info(range_micro_seconds): - max_buckets = 100 - bucket_size = 1 - while range_micro_seconds / bucket_size > max_buckets: - bucket_size *= 10 - buckets = int(range_micro_seconds / bucket_size) - unit = bucket_size - unit_str = 'us' - if unit >= 1000: - unit /= 1000 - unit_str = 'ms' - if unit >= 1000: - unit /= 1000 - unit_str = 's' - return int(bucket_size), int(buckets), int(unit), unit_str - - gpu_utilization_timeline = [[] for _ in range(consts.MAX_GPU_PER_NODE)] - for gpu_id in self.gpu_ids: - self.kernel_ranges_per_device[gpu_id] = merge_ranges(self.kernel_ranges_per_device[gpu_id]) - - # Top-level number still consider steps, to be consistent with overview's breakdown. - kernel_ranges_all_steps = intersection_ranges_lists( - self.kernel_ranges_per_device[gpu_id], [(steps_start_time, steps_end_time)]) - ranges_sum = get_ranges_sum(kernel_ranges_all_steps) - self.gpu_utilization[gpu_id] = ranges_sum / (steps_end_time - steps_start_time) - - # The timeline will use 'PyTorch Profiler (0)' as start, - # in order to draw previous step's kernels' gpu utilization. - bucket_size, buckets, self.gpu_util_timeline_unit_size, self.gpu_util_timeline_unit_name = \ - get_bucket_info(global_end_time - global_start_time) - buckets_ranges = [] - for i in range(buckets): - buckets_ranges.append((global_start_time + i * bucket_size, - global_start_time + (i + 1) * bucket_size if i < buckets - 1 - else global_end_time)) # The last bucket may be longer. - gpu_utilization_timeline[gpu_id] = [0] * buckets - if len(self.kernel_ranges_per_device[gpu_id]) > 0: - current_range_index = 0 - current_range = self.kernel_ranges_per_device[gpu_id][current_range_index] - current_bucket_index = 0 - current_bucket = buckets_ranges[0] - while (current_range_index < len(self.kernel_ranges_per_device[gpu_id]) - and current_bucket_index < buckets): - if current_bucket[1] <= current_range[0]: - current_bucket_index += 1 - current_bucket = buckets_ranges[current_bucket_index] if current_bucket_index < buckets \ - else None - elif current_bucket[0] >= current_range[1]: - current_range_index += 1 - if current_range_index < len(self.kernel_ranges_per_device[gpu_id]): - current_range = self.kernel_ranges_per_device[gpu_id][current_range_index] - else: - left_bound = max(current_range[0], current_bucket[0]) - right_bound = min(current_range[1], current_bucket[1]) - gpu_utilization_timeline[gpu_id][current_bucket_index] += (right_bound - left_bound) - if current_bucket[1] < current_range[1]: - current_bucket_index += 1 - current_bucket = buckets_ranges[current_bucket_index] if current_bucket_index < buckets \ - else None - else: - current_range_index += 1 - if current_range_index < len(self.kernel_ranges_per_device[gpu_id]): - current_range = self.kernel_ranges_per_device[gpu_id][current_range_index] - for i_bucket in range(buckets): - bucket_size = buckets_ranges[i_bucket][1] - buckets_ranges[i_bucket][0] - gpu_utilization_timeline[gpu_id][i_bucket] /= bucket_size - start_time = buckets_ranges[i_bucket][0] - self.gpu_util_buckets[gpu_id].append((start_time, gpu_utilization_timeline[gpu_id][i_bucket])) - start_time = buckets_ranges[-1][1] - self.gpu_util_buckets[gpu_id].append((start_time, 0)) - - self.kernel_ranges_per_device = None # Release memory. - - def calculate_approximated_sm_efficiency(self, steps_start_time, steps_end_time): - def calculate_avg(approximated_sm_efficiency_ranges, total_dur): - total_weighted_sm_efficiency = 0.0 - for r in approximated_sm_efficiency_ranges: - dur = r[1] - r[0] - total_weighted_sm_efficiency += r[2] * dur - avg_approximated_sm_efficiency = total_weighted_sm_efficiency / total_dur - return avg_approximated_sm_efficiency - - total_dur = steps_end_time - steps_start_time - for gpu_id in self.gpu_ids: - blocks_per_sm_ranges = self.blocks_per_sm_per_device[gpu_id] - approximated_sm_efficiency_ranges = merge_ranges_with_value(blocks_per_sm_ranges) - # To be consistent with GPU utilization, here it must also intersect with all steps, - # in order to remove the kernels out of steps range. - approximated_sm_efficiency_ranges_all_steps = intersection_ranges_lists_with_value( - approximated_sm_efficiency_ranges, [(steps_start_time, steps_end_time)]) - if len(approximated_sm_efficiency_ranges_all_steps) > 0: - avg_approximated_sm_efficiency = calculate_avg(approximated_sm_efficiency_ranges_all_steps, total_dur) - self.avg_approximated_sm_efficiency_per_device[gpu_id] = avg_approximated_sm_efficiency - - # The timeline still uses all kernels including out of steps scope's. - if len(approximated_sm_efficiency_ranges) > 0: - self.approximated_sm_efficiency_ranges[gpu_id] = approximated_sm_efficiency_ranges - - self.blocks_per_sm_per_device = None # Release memory. - - # Weighted average. Weighted by kernel's time duration. - def calculate_occupancy(self, steps_start_time, steps_end_time): - for gpu_id in self.gpu_ids: - occupancys_on_a_device = self.occupancy_per_device[gpu_id] - total_time = 0 - total_occupancy = 0.0 - for r in occupancys_on_a_device: - min_time = max(r[0], steps_start_time) - max_time = min(r[1], steps_end_time) - if min_time < max_time: - dur = max_time - min_time - total_occupancy += r[2] * dur - total_time += dur - if total_time > 0: - self.avg_occupancy_per_device[gpu_id] = total_occupancy / total_time - - @classmethod - def parse_events(cls, - events: Iterable[BaseEvent], - global_start_time: int, - global_end_time: int, - steps_start_time: int, - steps_end_time: int): - parser = GPUMetricsParser() - logger.debug('GPU Metrics, parse events') - for event in events: - if event.type == EventTypes.KERNEL: - parser.parse_event(event) - - parser.calculate_gpu_utilization(global_start_time, global_end_time, steps_start_time, steps_end_time) - parser.calculate_approximated_sm_efficiency(steps_start_time, steps_end_time) - parser.calculate_occupancy(steps_start_time, steps_end_time) - return parser - - def parse_event(self, event: KernelEvent): - ts = event.ts - dur = event.duration - gpu_id = event.device_id - if gpu_id != event.pid: - logger.warning("pid '{}' is not equal to args.device '{}' on event with ts '{}'".format( - event.pid, gpu_id, event.ts)) - if gpu_id is not None: - if gpu_id not in self.gpu_ids: - self.gpu_ids.add(gpu_id) - self.kernel_ranges_per_device[gpu_id].append((ts, ts + dur)) - if event.blocks_per_sm is not None: - if event.blocks_per_sm > 0.0: - self.blocks_per_sm_per_device[gpu_id].append((ts, ts + dur, event.blocks_per_sm)) - self.blocks_per_sm_count[gpu_id] += 1 - else: - # Workaround for negative value input. - logger.warning('blocks per SM {} with ts {} is not positive!'.format(event.blocks_per_sm, ts)) - if event.occupancy is not None: - if event.occupancy >= 0.0: - self.occupancy_per_device[gpu_id].append((ts, ts + dur, event.occupancy)) - self.occupancy_count[gpu_id] += 1 - else: - # Workaround for negative value input. - logger.warning('est. achieved occupancy % {} with ts {} is negative!'.format(event.occupancy, ts)) - - def get_gpu_metrics_columns(self): - columns = [] - if self.has_blocks_per_sm: - columns.append({'type': 'number', 'name': 'Mean Blocks Per SM', - 'tooltip': consts.TOOLTIP_BLOCKS_PER_SM}) - if self.has_occupancy: - columns.append({'type': 'number', 'name': 'Mean Est. Achieved Occupancy (%)', - 'tooltip': consts.TOOLTIP_OCCUPANCY_COMMON + consts.TOOLTIP_OCCUPANCY_TABLE}) - return columns - - @property - def has_blocks_per_sm(self): - return sum(self.blocks_per_sm_count) > 0 - - @property - def has_occupancy(self): - return sum(self.occupancy_count) > 0 - - def get_gpu_metrics(self): - def build_trace_counter_gpu_util(gpu_id, start_time, counter_value): - util_json = ("{{\"ph\":\"C\", \"name\":\"GPU {} Utilization\", \"pid\":{}, \"ts\":{}, " - "\"args\":{{\"GPU Utilization\":{}}}}}").format(gpu_id, gpu_id, start_time, counter_value) - return util_json - - def build_trace_counter_sm_efficiency(gpu_id, start_time, counter_value): - util_json = ("{{\"ph\":\"C\", \"name\":\"GPU {} Est. SM Efficiency\", \"pid\":{}, \"ts\":{}, " - "\"args\":{{\"Est. SM Efficiency\":{}}}}}").format(gpu_id, gpu_id, start_time, counter_value) - return util_json - - def add_trace_counter_gpu_util(gpu_id, start_time, counter_value, counter_json_list: List): - json_str = build_trace_counter_gpu_util(gpu_id, start_time, counter_value) - counter_json_list.append(json_str) - - def add_trace_counter_sm_efficiency(gpu_id, start_time, end_time, value, counter_json_list: List): - efficiency_json_start = build_trace_counter_sm_efficiency(gpu_id, start_time, value) - efficiency_json_finish = build_trace_counter_sm_efficiency(gpu_id, end_time, 0) - counter_json_list.append(efficiency_json_start) - counter_json_list.append(efficiency_json_finish) - - counter_json_list = [] - for gpu_id, buckets in enumerate(self.gpu_util_buckets): - if len(buckets) > 0: - # Adding 1 as baseline. To avoid misleading virtualization when the max value is less than 1. - add_trace_counter_gpu_util(gpu_id, buckets[0][0], 1, counter_json_list) - add_trace_counter_gpu_util(gpu_id, buckets[0][0], 0, counter_json_list) - for b in buckets: - add_trace_counter_gpu_util(gpu_id, b[0], b[1], counter_json_list) - for gpu_id, ranges in enumerate(self.approximated_sm_efficiency_ranges): - buckets = self.gpu_util_buckets[gpu_id] - if len(ranges) > 0 and len(buckets) > 0: - # Adding 1 as baseline. To avoid misleading virtualization when the max value is less than 1. - add_trace_counter_sm_efficiency(gpu_id, buckets[0][0], buckets[0][0], 1, counter_json_list) - for r in ranges: - add_trace_counter_sm_efficiency(gpu_id, r[0], r[1], r[2], counter_json_list) - - return counter_json_list - - def get_gpu_metrics_data_tooltip( - self, - gpu_infos, - tc_ratio): - if not self.gpu_ids: - return None, None - - has_sm_efficiency = False - has_occupancy = False - has_tc = False - - gpu_metrics_data = [] - gpu_info_columns = ['Name', 'Memory', 'Compute Capability'] - - def process_gpu(gpu_id: int): - nonlocal has_sm_efficiency, has_occupancy, has_tc - gpu_metrics_data.append({'title': 'GPU {}:'.format(gpu_id), 'value': ''}) - gpu_info = gpu_infos.get(gpu_id, None) - if gpu_info is not None: - for key in gpu_info_columns: - if key in gpu_info: - gpu_metrics_data.append({'title': key, 'value': gpu_info[key]}) - else: - # the legacy chrome tracing file would not have gpu info. - pass - gpu_metrics_data.append({'title': 'GPU Utilization', 'value': '{} %'.format( - round(self.gpu_utilization[gpu_id] * 100, 2))}) - if self.avg_approximated_sm_efficiency_per_device[gpu_id] is not None: - gpu_metrics_data.append({'title': 'Est. SM Efficiency', 'value': '{} %'.format( - round(self.avg_approximated_sm_efficiency_per_device[gpu_id] * 100, 2))}) - has_sm_efficiency = True - if self.avg_occupancy_per_device[gpu_id] is not None: - gpu_metrics_data.append({'title': 'Est. Achieved Occupancy', 'value': '{} %'.format( - round(self.avg_occupancy_per_device[gpu_id], 2))}) - has_occupancy = True - if tc_ratio[gpu_id] is not None: - gpu_metrics_data.append({'title': 'Kernel Time using Tensor Cores', 'value': '{} %'.format( - round(tc_ratio[gpu_id] * 100, 2))}) - has_tc = True - - gpu_ids = list(self.gpu_ids) - process_gpu(gpu_ids[0]) - for idx in range(1, len(gpu_ids)): - # Append separator line for beautiful to see. - gpu_metrics_data.append({'title': '
    ', 'value': ''}) - process_gpu(gpu_ids[idx]) - - tooltip_summary = 'The GPU usage metrics:\n' - tooltip = '{}\n{}'.format(tooltip_summary, consts.TOOLTIP_GPU_UTIL) - if has_sm_efficiency: - tooltip += '\n' + consts.TOOLTIP_SM_EFFICIENCY - if has_occupancy: - tooltip += '\n' + consts.TOOLTIP_OCCUPANCY_COMMON + consts.TOOLTIP_OCCUPANCY_OVERVIEW - if has_tc: - tooltip += '\n' + consts.TOOLTIP_TENSOR_CORES - - return gpu_metrics_data, tooltip diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/kernel_parser.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/kernel_parser.py deleted file mode 100644 index 229251e60..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/kernel_parser.py +++ /dev/null @@ -1,45 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# -------------------------------------------------------------------------- -from typing import Optional - -import numpy as np -import pandas as pd - -from .tensor_core import TcAllowlist -from .trace import EventTypes - - -class KernelParser: - def __init__(self): - self.kernel_stat: Optional[pd.DataFrame] = None - self.tc_used_ratio = 0.0 - - def parse_events(self, events): - events = [vars(event) for event in events if event.type == EventTypes.KERNEL] - events = pd.DataFrame(events) - events = events.astype({'type': 'category', 'name': 'string'}, copy=False) - events['tc_used'] = events['name'].map(lambda name: name in TcAllowlist) - - def weighted_avg(x: pd.Series): - try: - # fill these None as zero - x = x.fillna(0) - return np.average(x, weights=events.loc[x.index, 'duration']) - except ZeroDivisionError: - return 0 - - self.kernel_stat = events.groupby('name').agg( - tc_used=('tc_used', 'first'), - count=('duration', 'count'), - sum=('duration', 'sum'), - mean=('duration', 'mean'), - max=('duration', 'max'), - min=('duration', 'min'), - blocks_per_sm=('blocks_per_sm', weighted_avg), - occupancy=('occupancy', weighted_avg)).sort_values('sum', ascending=False) - - tc_total = self.kernel_stat['sum'].sum() - tc_self = self.kernel_stat[self.kernel_stat['tc_used']]['sum'].sum() - if tc_total > 0: - self.tc_used_ratio = tc_self / tc_total diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/loader.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/loader.py deleted file mode 100644 index b31374ea4..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/loader.py +++ /dev/null @@ -1,230 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# -# Copyright(c) 2023 Huawei Technologies. -# All rights reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Modifications: Add visualization of PyTorch Ascend profiling. -# -------------------------------------------------------------------------- -import bisect -import os -import sys -from collections import defaultdict -from typing import List, Tuple - -from .. import consts, io, utils -from ..multiprocessing import Process, Queue -from ..run import Run, RunProfile -from .data import DistributedRunProfileData, RunProfileData -from .node import CommunicationNode -from .run_generator import DistributedRunGenerator, RunGenerator - -logger = utils.get_logger() - - -class RunLoader(object): - def __init__(self, name, run_dir, caches: io.Cache, device_target="GPU"): - self.run_name = name - self.run_dir = run_dir - self.caches = caches - self.queue = Queue() - self.device_target = device_target - - def load(self): - workers = [] - spans_by_workers = defaultdict(list) - if self.device_target == 'Ascend': - for path in io.listdir(self.run_dir): - if io.isdir(io.join(self.run_dir, path)) and utils.is_worker_span_dir(path) and io.isdir( - io.join(self.run_dir, path, 'ASCEND_PROFILER_OUTPUT')): - data_path = io.join(self.run_dir, path, 'ASCEND_PROFILER_OUTPUT') - for file in io.listdir(data_path): - if utils.is_npu_trace_path(file) or str(file) in consts.INPUT_FILE_LIST: - match = consts.WORKER_SPAN_PATTERN.match(path) - worker = match.group(1) - span = match.group(2) - if span is not None: - bisect.insort(spans_by_workers[worker], span) - workers.append((worker, span, io.join(path, 'ASCEND_PROFILER_OUTPUT'))) - break - else: - for path in io.listdir(self.run_dir): - if io.isdir(io.join(self.run_dir, path)): - continue - match = consts.WORKER_PATTERN.match(path) - if not match: - continue - absolute_path = io.join(self.run_dir, path) - if io.stat(absolute_path).length > consts.MAX_FILE_SIZE: - logger.warning( - f'File "{absolute_path}" exceeds the maximum limit size of 500MB and will be skipped.') - continue - - worker = match.group(1) - span = match.group(2) - if span is not None: - # remove the starting dot (.) - span = span[1:] - bisect.insort(spans_by_workers[worker], span) - - workers.append((worker, span, path)) - - span_index_map = {} - for worker, span_array in spans_by_workers.items(): - for i, span in enumerate(span_array, 1): - span_index_map[(worker, span)] = i - - for worker, span, path in workers: - # convert the span timestamp to the index. - span_index = None if span is None else span_index_map[(worker, span)] - p = Process(target=self._process_data, args=(worker, span, span_index, path)) - p.start() - logger.info('started all processing') - - distributed_run = Run(self.run_name, self.run_dir, self.device_target) - run = Run(self.run_name, self.run_dir, self.device_target) - num_items = len(workers) - while num_items > 0: - item: Tuple[RunProfile, DistributedRunProfileData] = self.queue.get() - num_items -= 1 - r, d = item - if r or d: - logger.debug('Loaded profile via mp.Queue') - if r is not None: - run.add_profile(r) - if d is not None: - distributed_run.add_profile(d) - - distributed_profiles = self._process_spans(distributed_run) - for d in distributed_profiles: - if d is not None: - run.add_profile(d) - - # for no daemon process, no need to join them since it will automatically join - return run - - def _process_data(self, worker, span_name, span, path): - import absl.logging - absl.logging.use_absl_handler() - - try: - logger.debug('Parse trace, run_dir=%s, data_dir=%s', self.run_dir, path) - local_file = self.caches.get_remote_cache(io.join(self.run_dir, path)) - if self.device_target == 'Ascend': - data = RunProfileData.parse_npu(worker, span, local_file, self.caches.cache_dir) - else: - data = RunProfileData.parse_gpu(worker, span, local_file, self.caches.cache_dir) - if not data: - self.queue.put((None, None)) - logger.debug('finishing process data') - return - if data.trace_file_path != local_file: - self.caches.add_file(local_file, data.trace_file_path) - - generator = RunGenerator(worker, span, data, self.device_target) - profile = generator.generate_run_profile() - if self.device_target == 'Ascend': - data.step_to_overlap = profile.step_to_overlap - data.step_to_wait = profile.step_to_wait - data.comm_op = profile.comm_op - dist_data = DistributedRunProfileData(data) - - logger.debug('Sending back profile via mp.Queue') - self.queue.put((profile, dist_data)) - except KeyboardInterrupt: - logger.warning('tb_plugin receive keyboard interrupt signal, process %d will exit' % (os.getpid())) - sys.exit(1) - except Exception as ex: - if self.device_target == 'Ascend': - worker_name = f'{worker}_{span_name}_ascend_pt' - else: - worker_name = worker - logger.warning('Failed to parse profile data for Run %s on %s. Exception=%s', - self.run_name, worker_name, ex, exc_info=True) - self.queue.put((None, None)) - logger.debug('finishing process data') - - def _process_spans(self, distributed_run: Run): - spans = distributed_run.get_spans() - if spans is None: - return [self._process_distributed_profiles(distributed_run.get_profiles(), None)] - else: - span_profiles = [] - for span in spans: - profiles = distributed_run.get_profiles(span=span) - p = self._process_distributed_profiles(profiles, span) - if p is not None: - span_profiles.append(p) - return span_profiles - - def _process_distributed_profiles(self, profiles: List[DistributedRunProfileData], span): - if self.device_target != 'Ascend': - return self._gpu_distributed(profiles, span) - else: - for data in profiles: - if not data.has_communication: - logger.debug('There is no communication profile in this NPU run.') - return None - generator = DistributedRunGenerator(profiles, span, self.device_target) - profile = generator.generate_run_profile() - return profile - - def _gpu_distributed(self, profiles, span): - has_communication = True - comm_node_lists: List[List[CommunicationNode]] = [] - for data in profiles: - logger.debug('Processing profile data') - # Set has_communication to False and disable distributed view if any one worker has no communication - if data.has_communication and data.comm_node_list: - comm_node_lists.append(data.comm_node_list) - if len(comm_node_lists[-1]) != len(comm_node_lists[0]): - logger.error("Number of communication operation nodes don't match between workers in run: %s" - % self.run_name) - has_communication = False - else: - has_communication = False - logger.debug('Processing profile data finish') - - if not has_communication: - logger.debug('There is no communication profile in this GPU run.') - return None - - worker_num = len(comm_node_lists) - for i, node in enumerate(comm_node_lists[0]): - kernel_range_size = len(node.kernel_ranges) - # loop for all communication kernel ranges in order - for j in range(kernel_range_size): - min_range = sys.maxsize - # For each kernel_range, find the minist between workers as the real communication time - for k in range(worker_num): - kernel_ranges = comm_node_lists[k][i].kernel_ranges - if len(kernel_ranges) != kernel_range_size: - logger.error("Number of communication kernels don't match between workers in run: %s" - % self.run_name) - has_communication = False - return None - if kernel_ranges: - if kernel_ranges[j][1] - kernel_ranges[j][0] < min_range: - min_range = kernel_ranges[j][1] - kernel_ranges[j][0] - for k in range(worker_num): - kernel_range = comm_node_lists[k][i].kernel_ranges[j] - comm_node_lists[k][i].real_time_ranges.append((kernel_range[1] - min_range, kernel_range[1])) - - for data in profiles: - data.communication_parse() - - generator = DistributedRunGenerator(profiles, span, self.device_target) - profile = generator.generate_run_profile() - return profile diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/memory_parser.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/memory_parser.py deleted file mode 100644 index 64b78127a..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/memory_parser.py +++ /dev/null @@ -1,331 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# -------------------------------------------------------------------------- -from collections import defaultdict -from enum import IntEnum -from typing import Dict, Iterable, List, Optional, Tuple - -from .. import utils -from .node import OperatorNode, is_operator_node -from .op_agg import aggregate_ops -from .trace import DeviceType, MemoryEvent - -logger = utils.get_logger() - - -class MemoryMetrics(IntEnum): - SelfIncreaseSize = 0 - SelfAllocationSize = 1 - SelfAllocationCount = 2 - IncreaseSize = 3 - AllocationSize = 4 - AllocationCount = 5 - - -class MemoryRecord: - def __init__(self, scope: str, pid: int, tid: int, ts: int, - device_type: DeviceType, device_id: int, - address: int, record_bytes: int, total_allocated: float, total_reserved: float): - self.scope = scope - self.tid = tid - self.pid = pid - self.ts = ts - self.device_type = device_type - self.device_id = device_id - self.addr = address - self.bytes = record_bytes - self.total_allocated = total_allocated - self.total_reserved = total_reserved - self.op_name: Optional[str] = None - self.parent_op_name: Optional[str] = None - - @property - def device_name(self): - if self.device_type == DeviceType.CPU: - return 'CPU' - elif self.device_type == DeviceType.CUDA: - return 'GPU{}'.format(self.device_id) - else: - return None - - @property - def is_allocation(self): - return self.bytes > 0 - - @property - def op_name_or_unknown(self): - return self.op_name if self.op_name else '' - - @classmethod - def from_event(cls, event: MemoryEvent): - return cls(event.scope, event.pid, event.tid, event.ts, event.device_type, event.device_id, - event.addr, event.bytes, event.total_allocated, event.total_reserved) - - def __repr__(self) -> str: - return f"<{'+' if self.bytes>0 else ''}{self.bytes}B, addr: {self.addr}, ts: {self.ts}>" - - -class MemorySnapshot: - def __init__(self, memory_records: Iterable[MemoryRecord], - op_memory_table: Dict[OperatorNode, List[MemoryRecord]], - processed_nodes: Dict[OperatorNode, int]) -> None: - self.memory_records = memory_records - self.op_memory_table = op_memory_table - # the visited node times from parent to child - # troubleshooting issue purpose. - self.processed_node = processed_nodes - self.unreached_node = defaultdict(list) - - def get_peak_memory(self) -> Dict[Tuple[DeviceType, int], int]: - peaks = defaultdict(int) - for r in self.memory_records: - if r.total_allocated == r.total_allocated: # !isnan - peaks[(r.device_type, r.device_id)] = max(peaks[(r.device_type, r.device_id)], r.total_allocated) - return peaks - - def get_memory_statistics(self, - tid2tree: Dict[int, OperatorNode], - start_ts=None, end_ts=None) -> Dict[str, Dict[str, List[int]]]: - metric_length = len(MemoryMetrics) - self_metric_length = metric_length // 2 - - def dict_factory(): - return defaultdict(lambda: [0] * metric_length) - - # traverse outputs - op_list: List[OperatorNode] = [] - # two level keys dictionary - # first keyed by node, then keyed by device (CPU/GPU0/GPU1/etc.) - memory_metrics_keyed_by_node: Dict[OperatorNode, Dict[str, List[int]]] = defaultdict(dict_factory) - - def traverse_node_memory(node: OperatorNode): - if start_ts is not None and node.end_time < start_ts: - return - if end_ts is not None and node.start_time > end_ts: - return - - is_op = is_operator_node(node) - if is_op: - op_list.append(node) - - if node not in self.processed_node: - self.unreached_node[tid].append(node) - # since the node has not been visited for insert memory records, just ignore all childrens - return - elif is_op: - node_memory_metrics = self.get_memory_metrics(node, start_ts, end_ts) - for device, metrics in node_memory_metrics.items(): - # device is name of device like: CPU/GPU0 - # metrics is an arrary [SelfIncreaseSize, SelfAllocationSize, SelfAllocationCount] - for i, value in enumerate(metrics): - memory_metrics_keyed_by_node[node][device][i] = value - memory_metrics_keyed_by_node[node][device][i + self_metric_length] += value - else: - logger.debug('node {}:{} is not operator node, will skip its self metrics processing'.format( - node.name, node.start_time)) - - # recursive the children nodes - for child in node.children: - traverse_node_memory(child) - # sum up the child metrics - for device, metrics in memory_metrics_keyed_by_node[child].items(): - for i in range(self_metric_length, metric_length): - memory_metrics_keyed_by_node[node][device][i] += metrics[i] - - for _, root in tid2tree.items(): - for child in root.children: - traverse_node_memory(child) - - # keyed first by device name like CPU/GPU0 etc, then keyed by operator name. - # the value is array [items indexed by MemoryMetrics] - memory_metrics_keyed_by_nodename: Dict[str, Dict[str, List[int]]] = defaultdict(dict_factory) - # node: the instance, device_keyed_metrics: dictionary keyed by device name like CPU/GPU0 - for node, device_keyed_metrics in memory_metrics_keyed_by_node.items(): - if not is_operator_node(node): - # skip the node like Optimizer.step, DataLoader, ProfilerStep#1 etc. - continue - - for device, metrics in device_keyed_metrics.items(): - for i, metric in enumerate(metrics): - memory_metrics_keyed_by_nodename[device][node.name][i] += metric - - # get the op_calls dictionary from module parser result. - op_calls: Dict[str, int] = defaultdict(int) - agg_result = aggregate_ops(op_list, [lambda op: op.name]) - for op_name, op_agg in agg_result[0].items(): - op_calls[op_name] += op_agg.calls - - result: Dict[str, Dict[str, List[int]]] = defaultdict(defaultdict) - for device, node_metrics in memory_metrics_keyed_by_nodename.items(): - for node, values in node_metrics.items(): - if any(values): - result[device][node] = values + [op_calls[node]] - - return result - - def get_memory_metrics(self, op: OperatorNode, start_ts, end_ts): - metrics_count = len([e.name for e in MemoryMetrics if e.name.startswith('Self')]) - memory_metrics: Dict[str, List[int]] = defaultdict(lambda: [0] * metrics_count) - for record in self.op_memory_table[op]: - if start_ts is not None and record.ts < start_ts: - continue - if end_ts is not None and record.ts > end_ts: - continue - name = record.device_name - if name is None: - continue - - memory_metrics[name][MemoryMetrics.SelfIncreaseSize] += record.bytes - if record.bytes > 0: - memory_metrics[name][MemoryMetrics.SelfAllocationSize] += record.bytes - memory_metrics[name][MemoryMetrics.SelfAllocationCount] += 1 - - return memory_metrics - - -class MemoryParser: - def __init__(self, memory_events: Iterable[MemoryEvent]): - # statistics purpose - self.staled_records: List[MemoryRecord] = [] - self.processed_records: List[MemoryRecord] = [] - self.memory_records: List[MemoryRecord] = [MemoryRecord.from_event(e) for e in memory_events] - - def find_memory_nodes(self, tid2tree: Dict[int, OperatorNode]) -> MemorySnapshot: - records_by_tid: Dict[int, List[MemoryRecord]] = defaultdict(list) - for r in self.memory_records: - records_by_tid[r.tid].append(r) - - op_memory_table: Dict[OperatorNode, List[MemoryRecord]] = defaultdict(list) - processed_node = defaultdict(int) - - tree_height = 0 - for tid, records in records_by_tid.items(): - if not records: - continue - - # each item is (parent_node, child_index) that it is visiting. - node_stack: List[Tuple[OperatorNode, int]] = [] - - record_index = 0 - current_node: OperatorNode = tid2tree.get(tid) - child_index = 0 - - if current_node: - processed_node[current_node] += 1 - - while record_index < len(records): - """In the loop, one pass will process one record. The basic logic is: - It will search from the node that last visited since both the records and tree is ordered already - 1. it current node contains the records, then find the exactly child which just embrace it. - 2. otherwise, find the parent node and set the child_index, so that the parent node could continue from - previous visited node. # noqa: E501 - 3. if there is not any node contains the records, then all remaining records will be ignored. - """ - record = records[record_index] - - if len(node_stack) > tree_height: - tree_height = len(node_stack) - - if current_node is None or current_node.start_time is None or current_node.end_time is None: - # 3. Ignore all remaining records. - logger.debug( - 'could not find the node for tid %d, timestamp: %d, record index: %d, total records: %d' % ( - record.tid, record.ts, record_index, len(records))) - self.staled_records.append(records[record_index]) - record_index += 1 - continue - - if record.ts < current_node.start_time: - # this should only happens for root node. - logger.debug('record timestamp %d is less that the start time of %s' % - (record.ts, current_node.name)) - # This record has no chance to be appended to following tree node. - self.staled_records.append(record) - record_index += 1 - continue - elif record.ts >= current_node.end_time: - # 2. pop parent node and update the child_index accordingly. - if len(node_stack) > 0: - current_node, child_index = node_stack.pop() - child_index += 1 - else: - # if there is not item in stack, set it to None - current_node = None - continue - - # 1. find the real node embrace the record. - # Find the node which contains the records from top to downmost. - while child_index < len(current_node.children): - if record.ts < current_node.children[child_index].start_time: - # if current record timestamp is less than the current child's startime, - # we will break the search and keep the child_index not change. So that next time - # we can continue from here. - # there is no any child contains the record.timestamp - # child_find is False at this case. - break - elif record.ts >= current_node.children[child_index].end_time: - # if the record timestamp is greater than the children end time, increment to next child - # until find one contains the record - child_index += 1 - else: - # current children contains the record - processed_node[current_node.children[child_index]] += 1 - - # push child index which will be visited, then continue the loop - node_stack.append((current_node, child_index)) - current_node = current_node.children[child_index] - child_index = 0 - - # the current_node is the one contains the record at this moment. - if is_operator_node(current_node): - op_memory_table[current_node].append(record) - # NOTE: only allocation record can be associated with op. Because deallocation happens at the end - # of a tensor's lifetime which is not deterministic. - if record.is_allocation: - record.op_name = current_node.name - if len(node_stack) > 0: - record.parent_op_name = node_stack[-1][0].name - self.processed_records.append(record) - else: - self.staled_records.append(record) - - # the record is processed - record_index += 1 - - # show summary information - if len(self.staled_records) > 0 and len(self.memory_records) > 0: - logger.debug('{} memory records are skipped in total {} memory records and only {} get processed'.format( - len(self.staled_records), len(self.memory_records), len(self.processed_records))) - if tree_height > 0: - logger.debug('max tree height is {}'.format(tree_height)) - - all_records = self.get_preprocessed_records() - return MemorySnapshot(all_records, op_memory_table, processed_node) - - def get_preprocessed_records(self): - memory_records = sorted(self.memory_records, key=lambda r: r.ts) - - alloc = {} # allocation events may or may not have paired free event - prev_ts = float('-inf') # ensure ordered memory records is ordered - for i, r in enumerate(memory_records): - if r.addr is None: - # profile json data prior to pytorch 1.10 do not have addr - # we should ignore them - continue - if prev_ts > r.ts: - logger.error(f'Invalid value, prev_ts {prev_ts} is greater than end_ts {r.ts}') - return [] - prev_ts = r.ts - addr = r.addr - size = r.bytes - if size > 0: - # Allocation event, to be matched with a Release event - alloc[addr] = i - else: - # Processing a Release event - if addr in alloc: - alloc_r = memory_records[alloc[addr]] - r.op_name = alloc_r.op_name - r.parent_op_name = alloc_r.parent_op_name - del alloc[addr] - return memory_records diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/module_op.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/module_op.py deleted file mode 100644 index 15f1e4ef9..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/module_op.py +++ /dev/null @@ -1,262 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -from collections import namedtuple -from typing import Dict, Generator, Iterable, List, Optional, Set, Tuple, Union - -from .node import (DataLoaderNode, ModuleNode, OperatorNode, OptimizerNode, - PLModuleNode, ProfilerStepNode, is_operator_node) -from .trace import BaseEvent, EventTypes, PLModuleEvent, PythonFunctionEvent - - -class Module: - def __init__(self, name: str, module_id: int, shape: str = ''): - self.name = name - self.module_id = module_id - self.children: List[Module] = [] - - def __hash__(self): - return hash((self.name, self.module_id, tuple(self.children))) - - def __eq__(self, obj) -> bool: - if not isinstance(obj, Module): - return False - - return (self.name == obj.name and - self.module_id == obj.module_id and - self.children == obj.children) - - -class ModuleStats: - def __init__(self, name: str, module_id: int): - self.name = name - self.module_id = module_id - self.occurences: int = 0 - self.operators: int = 0 - self.host_duration: int = 0 - self.device_duration: int = 0 - self.self_host_duration: int = 0 - self.self_device_duration: int = 0 - - @property - def avg_host_duration(self): - return self.host_duration / self.occurences if self.occurences != 0 else 0 - - @property - def avg_device_duration(self): - return self.device_duration / self.occurences if self.occurences != 0 else 0 - - -Stats = namedtuple('Stats', [ - 'name', - 'id', - 'occurences', - 'operators', - 'host_duration', - 'self_host_duration', - 'device_duration', - 'self_device_duration', - 'avg_duration', - 'children']) - - -def aggegate_module_view(tid2tree: Dict[int, OperatorNode], events: List[BaseEvent]) -> Optional[List[Stats]]: - roots = _build_module_hierarchy(events) - modules = _get_node_list(tid2tree, ModuleNode) - if modules and roots: - return _process_module_statistics(modules, roots) - else: - return None - - -def aggegate_pl_module_view(tid2tree: Dict[int, OperatorNode], events: List[BaseEvent]) -> Optional[List[Stats]]: - roots = _build_module_hierarchy_from_name(events) - modules = _get_node_list(tid2tree, PLModuleNode) - if modules and roots: - return _process_module_statistics(modules, roots) - else: - return None - - -def _build_module_hierarchy_from_name(events: List[PLModuleEvent]) -> List[Module]: - pl_module_events = [e for e in events if e.type == EventTypes.PL_MODULE] - name2module: Dict[str, Module] = {} - no_root: Set[str] = set() - - for event in pl_module_events: - if event.name not in name2module: - name2module[event.name] = Module(event.name, 0) - - for name, module in name2module.items(): - if name.find('.') == -1: - continue - parent_name = name[:name.rfind('.')] - if parent_name in name2module: - name2module[parent_name].children.append(module) - no_root.add(module.name) - - return [module for name, module in name2module.items() if name not in no_root] - - -def _build_module_hierarchy(events: List[PythonFunctionEvent]) -> List[Module]: - """Get the module hierarchy from the chome trace events - """ - python_events = [e for e in events if e.type in (EventTypes.PYTHON_FUNCTION, EventTypes.MODULE)] - id_to_event = {e.python_id: e for e in python_events} - - # Extract Python function topology. - children: Dict[int, List[int]] = {} - for e in python_events: - e_id = e.python_id - children.setdefault(e_id, []) - e_parent_id = e.python_parent_id - children.setdefault(e_parent_id, []) - children.get(e_parent_id).append(e_id) - function_leaves = [k for k, v in children.items() if not v] - - # Convert Python function topology to Module topology. - # This is a simple O(n) tree walking algorithm where we start from the leaves - # and walk up, discarding any nodes which are not Module nodes. - module_parent_map = {} - seen = set() - for i in function_leaves: - e = id_to_event[i] - current_module = None - while e is not None: - e_id = e.python_id - if e.type == EventTypes.MODULE: - if current_module is not None: - module_parent_map[current_module.python_id] = e_id - current_module = e - module_parent_map.setdefault(e_id, None) - - seen_key = (e_id, id(current_module)) - if seen_key in seen: - break - seen.add(seen_key) - - e = id_to_event.get(e.python_parent_id, None) - - module_roots = [k for k, v in module_parent_map.items() if v is None] - module_child_map: Dict[int, List[int]] = {} - for child_id, parent_id in module_parent_map.items(): - module_child_map.setdefault(child_id, []) - module_child_map.setdefault(parent_id, []) - module_child_map.get(parent_id).append(child_id) - - # The traverse order is well defined which guarantees that a given topology - # will produce a unique and unambiguous hierarchy. - def append_hierarchy(e_id) -> Module: - e = id_to_event[e_id] - module = Module(e.name, e.module_id) - for idx in module_child_map.get(e_id): - child = append_hierarchy(idx) - module.children.append(child) - return module - - unique_modules: Set[Module] = set() - for e_id in module_roots: - root = append_hierarchy(e_id) - unique_modules.add(root) - - return list(unique_modules) - - -def _aggregate_modules(modules: Iterable[Union[ModuleNode, PLModuleNode]]) -> Dict[Tuple[str, int], ModuleStats]: - """Aggregate the modules based on the name and module_id""" - module_aggs: Dict[Tuple(str, int), ModuleStats] = {} - for m in modules: - key = (m.name, m.module_id) - if key not in module_aggs: - module_aggs[key] = ModuleStats(m.name, m.module_id) - agg = module_aggs[key] - agg.occurences += 1 - - agg.operators += sum(is_operator_node(child) for child in m.children) - - agg.self_host_duration += m.self_host_duration - agg.host_duration += m.end_time - m.start_time - - agg.self_device_duration += m.self_device_duration - agg.device_duration += m.device_duration - - return module_aggs - - -def _get_node_list(tid2tree: Dict[int, OperatorNode], node_class) -> Generator[OperatorNode, None, None]: - """Get all node with node_class from the operator tree""" - def traverse_node(node): - # Check OptimizerNode here because in PytorchLightning PLModuleNode is under OptimizerNoder. - if type(node) not in (ProfilerStepNode, ModuleNode, OperatorNode, OptimizerNode, PLModuleNode, DataLoaderNode): - return - - if isinstance(node, node_class): - yield node - - for child in node.children: - yield from traverse_node(child) - - for _, root in tid2tree.items(): - for child in root.children: - yield from traverse_node(child) - - -def _process_module_statistics( - modules_nodes: Iterable[Union[ModuleNode, PLModuleNode]], - hierarchy: Iterable[Module]) -> List[Stats]: - """Get the module statistics from the ModuleNode(s) and the hierarchy - """ - module_aggs = _aggregate_modules(modules_nodes) - - def process_modules(h_modules: Iterable[Module]): - for m in h_modules: - name = m.name.replace('nn.Module: ', '') - stats = module_aggs.get((m.name, m.module_id)) - - child_stats = list(process_modules(m.children)) - yield Stats( - name, - m.module_id, - stats.occurences, - stats.operators, - stats.host_duration, - stats.self_host_duration, - stats.device_duration, - stats.self_device_duration, - stats.avg_device_duration if stats.avg_device_duration > 0 else stats.avg_host_duration, - child_stats) - - data = sorted(process_modules(hierarchy), key=lambda x: x.name) - return data - - -def get_module_tree(tid2tree: Dict[int, OperatorNode]): - """Get the module tree in timeline""" - from copy import copy - - modules = [] - - def traverse_node(node, parent: Optional[ModuleNode]): - if type(node) not in (ProfilerStepNode, ModuleNode): - return - - if isinstance(node, ModuleNode): - module = copy(node) - # remove the children after copy to keep the module only - module.children = [] - - if parent is None: - modules.append(module) - else: - parent.children.append(module) - parent = module - - for child in node.children: - traverse_node(child, parent) - - for _, root in tid2tree.items(): - for child in root.children: - # since the root node is CallTreeRoot, there is no parent ModuleNode - traverse_node(child, None) - - return modules diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/node.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/node.py deleted file mode 100644 index 0528491c2..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/node.py +++ /dev/null @@ -1,321 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -import sys -from abc import ABC -from typing import List, Optional, Tuple - -from .. import utils -from .tensor_core import TcAllowlist, TcOpAllowlist -from .trace import (DurationEvent, EventTypes, KernelEvent, ModuleEvent, - OperatorEvent, PLProfileEvent, NcclOpNameSet, GlooOpNameSet) - -logger = utils.get_logger() - -ExcludeOpName = ['DataParallel.forward', 'DistributedDataParallel.forward'] - - -class BaseNode(ABC): - def __init__(self, name: str, start_time: int, end_time: int, node_type: str, tid: int, - external_id: Optional[int] = None): - self.name = name - self.start_time = start_time - self.end_time = end_time - self.type = node_type - self.tid = tid - self.external_id = external_id # For consistency check. - - @staticmethod - def get_node_argument(event: DurationEvent): - kwargs = {} - kwargs['name'] = event.name - kwargs['start_time'] = event.ts - kwargs['end_time'] = event.ts + event.duration - kwargs['node_type'] = event.type - kwargs['tid'] = event.tid - - external_id = getattr(event, 'external_id', None) - if external_id is not None: - kwargs['external_id'] = external_id - - return kwargs - - @property - def duration(self) -> int: - if self.start_time is not None and self.end_time is not None: - return self.end_time - self.start_time - else: - return 0 - - -class CommunicationNode(BaseNode): - def __init__(self, input_shape: List[List[int]], input_type: List[str], **kwargs): - super().__init__(**kwargs) - self.input_shape = input_shape - self.input_type = input_type - self.kernel_ranges: List[Tuple[int, int]] = [] - self.real_time_ranges: List[Tuple[int, int]] = [] - self.total_time: int = 0 - self.real_time: int = 0 - self.step_name: str = None - - @classmethod - def create(cls, event: OperatorEvent): - kwargs = BaseNode.get_node_argument(event) - return cls(input_shape=event.input_shape, input_type=event.input_type, **kwargs) - - -class HostNode(BaseNode): - def __init__(self, device_duration: int = 0, **kwargs): - super().__init__(**kwargs) - self.device_duration = device_duration # Total time of Kernel, GPU Memcpy, GPU Memset. - - -class OperatorNode(HostNode): - # Don't use [] as default parameters - def __init__(self, children=None, runtimes=None, input_shape: Optional[List[List[int]]] = None, - input_type: Optional[List[str]] = None, callstack: Optional[str] = None, - self_host_duration: int = 0, self_device_duration: int = 0, **kwargs): - super().__init__(**kwargs) - self.children: List[OperatorNode] = [] if children is None else children # OperatorNode and ProfilerStepNode. - self.runtimes: List[RuntimeNode] = [] if runtimes is None else runtimes # RuntimeNode - self.input_shape = input_shape - self.input_type = input_type - self.callstack = callstack - self.self_host_duration = self_host_duration - self.self_device_duration = self_device_duration - self.tc_eligible = self.name in TcOpAllowlist - self.tc_self_duration = 0 # Time of TC kernels launched by this op excluding its children operators. - self.tc_total_duration = 0 # Time of TC kernels launched by this op including its children operators. - - def fill_stats(self): - def sort_key(x): - if x.start_time and x.end_time: - return x.start_time, -x.end_time - else: - return sys.maxsize, -sys.maxsize - 1 - self.children.sort(key=lambda x: (x.start_time, -x.end_time)) - self.runtimes.sort(key=sort_key) - - for child in self.children: - child.fill_stats() - for rt in self.runtimes: - rt.fill_stats(self) - - self.self_host_duration = self.end_time - self.start_time - for child in self.children: - self.device_duration += child.device_duration - self.self_host_duration -= (child.end_time - child.start_time) - self.tc_total_duration += child.tc_total_duration - # Mark TC eligible as True if any child operator is TC eligible. - if self.type == EventTypes.OPERATOR and not self.tc_eligible and child.tc_eligible: - self.tc_eligible = True - for rt in self.runtimes: - # From PyTorch 1.8 RC1, cpu_self_time does not include runtime's time. - # So here we keep consistent with it. - if rt.end_time is not None and rt.start_time is not None: - self.self_host_duration -= (rt.end_time - rt.start_time) - self.device_duration += rt.device_duration - self.self_device_duration += rt.device_duration - self.tc_self_duration += rt.tc_duration - self.tc_total_duration += rt.tc_duration - if self.type == EventTypes.OPERATOR and not self.tc_eligible and rt.tc_duration > 0: - logger.warning("New Tensor Cores eligible operator found: '{}'!".format(self.name)) - self.tc_eligible = True - - def get_operator_and_kernels(self): - ops: List[OperatorNode] = [] - kernels: List[DeviceNode] = [] - for child in self.children: - child_ops, child_kernels = child.get_operator_and_kernels() - ops.extend(child_ops) - kernels.extend(child_kernels) - for rt in self.runtimes: - kernels.extend(list(rt.get_kernels())) - - if is_operator_node(self): - ops.append(self) - - return ops, kernels - - @classmethod - def create(cls, event: OperatorEvent): - kwargs = BaseNode.get_node_argument(event) - return cls(input_shape=event.input_shape, input_type=event.input_type, callstack=event.callstack, **kwargs) - - -class ProfilerStepNode(OperatorNode): - def __init__(self, **kwargs): - super().__init__(**kwargs) - - -class ModuleNode(OperatorNode): - def __init__(self, module_id: int, python_id: int, python_parent_id: int, **kwargs): - super().__init__(**kwargs) - self.module_id = module_id - self.python_id = python_id - self.python_parent_id = python_parent_id - - def fill_stats(self): - super().fill_stats() - self.self_device_duration += get_chilren_self_device_time(self) - - @classmethod - def create(cls, event: ModuleEvent): - kwargs = BaseNode.get_node_argument(event) - kwargs['module_id'] = event.module_id - kwargs['python_id'] = event.python_id - kwargs['python_parent_id'] = event.python_parent_id - # From the time being, the ModuleNode always have external_id to 0. - # As the result, we need reset the external_id to None to ignore adding the runtime nodes for ModuleNode - kwargs.pop('external_id', None) - return cls(**kwargs) - - -class BackwardNode(OperatorNode): - def __init__(self, **kwargs): - super().__init__(**kwargs) - - def fill_stats(self): - """Override the timestamps and duration for BackwardNode only - """ - self.children.sort(key=lambda x: (x.start_time, -x.end_time)) - self.start_time = self.children[0].start_time - self.end_time = self.children[-1].end_time - - self.self_host_duration = self.end_time - self.start_time - for child in self.children: - self.device_duration += child.device_duration - self.self_host_duration -= (child.end_time - child.start_time) - self.tc_total_duration += child.tc_total_duration - # Mark TC eligible as True if any child operator is TC eligible. - if not self.tc_eligible and child.tc_eligible: - self.tc_eligible = True - - -class PLProfileNode(OperatorNode): - def __init__(self, **kwargs): - super().__init__(**kwargs) - - @classmethod - def create(cls, event: PLProfileEvent): - kwargs = BaseNode.get_node_argument(event) - return cls(**kwargs) - - -class PLModuleNode(OperatorNode): - def __init__(self, module_id: int, **kwargs): - super().__init__(**kwargs) - self.module_id = module_id - - def fill_stats(self): - super().fill_stats() - self.self_device_duration += get_chilren_self_device_time(self) - - @classmethod - def create(cls, event: PLProfileEvent): - kwargs = BaseNode.get_node_argument(event) - kwargs['module_id'] = event.module_id - return cls(**kwargs) - - -class DataLoaderNode(OperatorNode): - def __init__(self, **kwargs): - super().__init__(**kwargs) - - -class OptimizerNode(OperatorNode): - def __init__(self, **kwargs): - super().__init__(**kwargs) - - -class RuntimeNode(HostNode): - def __init__(self, device_nodes: Optional[List['DeviceNode']] = None, **kwargs): - super().__init__(**kwargs) - # One runtime could trigger more than one kernel, such as cudaLaunchCooperativeKernelMultiDevice. - self.device_nodes = sorted(device_nodes, key=lambda x: (x.start_time, -x.end_time)) if device_nodes else None - self.tc_duration: int = 0 # Time summarization of all its launched kernels. - - def fill_stats(self, op_node: OperatorNode = None): - if self.device_nodes: - for device_node in self.device_nodes: - if op_node: - device_node.op_name = op_node.name - device_node.op_tc_eligible = op_node.tc_eligible - device_duration = device_node.end_time - device_node.start_time - self.device_duration += device_duration - self.tc_duration += device_duration if device_node.tc_used else 0 - - def get_kernels(self): - if self.device_nodes: - for d in self.device_nodes: - if d.type == EventTypes.KERNEL: - yield d - - @classmethod - def create(cls, event, device_nodes: Optional[List['DeviceNode']]): - kwargs = BaseNode.get_node_argument(event) - return cls(device_nodes=device_nodes, **kwargs) - - -class DeviceNode(BaseNode): - def __init__(self, - blocks_per_sm: Optional[float] = None, - occupancy: int = None, - grid: Optional[List[int]] = None, - block: Optional[List[int]] = None, - regs_per_thread: int = None, - shared_memory: int = None, - device_id: int = None, **kwargs): - super().__init__(**kwargs) - self.op_tc_eligible = False - self.op_name = None - self.blocks_per_sm = blocks_per_sm - self.occupancy = occupancy - self.grid = grid - self.block = block - self.regs_per_thread = regs_per_thread - self.shared_memory = shared_memory - self.tc_used = self.name in TcAllowlist - self.device_id = device_id - - @classmethod - def create(cls, event: KernelEvent): - kwargs = BaseNode.get_node_argument(event) - if event.type == EventTypes.KERNEL: - kwargs['blocks_per_sm'] = event.blocks_per_sm - kwargs['occupancy'] = event.occupancy - kwargs['grid'] = event.grid - kwargs['block'] = event.block - kwargs['regs_per_thread'] = event.regs_per_thread - kwargs['shared_memory'] = event.shared_memory - kwargs['device_id'] = event.device_id - return cls(**kwargs) - - -def create_operator_node(event: OperatorEvent): - if (event.name.startswith('enumerate(DataLoader)#') and event.name.endswith('.__next__') - or event.name.startswith('enumerate(DataPipe)#')): - return DataLoaderNode.create(event) - elif event.name.startswith('Optimizer.step'): - return OptimizerNode.create(event) - elif event.type == EventTypes.USER_ANNOTATION: - if event.name in GlooOpNameSet or event.name in NcclOpNameSet: - return OperatorNode.create(event) - else: - return None - else: - return OperatorNode.create(event) - - -def is_operator_node(node: BaseNode): - return bool(isinstance(node, OperatorNode) and node.type == EventTypes.OPERATOR and node.name not in ExcludeOpName - and not node.name.startswith("Optimizer.")) # exclude Optimizer.zero_grad - - -def get_chilren_self_device_time(node): - self_device_duration = 0 - for child in node.children: - if is_operator_node(child): - self_device_duration += child.device_duration - return self_device_duration diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/op_agg.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/op_agg.py deleted file mode 100644 index d6fdb5903..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/op_agg.py +++ /dev/null @@ -1,164 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# -------------------------------------------------------------------------- -import sys -from collections import defaultdict -from typing import Callable, Dict, List - -from .. import utils -from .node import DeviceNode, OperatorNode - -logger = utils.get_logger() - - -class OperatorAgg: - def __init__(self, op: OperatorNode): - self.name = op.name - self.input_shape = str(op.input_shape) # Optional - - self.callstacks = set() # Optional - self.calls: int = 0 - self.host_duration: int = 0 - self.device_duration: int = 0 - self.self_host_duration: int = 0 - self.self_device_duration: int = 0 - self.tc_eligible = op.tc_eligible - self.tc_self_duration: int = 0 - self.tc_total_duration: int = 0 - - @property - def tc_self_ratio(self) -> float: - return self.tc_self_duration / self.self_device_duration if self.self_device_duration > 0 else 0 - - @property - def tc_total_ratio(self) -> float: - return self.tc_total_duration / self.device_duration if self.device_duration > 0 else 0 - - -def aggregate_ops(op_list: List[OperatorNode], - keys_func: List[Callable[[OperatorNode], str]]) -> List[Dict[str, OperatorAgg]]: - def aggregate(key_to_agg: Dict[str, OperatorAgg], key: str, op: OperatorNode): - if key not in key_to_agg: - key_to_agg[key] = OperatorAgg(op) - agg = key_to_agg[key] - agg.callstacks.add(op.callstack) - agg.calls += 1 - agg.host_duration += op.duration - agg.device_duration += op.device_duration - agg.self_host_duration += op.self_host_duration - agg.self_device_duration += op.self_device_duration - agg.tc_self_duration += op.tc_self_duration - agg.tc_total_duration += op.tc_total_duration - - agg_dicts: List[Dict[str, OperatorAgg]] = [{} for _ in range(len(keys_func))] - for op in op_list: - for i, key_func in enumerate(keys_func): - key = key_func(op) - aggregate(agg_dicts[i], key, op) - - return agg_dicts - - -class KernelAggByNameOp: - def __init__(self, kernel: DeviceNode, op_name: str): - self.name = kernel.name - self.op_name = op_name - self.grid = kernel.grid - self.block = kernel.block - self.regs_per_thread = kernel.regs_per_thread - self.shared_memory = kernel.shared_memory - - self.calls: int = 0 - self.total_duration: int = 0 - self.min_duration: int = sys.maxsize - self.max_duration: int = 0 - self.blocks_per_sm = 0.0 - self.occupancy = 0.0 - self.tc_used = kernel.tc_used - self.op_tc_eligible = kernel.op_tc_eligible - - @property - def avg_duration(self): - return self.total_duration / self.calls if self.calls > 0 else 0 - - @property - def avg_blocks_per_sm(self) -> float: - return self.blocks_per_sm / self.total_duration if self.total_duration > 0 else 0 - - @property - def avg_occupancy(self) -> float: - return self.occupancy / self.total_duration if self.total_duration > 0 else 0 - - -def aggregate_kernels(kernel_list: List[DeviceNode]) -> List[KernelAggByNameOp]: - name_op_to_agg: Dict[str, KernelAggByNameOp] = {} - for kernel in kernel_list: - dur = kernel.end_time - kernel.start_time - op_name = 'N/A' if kernel.op_name is None else kernel.op_name - key = '###'.join((kernel.name, op_name, - str(kernel.grid), str(kernel.block), - str(kernel.regs_per_thread or '0'), str(kernel.shared_memory or '0'))) - if key not in name_op_to_agg: - name_op_to_agg[key] = KernelAggByNameOp(kernel, op_name) - agg = name_op_to_agg[key] - agg.calls += 1 - agg.total_duration += dur - agg.min_duration = min(agg.min_duration, dur) - agg.max_duration = max(agg.max_duration, dur) - agg.blocks_per_sm += float(kernel.blocks_per_sm or 0) * dur - agg.occupancy += float(kernel.occupancy or 0) * dur - - kernel_list_groupby_name_op = list(name_op_to_agg.values()) - return kernel_list_groupby_name_op - - -class ModuleAggregator: - - def __init__(self): - self.op_list_groupby_name: List[OperatorAgg] = None # For Operator-view. - self.op_list_groupby_name_input: List[OperatorAgg] = None # For Operator-view. - self.kernel_list_groupby_name_op: List[KernelAggByNameOp] = None # For Kernel-view. - self.stack_lists_group_by_name: Dict[str, List[OperatorAgg]] = None - self.stack_lists_group_by_name_input: Dict[str, List[OperatorAgg]] = None - self.ops: List[OperatorNode] = None - - def aggregate(self, tid2tree: Dict[int, OperatorNode]): - # get the operators and kernels recursively by traverse the node tree root. - ops: List[OperatorNode] = [] - kernels: List[DeviceNode] = [] - for root in tid2tree.values(): - root_ops, root_kernels = root.get_operator_and_kernels() - ops.extend(root_ops) - kernels.extend(root_kernels) - - # aggregate both kernels and operators - self.kernel_list_groupby_name_op = aggregate_kernels(kernels) - - keys: List[Callable[[OperatorNode], str]] = [ - lambda x: x.name, - lambda x: '###'.join((x.name, str(x.input_shape))), - lambda x: '###'.join((x.name, str(x.callstack))), - lambda x: '###'.join((x.name, str(x.input_shape), str(x.callstack))) - ] - agg_result = aggregate_ops(ops, keys) - stack_lists_group_by_name: Dict[str, List[OperatorAgg]] = defaultdict(list) - stack_lists_group_by_name_input: Dict[str, List[OperatorAgg]] = defaultdict(list) - for agg in agg_result[2].values(): - if len(agg.callstacks) != 1: - logger.error(f'Incorrect length of callstacks, expected 1 but got {len(agg.callstacks)}') - break - if list(agg.callstacks)[0]: - stack_lists_group_by_name[agg.name].append(agg) - for agg in agg_result[3].values(): - if len(agg.callstacks) != 1: - logger.error(f'Incorrect length of callstacks, expected 1 but got {len(agg.callstacks)}') - break - if list(agg.callstacks)[0]: - key = agg.name + '###' + str(agg.input_shape) - stack_lists_group_by_name_input[key].append(agg) - - self.op_list_groupby_name = list(agg_result[0].values()) - self.op_list_groupby_name_input = list(agg_result[1].values()) - self.stack_lists_group_by_name = stack_lists_group_by_name - self.stack_lists_group_by_name_input = stack_lists_group_by_name_input - self.ops = ops diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/op_tree.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/op_tree.py deleted file mode 100644 index fe919b29c..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/op_tree.py +++ /dev/null @@ -1,355 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -import math -import sys -from collections import defaultdict -from typing import Dict, Iterable, List, Optional, Tuple - -from .. import utils -from .node import (BackwardNode, DeviceNode, ModuleNode, OperatorNode, - ProfilerStepNode, RuntimeNode, is_operator_node) -from .trace import EventTypes - -logger = utils.get_logger() - - -class OpTreeBuilder: - BACKWARD_ROOT_PREFIX = 'autograd::engine::evaluate_function:' - BACKWARD_ACCUMULATE_GRAD = 'autograd::engine::evaluate_function: torch::autograd::AccumulateGrad' - - def __init__(self): - self.main_tid: int = None - self.tid2tree: Dict[int, OperatorNode] = None - - def build_tree(self, - tid2list: Dict[int, List[OperatorNode]], - tid2zero_rt_list: Dict[int, List[RuntimeNode]], - staled_device_nodes: List[DeviceNode], - fwd_bwd_map: Dict[int, int], - is_ascend=False): - """Construct the BackwardNode and replace the original backward nodes - """ - self.tid2tree = self._build_tree(tid2list, tid2zero_rt_list, staled_device_nodes, is_ascend) - - # if could not find any forward/backward association, skip the processing - if not fwd_bwd_map: - logger.debug('there is no any forwarwd backward association, skip processing backward correlation.') - return self.tid2tree - - self._set_main_tid() - - modules, backward_nodes = self._get_modules() - if not modules or not backward_nodes: - return self.tid2tree - - _, ts2parent = OpTreeBuilder._get_node_parents(backward_nodes) - agg_nodes = OpTreeBuilder._group_backward_nodes(backward_nodes) - fwd_bwd_root = self._get_backward_roots(fwd_bwd_map, ts2parent, agg_nodes) - if len(agg_nodes) > 0: - logger.warning('some nodes cannot find forward nodes') - - backward_modules: List[BackwardNode] = [] - for module in modules: - OpTreeBuilder._build_backward_module(module, None, fwd_bwd_root, backward_modules) - OpTreeBuilder._insert_backward_modules(self.tid2tree.get(self.main_tid), backward_modules) - self.tid2tree = {tid: root for tid, root in self.tid2tree.items() if len(root.children) > 0} - - return self.tid2tree - - def _build_tree(self, tid2list: Dict[int, List[OperatorNode]], tid2zero_rt_list, staled_device_nodes, is_ascend): - tid2tree = {} - - for tid, op_list in tid2list.items(): - zero_rt_list = tid2zero_rt_list[tid] if tid in tid2zero_rt_list else [] - # Note that when 2 start_time are equal, the one with bigger end_time should be ahead of the other. - op_list.sort(key=lambda x: (x.start_time, -x.end_time)) - main_tid = any([op.name.startswith('ProfilerStep#') for op in op_list]) - if main_tid: - # only append the staled device nodes into main thread - self.main_tid = op_list[0].tid - root_node = OpTreeBuilder._build_tree_internal(op_list, zero_rt_list, tid, staled_device_nodes, - is_ascend) - else: - root_node = OpTreeBuilder._build_tree_internal(op_list, zero_rt_list, tid, [], is_ascend) - tid2tree[int(tid)] = root_node - - return tid2tree - - def _set_main_tid(self): - if self.main_tid is None and self.tid2tree: - if len(self.tid2tree) == 1: - self.main_tid = next(iter(self.tid2tree)) - else: - # there are multiple tids - backward_tid = self._find_backward_tid() - tid2len = { - tid: root.end_time - root.start_time - for tid, root in self.tid2tree.items() - if tid != backward_tid or backward_tid is None - } - # get the maximum length as the main thread - self.main_tid = max(tid2len, key=tid2len.get) - - def _find_backward_tid(self): - for root in self.tid2tree.values(): - for child in root.children: - if child.name.startswith(OpTreeBuilder.BACKWARD_ROOT_PREFIX): - return child.tid - - return None - - @staticmethod - def _build_tree_internal(host_node_list, zero_rt_list, tid, staled_device_nodes, is_ascend): - """host_node_list: list of OperatorNode and ProfilerStepNode. - zero_rt_list: list of RuntimeNode with external_id=0.""" - - def build_tree_relationship(host_node_list: Iterable[OperatorNode], zero_rt_list, staled_device_nodes): - dummpy_rt: List[RuntimeNode] = [] - if staled_device_nodes: - # Note: Although kernels of this dummy runtime is put under main thread's tree, - # we don't know which thread launches them. - dummpy_rt.append(RuntimeNode( - name='dummy', - start_time=None, - end_time=None, - node_type=EventTypes.RUNTIME, - tid=0, - device_nodes=staled_device_nodes)) - dummpy_rt[0].fill_stats() - node_stack: List[OperatorNode] = [] - root_node = OperatorNode( - name='CallTreeRoot', - start_time=-sys.maxsize - 1, - end_time=sys.maxsize, - node_type=EventTypes.PYTHON, - tid=tid, - runtimes=zero_rt_list + dummpy_rt) # Give the list of RuntimeNode with external_id=0 to root node. - node_stack.append(root_node) - for node in host_node_list: - while True: # break loop when the node is inserted. - tail_node = node_stack[-1] - if node.start_time < tail_node.end_time: - if node.end_time <= tail_node.end_time or ( - is_ascend and math.isclose(node.end_time, tail_node.end_time, rel_tol=1)): - tail_node.children.append(node) - node_stack.append(node) - else: - logger.error('Error in input data: ranges on the same thread should not intersect!' - 'Father:({},{},{}) Child:({},{},{})' - .format(tail_node.name, tail_node.start_time, tail_node.end_time, - node.name, node.start_time, node.end_time)) - break - else: - node_stack.pop() - return root_node - - # Merge the consecutive calls to same function into one. - # Just follow the same pattern in torch/autograd/profiler.py, - # EventList._remove_dup_nodes - def remove_dup_nodes(node: OperatorNode): - if node.type == EventTypes.RUNTIME: - return - if len(node.children) == 1: - child = node.children[0] - if node.name == child.name and node.type == EventTypes.OPERATOR and child.type == EventTypes.OPERATOR: - node.children = child.children - node.runtimes = child.runtimes # Keep consistent with autograd profiler. - remove_dup_nodes(node) # This node may have to merge with child's child. - return - - for child in node.children: - remove_dup_nodes(child) - - root_node = build_tree_relationship(host_node_list, zero_rt_list, staled_device_nodes) - remove_dup_nodes(root_node) - root_node.fill_stats() - - # replace the root_node start_time/end_time - root_node.start_time = next((child.start_time for child in root_node.children - if child.start_time is not None), None) - root_node.end_time = next((child.end_time for child in reversed(root_node.children) - if child.end_time is not None), None) - return root_node - - def _get_modules(self) -> Tuple[List[ModuleNode], List[OperatorNode]]: - """Get the ModuleNodes and backward root nodes - If there are any ModuleNodes, the backward roots will be removed from the tree - so that later a new BackwardNode will be replaced. - """ - modules: List[ModuleNode] = [] - backward_nodes: Dict[OperatorNode, List[OperatorNode]] = defaultdict(list) - - def traverse_node(parent, node: OperatorNode): - if isinstance(node, ModuleNode): - modules.append(node) - elif isinstance(node, ProfilerStepNode): - for child in node.children: - traverse_node(node, child) - else: - if node.name.startswith(OpTreeBuilder.BACKWARD_ROOT_PREFIX): - backward_nodes[parent].append(node) - else: - pass - - for root in self.tid2tree.values(): - for child in root.children: - traverse_node(root, child) - - if modules: - backward_nodes_flatten: List[OperatorNode] = [] - # only remove the backward nodes when the module information exist - for p, nodes in backward_nodes.items(): - p.children = [child for child in p.children if child not in nodes] - backward_nodes_flatten.extend(nodes) - - return modules, backward_nodes_flatten - else: - return None, None - - @staticmethod - def _get_node_parents(nodes: Iterable[OperatorNode]): - """Get the child->parent relationship for these nodes""" - ts_to_node: Dict[int, OperatorNode] = {} - ts_to_parent: Dict[int, OperatorNode] = {} - - def traverse_node(node: OperatorNode): - if node.start_time not in ts_to_node: - ts_to_node[node.start_time] = node - for child in node.children: - if child.start_time not in ts_to_parent: - ts_to_parent[child.start_time] = node - traverse_node(child) - - for node in nodes: - traverse_node(node) - return ts_to_node, ts_to_parent - - @staticmethod - def _group_backward_nodes(nodes: Iterable[OperatorNode]) -> Dict[OperatorNode, List[OperatorNode]]: - """All nodes are backward nodes startswith autograd::engine::evaluate_function. - If one node's name is autograd::engine::evaluate_function: torch::autograd::AccumulateGrad, - it should be grouped with previous normal backward node. Otherwise, a new backward node should be started - """ - grouped_bwd_nodes: List[List[OperatorNode]] = [] - for node in nodes: - if node.name == OpTreeBuilder.BACKWARD_ACCUMULATE_GRAD: - grouped_bwd_nodes[-1].append(node) - else: - grouped_bwd_nodes.append([node]) - - # return the root backward node -> aggregated backward nodes array - # if there is no any AccumulateGrad accompanied with it, then the key:value is itself. - return {nodes[0]: nodes for nodes in grouped_bwd_nodes} - - @staticmethod - def _get_backward_roots(fwd_bwd_map: Dict[int, int], - ts2parent: Dict[int, OperatorNode], - backward_nodes: Dict[OperatorNode, List[OperatorNode]]) -> Dict[int, List[OperatorNode]]: - if not fwd_bwd_map: - return None - - fwd_to_bwdroot: Dict[int, List[OperatorNode]] = {} - for fwd, bwd in fwd_bwd_map.items(): - parent = ts2parent.get(bwd) - while parent is not None and not parent.name.startswith(OpTreeBuilder.BACKWARD_ROOT_PREFIX): - parent = ts2parent.get(parent.start_time) - - if parent: - fwd_to_bwdroot[fwd] = backward_nodes.pop(parent) - else: - logger.warning('parent is None for', bwd) - - return fwd_to_bwdroot - - @staticmethod - def _build_backward_module(node: ModuleNode, - parent: Optional[BackwardNode], - fwd_bwd_map: Dict[int, List[OperatorNode]], - result: List[BackwardNode]): - """Construct the backward module from root (node argument) and - insert it into result array if there is no any parent associated with it. - """ - if not fwd_bwd_map: - logger.warning('The forward backward map is empty. The backward construction is skipped.') - return - - if isinstance(node, ModuleNode): - backward_node = BackwardNode(name=node.name + '.backward', start_time=None, end_time=None, - node_type='backward', tid=0) - if parent is None: - result.append(backward_node) - else: - parent.children.append(backward_node) - parent = backward_node - - for child in node.children: - if parent: - if is_operator_node(child): - bwd_ops = fwd_bwd_map.get(child.start_time) - if bwd_ops: - parent.children.extend(bwd_ops) - - OpTreeBuilder._build_backward_module(child, parent, fwd_bwd_map, result) - - if isinstance(node, ModuleNode) and parent and parent.children: - parent.fill_stats() - parent.tid = parent.children[0].tid - - @staticmethod - def _insert_backward_modules(root: OperatorNode, backward_modules: List[BackwardNode]): - backward_modules.sort(key=lambda x: (x.start_time, -x.end_time)) - - # each item is (parent_node, child_index) that it is visiting. - node_stack = [] - module_index = 0 - child_index = 0 - current_node = root - - staled_modules = [] - - while module_index < len(backward_modules): - module = backward_modules[module_index] - if current_node is None: - # ignore all remaining modules - staled_modules.append(module) - module_index += 1 - continue - - if module.end_time < current_node.start_time: - staled_modules.append(module) - module_index += 1 - continue - elif module.start_time > current_node.end_time: - if node_stack: - # pop parent node and update the child_index accordingly. - current_node, child_index = node_stack.pop() - child_index += 1 - else: - # if there is not item in stack, set it to None - current_node = None - continue - - while child_index < len(current_node.children): - if module.end_time < current_node.children[child_index].start_time: - # if current module is before next child, - # we will break the search and keep the child_index not change. - # As the result, the module will be treated as child of 'current_node' - # So that next time we can continue from here. - # there is no any child contains the record.timestamp - # child_find is False at this case. - break - elif module.start_time >= current_node.children[child_index].end_time: - child_index += 1 - else: - # current children contains the record - node_stack.append((current_node, child_index)) - current_node = current_node.children[child_index] - child_index = 0 - - # when code execute here, it means the current_node will be the parent of backward module - # Add the module into current_node - current_node.children.insert(child_index, module) - # since the children number is increased by 1, we need increment the child_index. - child_index += 1 - module_index += 1 diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/overall_parser.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/overall_parser.py deleted file mode 100644 index c646a33b8..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/overall_parser.py +++ /dev/null @@ -1,114 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# -------------------------------------------------------------------------- -from typing import List, Tuple - -from .. import utils -from .event_parser import ProfileRole -from .range_utils import (get_ranges_sum, intersection_ranges_lists, - merge_ranges, subtract_ranges_lists) - -logger = utils.get_logger() - - -class OverallParser(object): - class Costs: - def __init__(self, costs: List[float] = None): - # the cost length is len(ProfileRole) - if costs is None: - self.costs = [0.] * len(ProfileRole) - else: - self.costs = costs - - @classmethod - def create_from_statistics(cls, statistics: 'OverallParser.Statistics', total_duration: int): - costs = [0.] * len(ProfileRole) - for i, cost_range in enumerate(statistics.cost_ranges): - costs[i] = get_ranges_sum(cost_range) - costs[ProfileRole.Total] = total_duration - return cls(costs) - - class Statistics: - def __init__(self, cost_ranges: List[List[Tuple[int, int]]]): - if not cost_ranges: - raise ValueError('the cost ranges is None') - - self.cost_ranges = cost_ranges - - @classmethod - def create_from_range(cls, steps: List[Tuple[int, int]], role_ranges: List[List[Tuple[int, int]]]): - if len(role_ranges) != ProfileRole.Total - 1: - return cls([]) - - cost_ranges: List[List[Tuple[int, int]]] = [] - slots: List[Tuple[int, int]] = [] - for role in role_ranges: - if slots: - inter_range = intersection_ranges_lists(slots, role) - else: - inter_range = role - slots = merge_ranges(list(steps)) - cost_ranges.append(inter_range) - slots = subtract_ranges_lists(slots, inter_range) - # The last one is ProfileRole.Other - cost_ranges.append(slots) - - return cls(cost_ranges) - - def intersection_with_step(self, step: Tuple[int, int]): - cost_ranges: List[List[Tuple[int, int]]] = [] - step = [step] - for cost_range in self.cost_ranges: - cost_ranges.append(intersection_ranges_lists(step, cost_range)) - - return OverallParser.Statistics(cost_ranges) - - class StepCommunicationCosts: - def __init__(self): - self.computation: int = 0 - self.communication: int = 0 - self.overlap: int = 0 - self.other: int = 0 - - def __init__(self): - self.steps_costs: List[OverallParser.Costs] = [] - self.avg_costs = OverallParser.Costs() - self.communication_overlap: List[OverallParser.StepCommunicationCosts] = [] - - def aggregate(self, steps: List[Tuple[int, int]], role_ranges: List[List[Tuple[int, int]]]): - logger.debug('Overall, statistics') - if len(steps) <= 0: - logger.error('Invalid steps number of 0') - return - global_stats = OverallParser.Statistics.create_from_range(steps, role_ranges) - if role_ranges[ProfileRole.Kernel]: - comm_comp_overlap = intersection_ranges_lists( - role_ranges[ProfileRole.Kernel], role_ranges[ProfileRole.Communication]) - else: - comm_comp_overlap = intersection_ranges_lists( - role_ranges[ProfileRole.CpuOp], role_ranges[ProfileRole.Communication]) - - logger.debug('Overall, aggregation') - for i, step in enumerate(steps): - steps_stat = global_stats.intersection_with_step(step) - self.steps_costs.append(OverallParser.Costs.create_from_statistics(steps_stat, step[1] - step[0])) - for cost_index, _ in enumerate(self.avg_costs.costs): - self.avg_costs.costs[cost_index] += self.steps_costs[i].costs[cost_index] - - comm_costs = OverallParser.StepCommunicationCosts() - comm_costs.overlap = get_ranges_sum(intersection_ranges_lists([step], comm_comp_overlap)) - if role_ranges[ProfileRole.Kernel]: - comm_costs.computation = get_ranges_sum( - intersection_ranges_lists([step], role_ranges[ProfileRole.Kernel])) - else: - comm_costs.computation = get_ranges_sum( - intersection_ranges_lists([step], role_ranges[ProfileRole.CpuOp])) - comm_costs.communication = get_ranges_sum( - intersection_ranges_lists([step], role_ranges[ProfileRole.Communication])) - comm_costs.other = self.steps_costs[i].costs[ProfileRole.Total] +\ - comm_costs.overlap - comm_costs.computation - comm_costs.communication - self.communication_overlap.append(comm_costs) - - valid_steps = len(steps) - for i, _ in enumerate(self.avg_costs.costs): - self.avg_costs.costs[i] /= valid_steps diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/range_utils.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/range_utils.py deleted file mode 100644 index 7344762a6..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/range_utils.py +++ /dev/null @@ -1,190 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -from typing import List, Tuple - - -# src_ranges: item of (start_time, end_time, value) -def merge_ranges_with_value(src_ranges): - from collections import namedtuple - from enum import IntEnum - - class EndpointTypes(IntEnum): - START = 0 - END = 1 - - EndPoint = namedtuple('EndPoint', ['time', 'pt_type', 'value']) - - merged_ranges = [] - if len(src_ranges) > 0: - # Build tuple of (time, type, value) - endpoints: List[EndPoint] = [] - for r in src_ranges: - endpoints.append(EndPoint(r[0], EndpointTypes.START, r[2])) - endpoints.append(EndPoint(r[1], EndpointTypes.END, r[2])) - endpoints.sort(key=lambda x: [x.time, int(x.pt_type)]) # Make START in front of END if equal on time. - - last_endpoint_time = endpoints[0].time - last_value = endpoints[0].value - for i in range(1, len(endpoints)): - ep = endpoints[i] - if ep.time > last_endpoint_time and last_value > 0.0: - approximated_sm_efficiency = min(last_value, 1.0) - merged_ranges.append((last_endpoint_time, ep.time, approximated_sm_efficiency)) - last_endpoint_time = ep.time - if ep.pt_type == EndpointTypes.START: - last_value += ep.value - else: - last_value -= ep.value - - return merged_ranges - - -# range_list1 item is length 3. range_list2 item is length 2. -# Reture value's item is length 3. -def intersection_ranges_lists_with_value(range_list1, range_list2) -> List[Tuple[int, int, int]]: - range_list_dst = [] - if len(range_list1) == 0 or len(range_list2) == 0: - return range_list_dst - r1 = range_list1[0] - r2 = range_list2[0] - i1 = i2 = 0 - while i1 < len(range_list1): - if i2 == len(range_list2): - break - elif r2[1] <= r1[0]: - r2, i2 = pop_list(range_list2, i2) - elif r2[0] <= r1[0] and r2[1] < r1[1]: - if r2[1] > r1[0]: - range_list_dst.append((r1[0], r2[1], r1[2])) - r1 = (r2[1], r1[1], r1[2]) - r2, i2 = pop_list(range_list2, i2) - elif r2[0] <= r1[0]: - if r2[1] >= r1[1]: - range_list_dst.append(r1) - r2 = (r1[1], r2[1]) - r1, i1 = pop_list(range_list1, i1) - elif r2[1] < r1[1]: - if r2[0] > r1[0]: - range_list_dst.append((r2[0], r2[1], r1[2])) - r1 = (r2[1], r1[1], r1[2]) - r2, i2 = pop_list(range_list2, i2) - elif r2[0] < r1[1]: - if r2[1] >= r1[1]: - range_list_dst.append((r2[0], r1[1], r1[2])) - r2 = (r1[1], r2[1]) - r1, i1 = pop_list(range_list1, i1) - else: - if r2[0] >= r1[1]: - r1, i1 = pop_list(range_list1, i1) - return range_list_dst - - -def subtract_ranges_lists(range_list1: List[Tuple[int, int]], - range_list2: List[Tuple[int, int]]) -> List[Tuple[int, int]]: - range_list_dst = [] - if len(range_list1) == 0: - return range_list_dst - if len(range_list2) == 0: - range_list_dst = list(range_list1) - return range_list_dst - r1 = range_list1[0] - r2 = range_list2[0] - i1 = i2 = 0 - while i1 < len(range_list1): - if i2 == len(range_list2): - range_list_dst.append(r1) - r1, i1 = pop_list(range_list1, i1) - elif r2[1] <= r1[0]: - r2, i2 = pop_list(range_list2, i2) - elif r2[0] <= r1[0] and r2[1] < r1[1]: - r1 = (r2[1], r1[1]) - r2, i2 = pop_list(range_list2, i2) - elif r2[0] <= r1[0]: - if r2[1] >= r1[1]: - r2 = (r1[1], r2[1]) - r1, i1 = pop_list(range_list1, i1) - elif r2[0] < r1[1]: - if r2[0] > r1[0]: - range_list_dst.append((r1[0], r2[0])) - r1 = (r2[0], r1[1]) - else: - if r2[0] >= r1[1]: - range_list_dst.append(r1) - r1, i1 = pop_list(range_list1, i1) - return range_list_dst - - -def intersection_ranges_lists(range_list1: List[Tuple[int, int]], - range_list2: List[Tuple[int, int]]) -> List[Tuple[int, int]]: - range_list_dst = [] - if len(range_list1) == 0 or len(range_list2) == 0: - return range_list_dst - r1 = range_list1[0] - r2 = range_list2[0] - i1 = i2 = 0 - while i1 < len(range_list1): - if i2 == len(range_list2): - break - elif r2[1] <= r1[0]: - r2, i2 = pop_list(range_list2, i2) - elif r2[0] <= r1[0] and r2[1] < r1[1]: - if r2[1] > r1[0]: - range_list_dst.append((r1[0], r2[1])) - r1 = (r2[1], r1[1]) - r2, i2 = pop_list(range_list2, i2) - elif r2[0] <= r1[0]: - if r2[1] >= r1[1]: - range_list_dst.append(r1) - r2 = (r1[1], r2[1]) - r1, i1 = pop_list(range_list1, i1) - elif r2[1] < r1[1]: - if r2[0] > r1[0]: - range_list_dst.append(r2) - r1 = (r2[1], r1[1]) - r2, i2 = pop_list(range_list2, i2) - elif r2[0] < r1[1]: - if r2[1] >= r1[1]: - range_list_dst.append((r2[0], r1[1])) - r2 = (r1[1], r2[1]) - r1, i1 = pop_list(range_list1, i1) - else: - if r2[0] >= r1[1]: - r1, i1 = pop_list(range_list1, i1) - return range_list_dst - - -def get_ranges_sum(ranges: List[Tuple[int, int]]) -> int: - total: int = 0 - for item in ranges: - total += (item[1] - item[0]) - return total - - -def pop_list(range_list, index): - next_index = index + 1 - if next_index >= len(range_list): - return None, len(range_list) - next_item = range_list[next_index] - return next_item, next_index - - -def merge_ranges(src_ranges, is_sorted=False) -> List[Tuple[int, int]]: - if not src_ranges: - # return empty list if src_ranges is None or its length is zero. - return [] - - if not is_sorted: - src_ranges.sort(key=lambda x: x[0]) - - merged_ranges = [] - merged_ranges.append(src_ranges[0]) - for src_id in range(1, len(src_ranges)): - src_range = src_ranges[src_id] - if src_range[1] > merged_ranges[-1][1]: - if src_range[0] <= merged_ranges[-1][1]: - merged_ranges[-1] = (merged_ranges[-1][0], src_range[1]) - else: - merged_ranges.append((src_range[0], src_range[1])) - - return merged_ranges diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/run_generator.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/run_generator.py deleted file mode 100644 index 111dc34e8..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/run_generator.py +++ /dev/null @@ -1,1402 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# -# Copyright(c) 2023 Huawei Technologies. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Modifications: Add visualization of PyTorch Ascend profiling. -# -------------------------------------------------------------------------- -import csv -import json -import re -import io as sysio -from collections import OrderedDict, defaultdict -from json import JSONDecodeError -from typing import Dict, Iterable, List -import numpy as np - -from .. import consts, utils, io -from ..run import DistributedRunProfile, RunProfile -from .data import DistributedRunProfileData, RunProfileData -from .module_op import aggegate_module_view, aggegate_pl_module_view -from .op_agg import KernelAggByNameOp, OperatorAgg -from .overall_parser import ProfileRole -from ..utils import Canonicalizer - -logger = utils.get_logger() - - -class RunGenerator(object): - def __init__(self, worker, span, profile_data: RunProfileData, device_target="GPU"): - self.worker = worker - self.span = span - self.profile_data = profile_data - self.statistic_data = {} - self.accelerator_data = {} - self.device_target = device_target - self.component_curve_data = {} - self.process_data = {} - - @staticmethod - def check_overlap_data(title): - # csv: step / compute time / communication_not_overlap / overlap / communication / free time - length = len(title) - if length < 5: - return [] - key = ["computing", "overlapped", "communication(not overlapped)", "free"] - get_key = list() - for j in key: - for i in range(length): - if j == title[i]: - get_key.append(i) - if len(get_key) < 4: - return [] - return get_key - - @staticmethod - def get_table_head(name: str, input_shape: str, call_stack: str, value: list): - if name is None: - return {} - temp = { - 'name': name, 'calls': 0, 'host_self_duration': 0, - 'host_total_duration': 0, 'device_self_duration': 0, 'device_total_duration': 0, - 'tc_self_ratio': 0, 'tc_total_ratio': 0, 'tc_eligible': 'Yes' - } - if input_shape is not None: - temp['input_shape'] = input_shape - if call_stack is not None: - temp['call_stack'] = call_stack - else: - temp['has_call_stack'] = False - else: - if call_stack is not None: - temp['call_stack'] = call_stack - else: - temp['has_call_stack'] = False - for vl in iter(value): - if 'has_call_stack' in temp and vl[2]: - temp['has_call_stack'] = True - temp['calls'] += 1 - temp['host_self_duration'] = round(temp['host_self_duration'] + vl[3], 2) - temp['host_total_duration'] = round(temp['host_total_duration'] + vl[4], 2) - temp['device_self_duration'] = round(temp['device_self_duration'] + vl[5], 2) - temp['device_total_duration'] = round(temp['device_total_duration'] + vl[6], 2) - temp['tc_self_ratio'] = round(temp['tc_self_ratio'] + vl[7], 2) - temp['tc_total_ratio'] = round(temp['tc_total_ratio'] + vl[8], 2) - temp['tc_eligible'] = 'Yes' if temp['tc_self_ratio'] > 0 or temp['tc_total_ratio'] > 0 else 'No' - temp['tc_self_ratio'] = 0 if temp['device_self_duration'] == 0 \ - else round(temp['tc_self_ratio'] / temp['device_self_duration'] * 100, 2) - temp['tc_total_ratio'] = 0 if temp['device_total_duration'] == 0 \ - else round(temp['tc_total_ratio'] / temp['device_total_duration'] * 100, 2) - return temp - - @staticmethod - def get_wait_table_by_ops(op, ops): - total_trans = 0 - total_synchronize = 0 - for key, data in op.items(): - if str(key) == "Total Op Info" and data.get("Communication Time Info"): - total_trans += float(data.get("Communication Time Info").get("Transit Time(ms)")) - total_synchronize += float(data.get("Communication Time Info").get("Synchronization Time(ms)")) - continue - k = re.sub(r'[0-9]+', ' ', key).split(" ")[0] - if k not in ops: - ops[k] = [0, 0, 0, 0] - ops[k][0] += 1 - for _, band in data.get("Communication Bandwidth Info").items(): - ops[k][1] += float(band.get("Transit Size(MB)")) - if data.get("Communication Time Info") is not None: - ops[k][2] += data.get("Communication Time Info").get("Elapse Time(ms)") - ops[k][3] += data.get("Communication Time Info").get("Transit Time(ms)") - return total_trans, total_synchronize - - @staticmethod - def trans_shape(shape: str): - result = list() - if ';' not in shape: - result.append('[' + shape.strip() + ']') - return '[' + ', '.join(result) + ']' - if len(shape.strip()) <= 1: - result.append('[]') - return '[' + ', '.join(result) + ']' - shape_spl = shape.split("\n") - for shape_div in iter(shape_spl): - result.append('[' + str(shape_div.replace(';', '')) + ']') - return '[' + ', '.join(result) + ']' - - @staticmethod - def get_process_peaks_and_devices_type(process_data: dict, memory_metric: str): - devices_type = [] - peaks = {} - for device in process_data: - devices_type.append(device) - reserved_list = process_data.get(device).get('Allocated') - if reserved_list is not None: - max_reserved = 0 - for array_value in reserved_list: - max_reserved = max(array_value[1], max_reserved) - peaks[device] = f'Peak Memory Usage: {max_reserved:.1f}{memory_metric}' - return devices_type, peaks - - @staticmethod - def get_pta_ge_peaks_and_devices_type(process_data: dict, memory_metric: str): - devices_type = [] - peaks = {} - for device in process_data: - devices_type.append(device) - peaks[device] = 'Reserved Peak Memory Usage:' - for component in process_data.get(device): - max_reserved = 0 - for array_value in process_data.get(device).get(component): - max_reserved = max(array_value[2], max_reserved) - peaks[device] += f' {component}-{max_reserved:.1f}{memory_metric} |' - return devices_type, peaks - - @staticmethod - def check_csv_columns(columns: list, column_idxs: dict): - column_exist_count = 0 - for idx, column in enumerate(columns): - if column in column_idxs: - column_idxs[column] = idx - column_exist_count += 1 - return column_idxs.values(), column_exist_count - - @staticmethod - def get_csv_data(path: str): - if path is None: - return [] - datas = [] - with open(path, encoding='utf-8-sig') as f: - for row in csv.reader(f, skipinitialspace=True): - datas.append(row) - return datas - - def generate_run_profile(self): - profile_run = RunProfile(self.worker, self.span) - profile_run.is_pytorch_lightning = self.profile_data.is_pytorch_lightning - profile_run.has_runtime = self.profile_data.has_runtime - profile_run.has_kernel = self.profile_data.has_kernel - profile_run.has_communication = self.profile_data.has_communication - profile_run.has_memcpy_or_memset = self.profile_data.has_memcpy_or_memset - profile_run.profiler_start_ts = self.profile_data.profiler_start_ts - profile_run.device_target = self.device_target - - if self.device_target != 'Ascend': - profile_run.views.append(consts.OVERALL_VIEW) - profile_run.overview = self._generate_overview() - - profile_run.views.append(consts.OP_VIEW) - profile_run.operation_pie_by_name = self._generate_op_pie() - profile_run.operation_table_by_name = self._generate_op_table(self.profile_data.op_list_groupby_name) - profile_run.operation_stack_by_name = self._generate_op_table_for_stack(False) - profile_run.operation_pie_by_name_input = self._generate_op_pie(True) - profile_run.operation_table_by_name_input = self._generate_op_table( - self.profile_data.op_list_groupby_name_input, True) - profile_run.operation_stack_by_name_input = self._generate_op_table_for_stack(True) - - if self.profile_data.has_kernel: - profile_run.views.append(consts.KERNEL_VIEW) - profile_run.kernel_table = self._generate_kernel_table_gpu() - profile_run.kernel_op_table = self._generate_kernel_op_table_gpu() - profile_run.kernel_pie = self._generate_kernel_pie_gpu() - profile_run.tc_pie = self._generate_tc_pie_gpu() - - if self.profile_data.memory_snapshot: - profile_run.views.append(consts.MEMORY_VIEW) - profile_run.memory_snapshot = self.profile_data.memory_snapshot - - profile_run.gpu_metrics = self.profile_data.gpu_metrics_parser.get_gpu_metrics() - - gpu_infos = {gpu_id: RunGenerator.get_gpu_info(self.profile_data.device_props, gpu_id) - for gpu_id in self.profile_data.gpu_metrics_parser.gpu_ids} - gpu_infos = {gpu_id: gpu_info for gpu_id, gpu_info in gpu_infos.items() if gpu_info is not None} - - profile_run.gpu_summary, profile_run.gpu_tooltip = \ - self.profile_data.gpu_metrics_parser.get_gpu_metrics_data_tooltip( - gpu_infos, self.profile_data.tc_ratio) - - profile_run.pl_tid2tree = self.profile_data.pl_tid2tree - - profile_run.module_stats = aggegate_module_view(self.profile_data.tid2tree, self.profile_data.events) - profile_run.pl_module_stats = aggegate_pl_module_view(self.profile_data.tid2tree, self.profile_data.events) - if profile_run.is_pytorch_lightning and profile_run.pl_module_stats: - profile_run.views.append(consts.LIGHTNING_VIEW) - elif profile_run.module_stats: - profile_run.views.append(consts.MODULE_VIEW) - else: - if self.profile_data.has_operator_view: - profile_run.views.append(consts.OP_VIEW) - profile_run.operation_pie_by_name = self._get_operator_pie() - profile_run.operation_table_by_name = self._get_operator_table_by_name() - profile_run.operation_stack_by_name = self._get_call_stack_by_name() - profile_run.operation_pie_by_name_input = self._get_operator_pie(True) - profile_run.operation_table_by_name_input = self._get_operator_table_by_name(True) - profile_run.operation_stack_by_name_input = self._get_call_stack_by_name_shapes(True) - - if self.profile_data.has_kernel: - profile_run.views.append(consts.KERNEL_VIEW) - profile_run.kernel_table = self._generate_kernel_table_npu() - profile_run.kernel_op_table = self._generate_kernel_op_table_npu() - profile_run.kernel_pie = self._generate_kernel_pie_npu() - profile_run.tc_pie = self._generate_tc_pie_npu() - - if self.profile_data.has_memory: - profile_run.views.append(consts.MEMORY_VIEW) - profile_run.memory_div_curve = None - self.process_data, self.component_curve_data = self._handle_memory_data() - profile_run.memory_all_curve = self._get_memory_all_curve() - peak_memory_events = self._handle_memory_component() - profile_run.memory_events = self._get_memory_event(peak_memory_events) - - if self.profile_data.has_communication: - profile_run.step_to_overlap = self._npu_get_overlap() - profile_run.step_to_wait, profile_run.comm_op = self._npu_get_wait_table() - - profile_run.tid2tree = self.profile_data.tid2tree - if self.profile_data.has_trace: - profile_run.views.append(consts.TRACE_VIEW) - profile_run.trace_file_path = self.profile_data.trace_file_path - - return profile_run - - def _npu_get_overlap(self): - path = self.profile_data.distributed_csv_path - overlap_by_steps: Dict[str, List[float]] = OrderedDict() - data = RunGenerator.get_csv_data(path) - if len(data) <= 1: - return overlap_by_steps - title = [x.lower() for x in data[0]] - title_name = RunGenerator.check_overlap_data(title) - if not title_name: - logger.error(f"Incomplete content of CSV file {path}.") - return overlap_by_steps - - for idx, step in enumerate(data[1:]): - try: - key = step[0] - if key == '': - key = 'all' - overlap = [ - float(step[int(title_name[0])]), float(step[int(title_name[1])]), - float(step[int(title_name[2])]), float(step[int(title_name[3])]) - ] - if key in overlap_by_steps: - overlap_by_steps[key] = list(np.add(overlap, overlap_by_steps[key])) - else: - overlap_by_steps[key] = list(overlap) - except (ValueError, IndexError): - logger.error(f'File "{path}" has wrong data format in row {idx + 2} and will skip it.') - return overlap_by_steps - - def _npu_get_wait_table(self): - path = self.profile_data.communication_json_path - if not io.exists(path): - raise FileNotFoundError(path) - data = io.read(path) - wait_by_step: Dict[str, Dict[str, float]] = OrderedDict() - table_ops: Dict[str, List[float]] = OrderedDict() - try: - communication_json = json.loads(data, strict=False) - except JSONDecodeError as e: - try: - communication_json = json.loads(data, strict=False) - except JSONDecodeError: - with sysio.StringIO() as fout: - str_data = data.decode('utf-8') - # only replace the N/A without surrounding double quote - fout.write(re.sub(r'(?', abs(float(ls[size_idx])), - round((float(ls[allocation_idx]) - self.profile_data.profiler_start_ts) / 1000, 3) if ls[ - allocation_idx] else None, - round((float(ls[release_idx]) - self.profile_data.profiler_start_ts) / 1000, 3) if ls[ - release_idx] else None, - round(float(ls[duration_idx]) / 1000, 3) if ls[duration_idx] else None - ] - display_datas[device_type].append(nums) - except ValueError: - logger.error(f'File "{path}" has wrong data format in row {idx + 2} and will skip it.') - table['rows'] = display_datas - for name in display_datas: - devices_type.append(name) - table['metadata'].update({'default_device': devices_type[0]}) - return { - 'operator': table, - 'component': peak_memory_events - } - - def _get_memory_all_curve(self): - time_metric: str = 'ms' - memory_metric: str = 'MB' - cano = Canonicalizer(time_metric, memory_metric) - process_devices_type, process_peaks = RunGenerator.get_process_peaks_and_devices_type(self.process_data, - memory_metric) - total_result = { - 'metadata': { - 'devices': process_devices_type, - 'default_device': process_devices_type[0] if len(process_devices_type) > 0 else '', - 'peaks': process_peaks, - 'totals': {}, - 'first_ts': 0, - 'time_metric': cano.time_metric, - 'memory_metric': cano.memory_metric, - 'time_factor': cano.time_factor, - 'memory_factor': cano.memory_factor, - }, - 'columns': defaultdict(list), - 'rows': self.process_data - } - for device in process_devices_type: - if self.process_data.get(device).get('Allocated') is not None and self.process_data.get(device).get( - 'Reserved') is not None: - total_result['columns'][device].append( - {'name': f'Allocated ({cano.memory_metric})', 'type': 'number', 'tooltip': 'PTA+GE memory in use.'}) - total_result['columns'][device].append( - {'name': f'Reserved ({cano.memory_metric})', 'type': 'number', - 'tooltip': 'PTA+GE reserved memory by allocator, both used and unused.'}) - if len(total_result['columns'][device]) > 0: - total_result['columns'][device].insert(0, {'name': f'Time ({cano.time_metric})', 'type': 'number', - 'tooltip': 'Time since profiler starts.'}) - pta_ge_devices_type, pta_ge_peaks = RunGenerator.get_pta_ge_peaks_and_devices_type(self.component_curve_data, - memory_metric) - component_curve_result = { - 'metadata': { - 'devices': pta_ge_devices_type, - 'default_device': pta_ge_devices_type[0] if len(pta_ge_devices_type) > 0 else '', - 'peaks': pta_ge_peaks, - 'totals': {}, - 'first_ts': 0, - 'time_metric': cano.time_metric, - 'memory_metric': cano.memory_metric, - 'time_factor': cano.time_factor, - 'memory_factor': cano.memory_factor, - }, - 'columns': defaultdict(list), - 'rows': self.component_curve_data - } - for device in pta_ge_devices_type: - if self.component_curve_data.get(device).get('PTA') is not None: - component_curve_result['columns'][device] += [ - {'name': f'PTA Allocated ({cano.memory_metric})', 'type': 'number', - 'tooltip': 'PTA memory in use.'}, - {'name': f'PTA Reserved ({cano.memory_metric})', 'type': 'number', - 'tooltip': 'PTA reserved memory by allocator, both used and unused.'}] - if self.component_curve_data.get(device).get('GE') is not None: - component_curve_result['columns'][device] += [ - {'name': f'GE Allocated ({cano.memory_metric})', 'type': 'number', 'tooltip': 'GE memory in use.'}, - {'name': f'GE Reserved ({cano.memory_metric})', 'type': 'number', - 'tooltip': 'GE reserved memory by allocator, both used and unused.'}] - if self.component_curve_data.get(device).get('APP') is not None: - component_curve_result['columns'][device] += [ - {'name': f'APP Reserved ({cano.memory_metric})', 'type': 'number', - 'tooltip': 'APP reserved memory by allocator, both used and unused.'}] - if len(component_curve_result['columns'][device]) > 0: - component_curve_result['columns'][device].insert(0, {'name': f'Time ({cano.time_metric})', - 'type': 'number', - 'tooltip': 'Time since profiler starts.'}) - device_types = list(set(process_devices_type + pta_ge_devices_type)) - return { - 'devices': device_types, - 'default_device': device_types[0], - 'total': total_result, - 'ptaGe': component_curve_result - } - - def _handle_memory_data(self): - process_data = defaultdict() - pta_or_ge_data = defaultdict() - path = self.profile_data.memory_curve_path - datas = RunGenerator.get_csv_data(path) - required_column_idxs = { - 'Component': -1, - 'Device Type': -1, - 'Timestamp(us)': -1, - 'Total Reserved(MB)': -1, - 'Total Allocated(MB)': -1 - } - (tag_type_idx, device_type_idx, time_idx, reserved_idx, allocated_idx), column_exist_count = \ - RunGenerator.check_csv_columns(datas[0], required_column_idxs) - if column_exist_count < len(required_column_idxs): - logger.error('Required column is missing in file "memory_record.csv"') - else: - for idx, ls in enumerate(datas[1:]): - try: - time_column = round((float(ls[time_idx]) - self.profile_data.profiler_start_ts) / 1000, 3) - device_type = ls[device_type_idx] - if ls[tag_type_idx] == 'PTA+GE': - process_data.setdefault(device_type, {}).setdefault('Allocated', []).append( - [time_column, round(float(ls[allocated_idx]), 3)]) - process_data.setdefault(device_type, {}).setdefault('Reserved', []).append( - [time_column, round(float(ls[reserved_idx]), 3)]) - elif ls[tag_type_idx] == 'APP': - line_chart_data = [time_column, None, round(float(ls[reserved_idx]), 3)] - pta_or_ge_data.setdefault(device_type, {}).setdefault(ls[tag_type_idx], []).append( - line_chart_data) - elif ls[tag_type_idx] in ('PTA', 'GE'): - line_chart_data = [ - time_column, round(float(ls[allocated_idx]), 3), - round(float(ls[reserved_idx]), 3) - ] - pta_or_ge_data.setdefault(device_type, {}).setdefault(ls[tag_type_idx], []).append( - line_chart_data) - except ValueError: - logger.error(f'File "{path}" has wrong data format in row {idx + 2} and will skip it.') - - return process_data, pta_or_ge_data - - def _handle_memory_component(self): - peak_memory_events = { - 'metadata': { - 'title': 'Component Peak Memory', - 'default_device': '', - }, - 'columns': [{'name': 'Component', 'type': 'string'}, - {'name': 'Peak Memory Reserved(MB)', 'type': 'number'}, - {'name': 'Time(ms)', 'type': 'number'}] - } - peak_memory_rows = defaultdict(list) - path = self.profile_data.memory_component_path - component_datas = RunGenerator.get_csv_data(path) - if component_datas: - required_column_idxs = { - 'Component': -1, - 'Timestamp(us)': -1, - 'Total Reserved(MB)': -1, - 'Device': -1 - } - (tag_type_idx, time_idx, reserved_idx, device_type_idx), column_exist_count = \ - RunGenerator.check_csv_columns(component_datas[0], required_column_idxs) - if column_exist_count < len(required_column_idxs): - logger.error(f'Required column is missing in file "{path}"') - else: - for idx, ls in enumerate(component_datas[1:]): - memory_curve_id_dict = { - 'device_type_idx': device_type_idx, - 'reserved_idx': reserved_idx, - 'tag_type_idx': tag_type_idx, - 'time_idx': time_idx - } - try: - self._handle_peak_memory_rows(memory_curve_id_dict, ls, peak_memory_rows) - except (ValueError, TypeError): - logger.error(f'File "{path}" has wrong data format in row {idx + 2} and will skip it.') - peak_memory_events['rows'] = peak_memory_rows - return peak_memory_events - - def _handle_peak_memory_rows(self, memory_curve_id_dict, ls, peak_memory_rows): - # Record the peak memory usage of other components. - has_flag = False - device_type_idx = memory_curve_id_dict.get('device_type_idx') - reserved_idx = memory_curve_id_dict.get('reserved_idx') - tag_type_idx = memory_curve_id_dict.get('tag_type_idx') - time_idx = memory_curve_id_dict.get('time_idx') - time_column = round((float(ls[time_idx]) - self.profile_data.profiler_start_ts) / 1000, 3) - for item in peak_memory_rows[ls[device_type_idx]]: - if item[0] == ls[tag_type_idx]: - if item[1] < ls[reserved_idx]: - item[1] = ls[reserved_idx] - item[2] = time_column - elif item[1] == ls[reserved_idx]: - item[2] = min(item[2], time_column) - has_flag = True - break - if not has_flag: - peak_memory_rows[ls[device_type_idx]].append([ls[tag_type_idx], ls[reserved_idx], time_column]) - - def _generate_overview(self): - def build_part_time_str(part_cost: float, part_name: str): - format_str = ('
    ' - 'Step {}
    ' - 'Total: {}us
    ' - '{}: {}us
    ' - 'Percentage: {}%' - '
    ') - percentage = 0.0 if costs.costs[ProfileRole.Total] == 0 else round( - 100 * part_cost / costs.costs[ProfileRole.Total], 2) - return format_str.format(step_name, costs.costs[ProfileRole.Total], part_name, part_cost, percentage) - - def build_avg_cost_dict(part_name: str, part_cost: float): - profiler_total_cost = self.profile_data.avg_costs.costs[ProfileRole.Total] - cost_dict = {'name': part_name, - 'description': '', - 'value': round(part_cost), - 'extra': 0.0 if profiler_total_cost == 0 else round(100 * part_cost / profiler_total_cost, 2)} - return cost_dict - - show_gpu = (self.profile_data.has_runtime - or self.profile_data.has_kernel or self.profile_data.has_memcpy_or_memset) - - column_tootip = {'type': 'string', 'role': 'tooltip', 'p': {'html': 'true'}} - data = {} - data['steps'] = {} - data['steps']['columns'] = ['Step'] - if show_gpu: - data['steps']['columns'].extend(['Kernel', 'Memcpy', 'Memset']) - if self.profile_data.has_communication: - data['steps']['columns'].append('Communication') - if show_gpu: - data['steps']['columns'].append('Runtime') - data['steps']['columns'].extend(['DataLoader', 'CPU Exec', 'Other']) - - data['steps']['rows'] = [] - for i, costs in enumerate(self.profile_data.steps_costs): - step_name = self.profile_data.steps_names[i] - row = [{'value': step_name}] - if show_gpu: - row.extend([{'value': costs.costs[ProfileRole.Kernel], - 'tooltip': build_part_time_str(costs.costs[ProfileRole.Kernel], 'Kernel')}, - {'value': costs.costs[ProfileRole.Memcpy], - 'tooltip': build_part_time_str(costs.costs[ProfileRole.Memcpy], 'Memcpy')}, - {'value': costs.costs[ProfileRole.Memset], - 'tooltip': build_part_time_str(costs.costs[ProfileRole.Memset], 'Memset')}]) - if self.profile_data.has_communication: - row.append({'value': costs.costs[ProfileRole.Communication], - 'tooltip': build_part_time_str(costs.costs[ProfileRole.Communication], 'Communication')}) - if show_gpu: - row.append({'value': costs.costs[ProfileRole.Runtime], - 'tooltip': build_part_time_str(costs.costs[ProfileRole.Runtime], 'Runtime')}) - row.extend([{'value': costs.costs[ProfileRole.DataLoader], - 'tooltip': build_part_time_str(costs.costs[ProfileRole.DataLoader], 'DataLoader')}, - {'value': costs.costs[ProfileRole.CpuOp], - 'tooltip': build_part_time_str(costs.costs[ProfileRole.CpuOp], 'CPU Exec')}, - {'value': costs.costs[ProfileRole.Other], - 'tooltip': build_part_time_str(costs.costs[ProfileRole.Other], 'Other')}]) - data['steps']['rows'].append(row) - - avg_costs = [] - if show_gpu: - avg_costs.extend([ - build_avg_cost_dict('Kernel', self.profile_data.avg_costs.costs[ProfileRole.Kernel]), - build_avg_cost_dict('Memcpy', self.profile_data.avg_costs.costs[ProfileRole.Memcpy]), - build_avg_cost_dict('Memset', self.profile_data.avg_costs.costs[ProfileRole.Memset]) - ]) - if self.profile_data.has_communication: - avg_costs.extend([ - build_avg_cost_dict('Communication', self.profile_data.avg_costs.costs[ProfileRole.Communication]) - ]) - if show_gpu: - avg_costs.extend([ - build_avg_cost_dict('Runtime', self.profile_data.avg_costs.costs[ProfileRole.Runtime]) - ]) - avg_costs.extend([ - build_avg_cost_dict('DataLoader', self.profile_data.avg_costs.costs[ProfileRole.DataLoader]), - build_avg_cost_dict('CPU Exec', self.profile_data.avg_costs.costs[ProfileRole.CpuOp]), - build_avg_cost_dict('Other', self.profile_data.avg_costs.costs[ProfileRole.Other]) - ]) - - data['performance'] = [ - {'name': 'Average Step Time', 'description': '', - 'value': round(self.profile_data.avg_costs.costs[ProfileRole.Total]), - 'extra': 100, 'children': avg_costs} - ] - - if len(self.profile_data.recommendations) == 0: - html = '
  1. N/A
  2. ' - else: - html = '' - for recommendation in self.profile_data.recommendations: - html += '
  3. {}
  4. '.format(recommendation) - data['recommendations'] = '
      {}
    '.format(html) - - return data - - def _generate_op_pie(self, group_by_input_shape: bool = False): - op_device_total_time = [] - op_device_self_time = [] - op_host_total_time = [] - op_host_self_time = [] - - if group_by_input_shape: - op_list = self.profile_data.op_list_groupby_name_input - else: - op_list = self.profile_data.op_list_groupby_name - - for op_agg in op_list: - # Whether device_duration & self_device_duration are accurate or not depends on the input tracing data. - if op_agg.device_duration > 0: - op_device_total_time.append([op_agg.name, op_agg.device_duration]) - if op_agg.self_device_duration > 0: - op_device_self_time.append([op_agg.name, op_agg.self_device_duration]) - if op_agg.host_duration > 0: - op_host_total_time.append([op_agg.name, op_agg.host_duration]) - if op_agg.self_host_duration > 0: - op_host_self_time.append([op_agg.name, op_agg.self_host_duration]) - - op_device_total_time.sort(key=lambda x: x[1], reverse=True) - op_device_self_time.sort(key=lambda x: x[1], reverse=True) - op_host_total_time.sort(key=lambda x: x[1], reverse=True) - op_host_self_time.sort(key=lambda x: x[1], reverse=True) - - data = {} - device_total_time = {} - device_self_time = {} - host_total_time = {} - host_self_time = {} - - if len(op_device_total_time) > 0: - device_total_time['title'] = 'Device Total Time (us)' - device_total_time['columns'] = [{'type': 'string', 'name': 'name'}, {'type': 'number', 'name': 'value'}] - device_total_time['rows'] = op_device_total_time - else: - device_total_time = None - - if len(op_device_self_time) > 0: - device_self_time['title'] = 'Device Self Time (us)' - device_self_time['columns'] = [{'type': 'string', 'name': 'name'}, {'type': 'number', 'name': 'value'}] - device_self_time['rows'] = op_device_self_time - else: - device_self_time = None - - if len(op_host_total_time) > 0: - host_total_time['title'] = 'Host Total Time (us)' - host_total_time['columns'] = [{'type': 'string', 'name': 'name'}, {'type': 'number', 'name': 'value'}] - host_total_time['rows'] = op_host_total_time - else: - host_total_time = None - - if len(op_host_self_time) > 0: - host_self_time['title'] = 'Host Self Time (us)' - host_self_time['columns'] = [{'type': 'string', 'name': 'name'}, {'type': 'number', 'name': 'value'}] - host_self_time['rows'] = op_host_self_time - else: - host_self_time = None - - data['device_total_time'] = device_total_time - data['device_self_time'] = device_self_time - data['host_total_time'] = host_total_time - data['host_self_time'] = host_self_time - - return data - - def _generate_op_table(self, op_list: Iterable[OperatorAgg], group_by_input_shape=False, call_stack=False): - show_gpu = self.profile_data.has_kernel or self.profile_data.has_memcpy_or_memset - - if group_by_input_shape: - stack_list_dict = self.profile_data.stack_lists_group_by_name_input - else: - stack_list_dict = self.profile_data.stack_lists_group_by_name - - op_list = sorted(op_list, - key=lambda x: x.self_device_duration if show_gpu else x.self_host_duration, - reverse=True) - - data = list() - result = { - 'metadata': { - 'sort': 'device_self_duration' if show_gpu else 'host_self_duration', - 'tooltips': { - 'tc_eligible': consts.TOOLTIP_OP_TC_ELIGIBLE, - 'tc_self_ratio': consts.TOOLTIP_OP_TC_SELF, - 'tc_total_ratio': consts.TOOLTIP_OP_TC_TOTAL - } - }, - 'data': data - } - for op in op_list: - # Whether device_duration & self_device_duration are accurate or not depends on the input tracing data. - row = dict() - row['name'] = op.name - if group_by_input_shape: - row['input_shape'] = op.input_shape - row['calls'] = op.calls - if show_gpu: - row['device_self_duration'] = round(op.self_device_duration) - row['device_total_duration'] = round(op.device_duration) - row['host_self_duration'] = round(op.self_host_duration) - row['host_total_duration'] = round(op.host_duration) - row['tc_eligible'] = 'Yes' if op.tc_eligible else 'No' - row['tc_self_ratio'] = round(100 * op.tc_self_ratio, 2) - row['tc_total_ratio'] = round(100 * op.tc_total_ratio, 2) - if call_stack: - row['call_stack'] = op.callstacks.pop() - else: - if group_by_input_shape: - key = op.name + '###' + str(op.input_shape) - else: - key = op.name - row['has_call_stack'] = key in stack_list_dict - data.append(row) - - return result - - def _generate_op_table_for_stack(self, group_by_input_shape: bool): - if group_by_input_shape: - stack_list_dict = self.profile_data.stack_lists_group_by_name_input - else: - stack_list_dict = self.profile_data.stack_lists_group_by_name - - result = dict() - for k, v in stack_list_dict.items(): - result[k] = self._generate_op_table(v, group_by_input_shape, True) - return result - - def _generate_kernel_op_table_gpu(self): - table = {} - result = { - 'metadata': { - 'sort': 'Total Duration (us)' - }, - 'data': table - } - table['columns'] = [ - {'type': 'string', 'name': 'Name'}, - {'type': 'string', 'name': 'Operator'}, - {'type': 'string', 'name': 'Grid'}, - {'type': 'string', 'name': 'Block'}, - {'type': 'number', 'name': 'Register Per Thread'}, - {'type': 'number', 'name': 'Shared Memory'}, - {'type': 'string', 'name': 'Kernel Uses Tensor Cores', - 'tooltip': consts.TOOLTIP_KERNEL_USES_TC}, - {'type': 'string', 'name': 'Op is Tensor Cores eligible', - 'tooltip': consts.TOOLTIP_KERNEL_OP_TC_ELIGIBLE} - ] - col_names = ['Calls', 'Total Duration (us)', 'Mean Duration (us)', 'Max Duration (us)', 'Min Duration (us)'] - for column in col_names: - table['columns'].append({'type': 'number', 'name': column}) - gpu_metrics_columns = self.profile_data.gpu_metrics_parser.get_gpu_metrics_columns() - table['columns'].extend(gpu_metrics_columns) - - table['rows'] = [] - kernel_list: List[KernelAggByNameOp] = sorted( - self.profile_data.kernel_list_groupby_name_op, key=lambda x: x.total_duration, reverse=True) - for agg_by_name_op in kernel_list: - kernel_op_row = [ - agg_by_name_op.name, agg_by_name_op.op_name, - str(agg_by_name_op.grid), str(agg_by_name_op.block), - str(agg_by_name_op.regs_per_thread or '0'), str(agg_by_name_op.shared_memory or '0'), - 'Yes' if agg_by_name_op.tc_used else 'No', - 'Yes' if agg_by_name_op.op_tc_eligible else 'No', - agg_by_name_op.calls, - agg_by_name_op.total_duration, round(agg_by_name_op.avg_duration), - agg_by_name_op.max_duration, agg_by_name_op.min_duration - ] - if self.profile_data.gpu_metrics_parser.has_blocks_per_sm: - kernel_op_row.append(round(agg_by_name_op.avg_blocks_per_sm, 2)) - if self.profile_data.gpu_metrics_parser.has_occupancy: - kernel_op_row.append(round(agg_by_name_op.avg_occupancy, 2)) - table['rows'].append(kernel_op_row) - return result - - def _generate_kernel_pie_gpu(self): - pie = {'columns': [{'type': 'string', 'name': 'name'}, {'type': 'number', 'name': 'value'}], 'rows': []} - for _id, (name, row) in enumerate(self.profile_data.kernel_stat.iterrows()): - pie['rows'].append([name, row['sum']]) - data = {'total': pie, 'device_target': self.device_target} - return data - - def _generate_kernel_table_gpu(self): - table = {} - result = { - 'metadata': { - 'sort': 'Total Duration (us)' - }, - 'data': table - } - table['columns'] = [ - {'type': 'string', 'name': 'Name'}, - {'type': 'string', 'name': 'Tensor Cores Used', - 'tooltip': consts.TOOLTIP_KERNEL_USES_TC} - ] - columns = ['count', 'sum', 'mean', 'max', 'min'] - round_digits = [0, 0, 0, 0, 0] - if self.profile_data.gpu_metrics_parser.has_blocks_per_sm: - columns.append('blocks_per_sm') - round_digits.append(2) - if self.profile_data.gpu_metrics_parser.has_occupancy: - columns.append('occupancy') - round_digits.append(2) - col_names = ['Calls', 'Total Duration (us)', 'Mean Duration (us)', 'Max Duration (us)', 'Min Duration (us)'] - for column in col_names: - table['columns'].append({'type': 'number', 'name': column}) - gpu_metrics_columns = self.profile_data.gpu_metrics_parser.get_gpu_metrics_columns() - table['columns'].extend(gpu_metrics_columns) - - table['rows'] = [] - for _id, (name, row) in enumerate(self.profile_data.kernel_stat.iterrows()): - kernel_row = [name, 'Yes' if row['tc_used'] else 'No'] - for i, column in enumerate(columns): - kernel_row.append(round(row[column]) if round_digits[i] == 0 - else round(row[column], round_digits[i])) - table['rows'].append(kernel_row) - return result - - def _generate_tc_pie_gpu(self): - pie = {'columns': [{'type': 'string', 'name': 'name'}, {'type': 'number', 'name': 'value'}], 'rows': []} - pie['rows'].append(['Using Tensor Cores', self.profile_data.tc_used_ratio]) - pie['rows'].append(['Not Using Tensor Cores', 1.0 - self.profile_data.tc_used_ratio]) - data = {'total': pie} - return data - - def _generate_kernel_op_table_npu(self): - table = {} - result = { - 'metadata': { - 'sort': 'Calls' - }, - 'data': table - } - table['columns'] = [{'type': 'string', 'name': 'Name'}, - {'type': 'number', 'name': 'Calls'}, - {'type': 'number', 'name': 'Total Durations(us)'}, - {'type': 'number', 'name': 'Min Durations(us)'}, - {'type': 'number', 'name': 'Avg Durations(us)'}, - {'type': 'number', 'name': 'Max Durations(us)'} - ] - table['rows'] = [] - for key, value in self.statistic_data.items(): - temp = [key] - for val in value.values(): - temp.append(val) - table['rows'].append(temp) - return result - - def _generate_kernel_pie_npu(self): - pie = {'columns': [{'type': 'string', 'name': 'name'}, {'type': 'number', 'name': 'value'}], 'rows': []} - for key, val in self.statistic_data.items(): - data = [key, float(val['Total'])] - pie['rows'].append(data) - datas = {'total': pie, 'device_target': self.device_target} - return datas - - def _generate_kernel_table_npu(self): - table = {'columns': [], 'rows': []} - result = { - 'metadata': { - 'sort': 'Duration (us)' - }, - 'data': table - } - path = self.profile_data.kernel_file_path - datas = RunGenerator.get_csv_data(path) - required_column_idxs = { - 'Name': -1, - 'Duration(us)': -1, - 'Accelerator Core': -1 - } - (name_idx, duration_idx, core_type_idx), column_exist_count = \ - RunGenerator.check_csv_columns(datas[0], required_column_idxs) - if column_exist_count < 3: - logger.error('Required column is missing in file "kernel_details.csv"') - else: - for column in datas[0]: - if column in ('Duration(us)', 'Start Time(us)', 'Wait Time(us)', 'Block Dim'): - table['columns'].append({'type': 'number', 'name': column}) - else: - table['columns'].append({'type': 'string', 'name': column}) - - self._handle_kernel_table_rows(name_idx, duration_idx, core_type_idx, datas[1:], path) - table['rows'] = datas[1:] - return result - - def _generate_tc_pie_npu(self): - pie = {'columns': [{'type': 'string', 'name': 'name'}, {'type': 'number', 'name': 'value'}], 'rows': []} - for key, val in self.accelerator_data.items(): - pie['rows'].append(['Using ' + key.replace('_', ' '), val]) - data = {'total': pie} - return data - - @staticmethod - def get_gpu_info(device_props, gpu_id): - if (device_props is None) or (gpu_id >= len(device_props)) or (gpu_id < 0): - return None - - device_prop: Dict = device_props[gpu_id] - gpu_info = {} - name = device_prop.get('name') - if name is not None: - gpu_info['Name'] = name - - mem = device_prop.get('totalGlobalMem') - if mem is not None: - try: - gpu_info['Memory'] = '{} GB'.format(round(float(mem) / 1024 / 1024 / 1024, 2)) - gpu_info['Memory Raw'] = mem - except ValueError: - logger.warning('The value of "totalGlobalMem" must be number in the JSON, please check it.') - - major = device_prop.get('computeMajor') - minor = device_prop.get('computeMinor') - if major is not None and minor is not None: - gpu_info['Compute Capability'] = '{}.{}'.format(major, minor) - - return gpu_info - - def _handle_kernel_table_rows(self, name_idx, duration_idx, core_type_idx, rows, path): - for idx, row in enumerate(rows): - call_name = row[name_idx] - try: - call_duration = float(row[duration_idx]) - except ValueError: - logger.error( - f'File "{path}" has wrong data format in row {idx + 2} in Duration column and will skip the row.') - continue - call_type = row[core_type_idx] - if self.accelerator_data.get(call_type) is not None: - self.accelerator_data[call_type] += call_duration - else: - self.accelerator_data[call_type] = call_duration - - if self.statistic_data.get(call_name) is not None: - temp = self.statistic_data.get(call_name, {}) - temp['Max'] = max(temp.get('Max', 0), call_duration) - temp['Min'] = min(temp.get('Min', 0), call_duration) - temp['Total'] = round(temp.get('Total', 0) + call_duration, 2) - temp['Calls'] = temp.get('Calls', 0) + 1 - if temp['Calls'] == 0: - logger.error( - f'temp["Calls"] is zero which can not be divisor.') - temp['Average'] = 0 - else: - temp['Average'] = round(temp['Total'] / temp['Calls'], 2) - else: - self.statistic_data[call_name] = { - 'Calls': 1, - 'Total': call_duration, - 'Min': call_duration, - 'Average': call_duration, - 'Max': call_duration - } - - -class DistributedRunGenerator(object): - def __init__(self, all_profile_data: Iterable[DistributedRunProfileData], span, device_target): - self.all_profile_data = all_profile_data - self.span = span - self.device_target = device_target - - def generate_run_profile(self): - profile_run = DistributedRunProfile(self.span) - profile_run.views.append(consts.DISTRIBUTED_VIEW) - profile_run.gpu_info = self._generate_gpu_info() - profile_run.steps_to_overlap = self._generate_overlap_graph() - profile_run.steps_to_wait = self._generate_wait_graph() - profile_run.comm_ops = self._generate_ops_table() - return profile_run - - def _generate_gpu_info(self): - # first key is node name, the second key is process id, the third key is GPU0/, - # the value is the gpu info json - result: Dict[str, Dict[str, Dict[str, Dict]]] = OrderedDict() - index = 0 - for data in sorted(self.all_profile_data, key=lambda x: x.worker): - if not data.device_props: - continue - - match = consts.NODE_PROCESS_PATTERN.match(data.worker) - if match: - node = match.group(1) - process_id = match.group(2) - else: - logger.warning('cannot parse node name from worker name {}'.format(data.worker)) - node = data.worker - process_id = index - index += 1 - if node not in result: - result[node] = OrderedDict() - - process_id = 'Process ' + str(process_id) - result[node][process_id] = OrderedDict() - for used_device in data.used_devices: - gpu_info = RunGenerator.get_gpu_info(data.device_props, used_device) - if gpu_info is not None: - result[node][process_id]['GPU' + str(used_device)] = gpu_info - - if result: - for k, v in result.items(): - result[k] = OrderedDict(sorted(v.items())) - return { - 'metadata': {'title': 'Device Information'}, - 'data': result - } - else: - return None - - def _generate_overlap_graph(self): - result = dict() - result['metadata'] = { - 'title': 'Computation/Communication Overview', - 'legends': ['Computation', 'Overlapping', 'Communication', 'Other'], - 'units': 'us' - } - steps_to_overlap: Dict[str, Dict[str, List[int]]] = OrderedDict() - steps_to_overlap['all'] = OrderedDict() - for data in self.all_profile_data: - steps_to_overlap['all'][data.worker] = [0, 0, 0, 0] - step_number = len(data.steps_names) - if step_number <= 0: - return None - if self.device_target != 'Ascend': - DistributedRunGenerator._get_gpu_overlap_data(data, steps_to_overlap) - else: - DistributedRunGenerator._get_npu_overlap_data(data, steps_to_overlap) - - steps_to_overlap['all'][data.worker] = [int(x / step_number) for x in steps_to_overlap['all'][data.worker]] - for k, v in steps_to_overlap.items(): - steps_to_overlap[k] = OrderedDict(sorted(v.items())) - result['data'] = steps_to_overlap - return result - - @staticmethod - def _get_gpu_overlap_data(data, steps_to_overlap): - for i, step_name in enumerate(data.steps_names): - steps_to_overlap.setdefault(step_name, OrderedDict()) - costs = data.comm_overlap_costs[i] - steps_to_overlap[step_name][data.worker] = [ - round(costs.computation - costs.overlap, 3), - round(costs.overlap, 3), - round(costs.communication - costs.overlap, 3), - round(costs.other, 3) - ] - steps_to_overlap['all'][data.worker] = [ - sum(x) - for x in zip(steps_to_overlap['all'][data.worker], steps_to_overlap[step_name][data.worker]) - ] - - @staticmethod - def _get_npu_overlap_data(data, steps_to_overlap): - steps = data.step_to_overlap - for k, v in steps.items(): - steps_to_overlap.setdefault(k, OrderedDict()) - # v: computation / overlap / communication_not_overlap / free time - # steps_to_overlap: computation_not_overlap / overlap / communication_not_overlap / other - steps_to_overlap[k][data.worker] = list( - [round(v[0] - v[1], 3), round(v[1], 3), round(v[2], 3), round(v[3], 3)]) - steps_to_overlap['all'][data.worker] = [ - sum(x) - for x in zip(steps_to_overlap['all'][data.worker], steps_to_overlap[k][data.worker]) - ] - - @staticmethod - def _get_npu_wait_data(data, steps_to_wait): - step_number = len(data.step_to_wait) - if step_number <= 0: - return - steps = data.step_to_wait - for k, v in steps.items(): - steps_to_wait.setdefault(k, OrderedDict()) - - trans = round(v.get('trans') * 1000, 3) # 1ms = 1000us - wait = round(v.get('Synchronize') * 1000, 3) # 1ms = 1000us - steps_to_wait[k][data.worker] = list([trans, wait]) - steps_to_wait['all'][data.worker] = [ - sum(x) - for x in zip(steps_to_wait['all'][data.worker], steps_to_wait[k][data.worker]) - ] - steps_to_wait['all'][data.worker] = [x / step_number for x in steps_to_wait['all'][data.worker]] - - @staticmethod - def _get_gpu_wait_data(data, steps_to_wait): - step_number = len(data.step_comm_stats.values()) - if step_number <= 0: - return - for step, comm_stats in data.step_comm_stats.items(): - steps_to_wait.setdefault(step, OrderedDict())[data.worker] = [ - round(comm_stats[1], 3), - round(comm_stats[0] - comm_stats[1], 3) - ] - steps_to_wait['all'][data.worker] = [ - sum(x) - for x in zip(steps_to_wait['all'][data.worker], steps_to_wait[step][data.worker]) - ] - steps_to_wait['all'][data.worker] = [int(x / step_number) for x in steps_to_wait['all'][data.worker]] - - def _generate_wait_graph(self): - result = dict() - result['metadata'] = { - 'title': 'Synchronizing/Communication Overview', - 'legends': ['Data Transfer Time', 'Synchronizing Time'], - 'units': 'us' - } - steps_to_wait: Dict[str, Dict[str, List[int]]] = OrderedDict() - - steps_to_wait['all'] = OrderedDict() - for data in self.all_profile_data: - steps_to_wait['all'][data.worker] = [0, 0] - if self.device_target != 'Ascend': - DistributedRunGenerator._get_gpu_wait_data(data, steps_to_wait) - else: - DistributedRunGenerator._get_npu_wait_data(data, steps_to_wait) - for k, v in steps_to_wait.items(): - steps_to_wait[k] = OrderedDict(sorted(v.items())) - result['data'] = steps_to_wait - return result - - def _generate_ops_table(self): - result = dict() - result['metadata'] = {'title': 'Communication Operations Stats'} - workers_to_comm_ops = OrderedDict() - # Ignore the span for distributed view - for data in self.all_profile_data: - table = {} - if self.device_target != 'Ascend': - DistributedRunGenerator._get_gpu_table(data, table) - else: - DistributedRunGenerator._get_npu_table(data, table) - workers_to_comm_ops[data.worker] = table - result['data'] = OrderedDict(sorted(workers_to_comm_ops.items())) - return result - - @staticmethod - def _get_npu_table(data, table): - table['columns'] = [{'type': 'string', 'name': 'Name'}] - col_names = [ - 'Calls', - 'Total Transit Size (bytes)', - 'Avg Transit Size (bytes)', - 'Elapse Time (us)', - 'Avg Elapse Time (us)', - 'Transit Time (us)', - 'Avg Transit Time (us)' - ] - for column in col_names: - table['columns'].append({'type': 'number', 'name': column}) - table['rows'] = [] - ops = data.comm_op - for op, stats in ops.items(): - row = [ - op, - stats[0], - round(stats[1] * 1024 * 1024, 3), - round(stats[1] * 1024 * 1024 / stats[0] if stats != 0 else 0), # 1MB = 1024 * 1024 bytes - round(stats[2] * 1000, 3), - round(stats[2] * 1000 / stats[0] if stats != 0 else 0), # 1ms = 1000us - round(stats[3] * 1000, 3), - round(stats[3] * 1000 / stats[0] if stats != 0 else 0) # 1ms = 1000us - ] - table['rows'].append(row) - - @staticmethod - def _get_gpu_table(data, table): - table['columns'] = [{'type': 'string', 'name': 'Name'}] - col_names = [ - 'Calls', - 'Total Size (bytes)', - 'Avg Size (bytes)', - 'Total Latency (us)', - 'Avg Latency (us)', - 'Data Transfer Time (us)', - 'Avg Data Transfer Time (us)' - ] - for column in col_names: - table['columns'].append({'type': 'number', 'name': column}) - table['rows'] = [] - for op, stats in data.total_comm_stats.items(): - row = [ - op, - stats[0], - round(stats[1], 3), - - round(stats[1] / stats[0] if stats[0] != 0 else 0), - round(stats[2], 3), - round(stats[2] / stats[0] if stats[0] != 0 else 0), - round(stats[3], 3), - round(stats[3] / stats[0] if stats[0] != 0 else 0) - ] - table['rows'].append(row) diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/tensor_core.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/tensor_core.py deleted file mode 100644 index cc53ab217..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/tensor_core.py +++ /dev/null @@ -1,50 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -class TcAllowlistMeta(type): - # Enable grammar sugar as 'v in TcAllowlist'. - def __contains__(cls, item): - return cls.__contains__(item) - - -class TcAllowlist(metaclass=TcAllowlistMeta): - allowlist = ['h884', 's884', 'h1688', 's1688', 'hmma', 'i8816', '16816', - 'dgrad_1x1_stride_2x2', 'first_layer_wgrad_kernel', 'conv1x1', - 'conv2d_c1_k1', 'direct_group', 'xmma_implicit_gemm', - 'xmma_sparse_conv', 'xmma_warp_specialized_implicit_gemm', - 'xmma_gemm', 'xmma_sparse_gemm', 'c1688'] - - @classmethod - def __contains__(cls, item): - # If kernel name contains substring equal to any one in allowlist, then it uses tensor core. - for pattern in cls.allowlist: - if pattern in item: - return True - return False - - -class TcOpAllowlist(metaclass=TcAllowlistMeta): - allowlist = ['aten::_convolution', 'aten::conv1d', 'aten::conv2d', 'aten::conv3d', 'aten::conv_tbc', - 'aten::conv_transpose1d', 'aten::conv_transpose2d', 'aten::conv_transpose3d', - 'aten::convolution', 'aten::cudnn_convolution', 'aten::cudnn_convolution_transpose', - 'aten::prelu', 'aten::addmm', 'aten::addmv', 'aten::addr', - 'aten::matmul', 'aten::mm', 'aten::mv', - 'aten::linear', 'aten::addbmm', 'aten::baddbmm', 'aten::bmm', - 'aten::chain_matmul', 'aten::linalg_multi_dot', - 'aten::_thnn_fused_lstm_cell', 'aten::_thnn_fused_gru_cell', 'aten::lstm_cell', - 'aten::gru_cell', 'aten::rnn_tanh_cell', 'aten::rnn_relu_cell', - # The backward ops are got by running above ops' backward - # and recording whether it launched kernels. - 'CudnnConvolutionBackward', 'BmmBackward0', - 'aten::cudnn_convolution_transpose_backward', 'CudnnConvolutionTransposeBackward', - 'MmBackward', 'aten::cudnn_convolution_backward_weight', 'aten::addmm_', - 'AddmvBackward', 'MvBackward', - 'aten::cudnn_convolution_transpose_backward_weight', - 'aten::cudnn_convolution_transpose_backward_input', - 'AddmmBackward', 'aten::cudnn_convolution_backward_input', - 'AddbmmBackward', 'aten::cudnn_convolution_backward'] - - @classmethod - def __contains__(cls, item): - # If operator name equals to any one in allowlist, then it is tensor core eligible. - return item in cls.allowlist diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/tensor_cores_parser.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/tensor_cores_parser.py deleted file mode 100644 index e2372d9ad..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/tensor_cores_parser.py +++ /dev/null @@ -1,77 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# ------------------------------------------------------------------------- -from typing import Dict, Iterable, List - -from .. import consts -from .node import OperatorNode - - -class TensorCoresParser: - def __init__(self, tc_ratio: List[float], tc_eligible_ops_kernel_ratio: float): - # For calculating Tensor Cores time ratio per GPU. - self.tc_ratio = tc_ratio - self.tc_eligible_ops_kernel_ratio = tc_eligible_ops_kernel_ratio - - @classmethod - def parse_events(cls, tid2tree: Dict[str, OperatorNode], ops: Iterable[OperatorNode], gpu_ids: Iterable[int]): - tc_ratio = cls._calculate_tc_ratio(ops, gpu_ids) - tc_eligible_ops_kernel_ratio = cls._get_tc_eligible_ops_kernel_ratio(tid2tree, ops) - return cls(tc_ratio, tc_eligible_ops_kernel_ratio) - - @staticmethod - def _calculate_tc_ratio(ops: Iterable[OperatorNode], gpu_ids: Iterable[int]): - tc_ratio: List[float] = [None] * consts.MAX_GPU_PER_NODE - tc_time = [0] * consts.MAX_GPU_PER_NODE - total_time = [0] * consts.MAX_GPU_PER_NODE - has_kernel = False - for op in ops: - for rt in op.runtimes: - # 'CallTreeRoot' & 'dummy' kernels are launched out of profiler step, so don't count them. - if not (op.name == 'CallTreeRoot' and rt.name == 'dummy'): - for k in rt.get_kernels(): - has_kernel = True - dur = k.end_time - k.start_time - is_tc_used = k.tc_used - if is_tc_used: - tc_time[k.device_id] += dur - total_time[k.device_id] += dur - if has_kernel: # If no kernel, then keep all self.tc_ratio as None. - for gpu_id in gpu_ids: - if total_time[gpu_id] > 0: - tc_ratio[gpu_id] = tc_time[gpu_id] / total_time[gpu_id] - else: - tc_ratio[gpu_id] = 0.0 - return tc_ratio - - @staticmethod - def _get_bottom_tc_eligible_operators(op_tree_node: OperatorNode): - ops: List[OperatorNode] = [] - for child in op_tree_node.children: - child_ops = TensorCoresParser._get_bottom_tc_eligible_operators(child) - ops.extend(child_ops) - # TC-eligible ops which have children TC-eligible ops will not be regarded as 'bottom'. - if op_tree_node.tc_eligible and len(ops) == 0: - ops.append(op_tree_node) - return ops - - @staticmethod - def _get_tc_eligible_ops_kernel_ratio(tid2tree: Dict[int, OperatorNode], ops: Iterable[OperatorNode]): - def sum_self_kernel_time(ops: Iterable[OperatorNode]): - sum_time = 0 - for op in ops: - for rt in op.runtimes: - # 'CallTreeRoot' & 'dummy' kernels are launched out of profiler step, so don't count them. - if not (op.name == 'CallTreeRoot' and rt.name == 'dummy'): - for k in rt.get_kernels(): - sum_time += k.end_time - k.start_time - return sum_time - - ops_bottom_tc_eligible = [] - for root in tid2tree.values(): - ops_bottom_tc_eligible.extend(TensorCoresParser._get_bottom_tc_eligible_operators(root)) - ops_bottom_tc_eligible_kernel_sum = sum_self_kernel_time(ops_bottom_tc_eligible) - ops_kernel_sum = sum_self_kernel_time(ops) - tc_eligible_ops_kernel_ratio = ops_bottom_tc_eligible_kernel_sum / ops_kernel_sum \ - if ops_kernel_sum > 0 else 0.0 - return tc_eligible_ops_kernel_ratio diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/trace.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/trace.py deleted file mode 100644 index ea09f7966..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/profiler/trace.py +++ /dev/null @@ -1,241 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# -------------------------------------------------------------------------- -__all__ = ['EventTypes', 'create_event'] - -from enum import IntEnum -from typing import Dict, Optional - -from .. import utils - -logger = utils.get_logger() - -NcclOpNameSet = ['nccl:broadcast', 'nccl:reduce', 'nccl:all_reduce', 'nccl:all_gather', 'nccl:reduce_scatter'] -GlooOpNameSet = ['gloo:broadcast', 'gloo:reduce', 'gloo:all_reduce', 'gloo:all_gather', 'gloo:reduce_scatter'] - - -class DeviceType(IntEnum): - CPU = 0 - CUDA = 1 - - -class EventTypes(object): - TRACE = 'Trace' - OPERATOR = 'Operator' - PROFILER_STEP = 'ProfilerStep' - RUNTIME = 'Runtime' - KERNEL = 'Kernel' - MEMCPY = 'Memcpy' - MEMSET = 'Memset' - PYTHON = 'Python' - MEMORY = 'Memory' - PYTHON_FUNCTION = 'python_function' - MODULE = 'Module' - PL_PROFILE = 'pl_profile' - PL_MODULE = 'pl_module' - USER_ANNOTATION = 'user_annotation' - - -EventTypeMap = { - 'trace': EventTypes.TRACE, - 'cpu_op': EventTypes.OPERATOR, - 'operator': EventTypes.OPERATOR, - 'runtime': EventTypes.RUNTIME, - 'cuda_runtime': EventTypes.RUNTIME, - 'kernel': EventTypes.KERNEL, - 'memcpy': EventTypes.MEMCPY, - 'gpu_memcpy': EventTypes.MEMCPY, - 'memset': EventTypes.MEMSET, - 'gpu_memset': EventTypes.MEMSET, - 'python': EventTypes.PYTHON, - 'memory': EventTypes.MEMORY, - 'python_function': EventTypes.PYTHON_FUNCTION, - 'user_annotation': EventTypes.USER_ANNOTATION, - 'gpu_user_annotation': EventTypes.USER_ANNOTATION -} - - -class BaseEvent(object): - def __init__(self, event_type, data): - self.type: str = event_type - self.name: str = data.get('name') - self.ts: int = data.get('ts') - self.pid: int = data.get('pid') - self.tid: int = data.get('tid') - self.args: Dict = data.get('args', {}) - - -class DurationEvent(BaseEvent): - def __init__(self, event_type, data): - super().__init__(event_type, data) - self.category: str = data.get('cat', '') - self.duration: int = data.get('dur') - - extern_id: Optional[int] = self.args.get('external id') - if extern_id is None: - extern_id = self.args.get('External id') - self.external_id = extern_id - self.correlation_id: Optional[int] = self.args.get('correlation') - - -class KernelEvent(DurationEvent): - def __init__(self, event_type, data): - super().__init__(event_type, data) - self.occupancy = self.args.get('est. achieved occupancy %') - self.blocks_per_sm = self.args.get('blocks per SM') - self.grid = self.args.get('grid') - self.block = self.args.get('block') - self.regs_per_thread = self.args.get('registers per thread') - self.shared_memory = self.args.get('shared memory') - self.device_id = self.args.get('device') - - -class OperatorEvent(DurationEvent): - def __init__(self, event_type, data): - super().__init__(event_type, data) - self.callstack = self.args.get('Call stack') - self.input_type = self.args.get('Input type') - - shape = self.args.get('Input Dims') - if shape is None: - # Setting shape to '[]' other None is to align with autograd result - shape = self.args.get('Input dims', []) - self.input_shape = shape - - -class ProfilerStepEvent(OperatorEvent): - def __init__(self, data): - super().__init__(EventTypes.PROFILER_STEP, data) - # torch.profiler.profile.step will invoke record_function with name like 'ProfilerStep#5' - self.step: int = int(self.name.split('#')[1]) - - -class MemoryEvent(BaseEvent): - def __init__(self, event_type, data): - super().__init__(event_type, data) - self.scope: str = data.get('s', '') - self.device_id: int = self.args.get('Device Id') - dtype = self.args.get('Device Type') - if dtype is not None: - try: - dtype = DeviceType(dtype) - except ValueError: - dtype = None - - self.device_type: DeviceType = dtype - - @property - def addr(self): - return self.args.get('Addr') - - @property - def bytes(self): - return self.args.get('Bytes', 0) - - @property - def total_allocated(self): - return self.args.get('Total Allocated', float('nan')) - - @property - def total_reserved(self): - return self.args.get('Total Reserved', float('nan')) - - -class PythonFunctionEvent(DurationEvent): - def __init__(self, event_type, data): - super().__init__(event_type, data) - self.python_id: int = self.args.get('Python id') - self.python_parent_id: int = self.args.get('Python parent id') - - -class ModuleEvent(PythonFunctionEvent): - def __init__(self, data): - super().__init__(EventTypes.MODULE, data) - self.module_id: int = self.args.get('Python module id') - - -class PLProfileEvent(DurationEvent): - def __init__(self, data): - super().__init__(EventTypes.PL_PROFILE, data) - self.name = self.name.replace('[pl][profile]', '') - - -class PLModuleEvent(DurationEvent): - def __init__(self, data): - super().__init__(EventTypes.PL_MODULE, data) - self.module_id = 0 # just to be compatible with ModuleEvent processing - self.name = self.name.replace('[pl][module]', '') - self.module_type = self.name[:self.name.find(': ')] - self.name = self.name[self.name.find(': ') + 2:] - - -def create_event(event, is_pytorch_lightning) -> Optional[BaseEvent]: - try: - event_type = event.get('ph') - if event_type == 'X': - return create_trace_event(event, is_pytorch_lightning) - elif event_type == 'i' and event.get('name') == '[memory]': - return MemoryEvent(EventTypes.MEMORY, event) - else: - return None - except Exception as ex: - logger.warning('Failed to parse profile event. Exception=%s. Event=%s', ex, event, exc_info=True) - raise - - -def create_trace_event(event, is_pytorch_lightning) -> Optional[BaseEvent]: - category = event.get('cat') - event_type = EventTypeMap.get(category.lower()) if category else None - if event_type == EventTypes.USER_ANNOTATION: - name = event.get('name') - if name and name.startswith('ProfilerStep#'): - return ProfilerStepEvent(event) - if name in GlooOpNameSet or name in NcclOpNameSet: - return OperatorEvent(event_type, event) - elif event_type == EventTypes.OPERATOR: - name = event.get('name') - if name and name.startswith('ProfilerStep#'): - return ProfilerStepEvent(event) - if is_pytorch_lightning: - if name and name.startswith('[pl][profile]'): - return PLProfileEvent(event) - elif name and name.startswith('[pl][module]'): - return PLModuleEvent(event) - return OperatorEvent(event_type, event) - elif event_type == EventTypes.PYTHON: - return OperatorEvent(event_type, event) - elif event_type == EventTypes.KERNEL: - return KernelEvent(event_type, event) - elif event_type == EventTypes.PYTHON_FUNCTION: - if is_pytorch_lightning: - return None - args = event.get('args') - if args and args.get('Python module id') is not None: - return ModuleEvent(event) - else: - return PythonFunctionEvent(event_type, event) - elif event_type is not None: - return DurationEvent(event_type, event) - return None - - -def create_association_events(events) -> Dict[int, int]: - forward_map = {} - backward_map = {} - - result = {} - for e in events: - ph = e.get('ph') - e_id = e['id'] - ts = e['ts'] - if ph == 's': - forward_map[e_id] = ts - elif ph == 'f': - backward_map[e_id] = ts - - for e_id, ts in forward_map.items(): - backward_ts = backward_map.get(e_id) - if backward_ts is not None: - result[ts] = backward_ts - - return result diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/run.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/run.py deleted file mode 100644 index 9e30f2252..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/run.py +++ /dev/null @@ -1,525 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# -# Copyright(c) 2023 Huawei Technologies. -# All rights reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Modifications: Add visualization of PyTorch Ascend profiling. -# -------------------------------------------------------------------------- -from collections import defaultdict -from typing import Any, Dict, Iterable, List, Optional, Tuple, Union - -from . import consts, utils -from .profiler.diffrun import compare_op_tree, diff_summary -from .profiler.memory_parser import MemoryMetrics, MemoryRecord, MemorySnapshot -from .profiler.module_op import Stats -from .profiler.node import OperatorNode -from .utils import Canonicalizer, DisplayRounder - -logger = utils.get_logger() - - -class Run(object): - """ A profiler run. For visualization purpose only. - May contain profiling results from multiple workers. E.g. distributed scenario. - """ - - def __init__(self, name, run_dir, device_target='GPU'): - self.name = name - self.run_dir = run_dir - self.profiles: Dict[Tuple[str, str], RunProfile] = {} - self.span_view = {} - self.device_target = device_target - - @property - def workers(self): - # get full worker list and remove the duplicated - worker_list, _ = zip(*self.profiles.keys()) - worker_list = sorted(list(dict.fromkeys(worker_list))) - return worker_list - - @property - def views(self) -> List[consts.View]: - view_set = set() - for profile in self.profiles.values(): - view_set.update(profile.views) - return sorted(list(view_set), key=lambda x: x.id) - - def get_workers(self, view): - worker_set = set() - temp_span_view = {} - for profile in self.profiles.values(): - for v in profile.views: - if v.display_name == view: - worker_set.add(profile.worker) - if not temp_span_view.get(profile.worker): - temp_span_view[profile.worker] = [str(profile.span) if profile.span is not None else 'default'] - else: - temp_span_view[profile.worker].append( - str(profile.span) if profile.span is not None else 'default') - break - self.span_view = temp_span_view - return sorted(list(worker_set)) - - def get_spans(self, worker=None): - if worker is not None: - if self.span_view.get(worker) is None: - return None - spans = self.span_view.get(worker, []) - else: - spans = [s for _, s in self.profiles.keys()] - - spans = list(set(spans)) - if len(spans) == 1 and spans[0] is None: - return None - else: - return sorted(spans) - - def add_profile(self, profile: Union['DistributedRunProfile', 'RunProfile']): - span = profile.span - if span is None: - span = 'default' - else: - span = str(span) - self.profiles[(profile.worker, span)] = profile - - def get_profile(self, worker, span) -> Union['DistributedRunProfile', 'RunProfile']: - if worker is None: - raise ValueError('the worker parameter is mandatory') - - if len(self.profiles) == 0: - return None - - return self.profiles.get((worker, span), None) - - def get_profiles(self, *, worker=None, span=None) \ - -> Optional[Union[List['RunProfile'], List['DistributedRunProfile']]]: - # Note: we could not use if span to check it is None or not - # since the span 0 will be skipped at this case. - if worker is not None and span is not None: - return self.profiles.get((worker, span), None) - elif worker is not None: - return [p for (w, s), p in self.profiles.items() if worker == w] - elif span is not None: - return [p for (w, s), p in self.profiles.items() if span == s] - else: - return self.profiles.values() - - -class RunProfile(object): - """ Cooked profiling result for a worker. For visualization purpose only. - """ - - def __init__(self, worker, span): - self.worker = worker - self.span = span - self.views: List[consts.View] = [] - self.is_pytorch_lightning = False - self.has_runtime = False - self.has_kernel = False - self.has_communication = False - self.has_memcpy_or_memset = False - self.profiler_start_ts = float('inf') - self.overview = None - self.operation_pie_by_name = None - self.operation_table_by_name = None - self.operation_stack_by_name: Dict = None - self.operation_pie_by_name_input = None - self.operation_table_by_name_input = None - self.operation_stack_by_name_input: Dict = None - self.kernel_op_table = None - self.kernel_pie = None - self.kernel_table = None - self.tc_pie = None - self.trace_file_path: str = None - - self.gpu_metrics = None - - self.gpu_summary = None - self.gpu_tooltip = None - - # for memory stats and curve - self.memory_snapshot: Optional[MemorySnapshot] = None - self.tid2tree: Dict[int, OperatorNode] = None - self.pl_tid2tree: Dict[int, OperatorNode] = None - - self.module_stats: Optional[List(Stats)] = None - self.pl_module_stats: Optional[List(Stats)] = None - self.device_target = None - - self.memory_all_curve = None - self.memory_div_curve = None - self.memory_events = None - - self.step_to_overlap = None - self.step_to_wait = None - self.comm_op = None - - def append_gpu_metrics(self, raw_data: bytes): - counter_json_str = ', {}'.format(', '.join(self.gpu_metrics)) - counter_json_bytes = bytes(counter_json_str, 'utf-8') - - raw_data_without_tail = raw_data[: raw_data.rfind(b']')] - raw_data = b''.join([raw_data_without_tail, counter_json_bytes, b']}']) - - import gzip - raw_data = gzip.compress(raw_data, 1) - return raw_data - - @staticmethod - def _filtered_by_ts(events: Iterable[MemoryRecord], start_ts, end_ts): - """Returns time-ordered events of memory allocation and free""" - if start_ts is not None and end_ts is not None: - events = [e for e in events if start_ts <= e.ts and e.ts <= end_ts] - elif start_ts is not None: - events = [e for e in events if start_ts <= e.ts] - elif end_ts is not None: - events = [e for e in events if e.ts <= end_ts] - - return events - - def get_memory_stats(self, start_ts=None, end_ts=None, memory_metric='K'): - cano = Canonicalizer(memory_metric=memory_metric) - rounder = DisplayRounder(ndigits=3) - - stats = self.memory_snapshot.get_memory_statistics(self.tid2tree, start_ts=start_ts, end_ts=end_ts) - - result = { - 'metadata': { - 'title': 'Memory View', - 'default_device': 'CPU', - 'search': 'Operator Name', - 'sort': f'Self Size Increase ({cano.memory_metric})' - }, - 'columns': [ - {'name': 'Operator Name', 'type': 'string'}, - {'name': 'Calls', 'type': 'number', 'tooltip': '# of calls of the operator.'}, - {'name': f'Size Increase ({cano.memory_metric})', 'type': 'number', - 'tooltip': 'The memory increase size include all children operators.'}, - {'name': f'Self Size Increase ({cano.memory_metric})', 'type': 'number', - 'tooltip': 'The memory increase size associated with the operator itself.'}, - {'name': 'Allocation Count', 'type': 'number', - 'tooltip': 'The allocation count including all chidren operators.'}, - {'name': 'Self Allocation Count', 'type': 'number', - 'tooltip': 'The allocation count belonging to the operator itself.'}, - {'name': f'Allocation Size ({cano.memory_metric})', 'type': 'number', - 'tooltip': 'The allocation size including all children operators.'}, - {'name': f'Self Allocation Size ({cano.memory_metric})', 'type': 'number', - 'tooltip': ('The allocation size belonging to the operator itself.\n' - 'It will sum up all allocation bytes without considering the memory free.')}, - ], - 'rows': {} - } - - for name in stats: - these_rows = [] - result['rows'][name] = these_rows - - memory = stats[name] - for op_name, stat in sorted(memory.items()): - these_rows.append([ - op_name, - stat[6], - rounder(cano.convert_memory(stat[MemoryMetrics.IncreaseSize])), - rounder(cano.convert_memory(stat[MemoryMetrics.SelfIncreaseSize])), - stat[MemoryMetrics.AllocationCount], - stat[MemoryMetrics.SelfAllocationCount], - rounder(cano.convert_memory(stat[MemoryMetrics.AllocationSize])), - rounder(cano.convert_memory(stat[MemoryMetrics.SelfAllocationSize])), - ]) - - for dev_name in sorted(stats.keys()): - if dev_name.startswith('GPU'): - result['metadata']['default_device'] = dev_name - break - - return result - - def get_memory_curve( - self, - time_metric: str = 'ms', - memory_metric: str = 'K', - patch_for_step_plot=True): - def get_curves_and_peaks(records: List[MemoryRecord], cano: Canonicalizer): - """Inputs: - records: Sorted list of MemoryRecord - - For example: - ```py - { - 'CPU': [# Timestamp, Total Allocated, Total Reserved, Device Total Memory, operator - [1, 4, 4, 1000000, 'aten::add'], - [2, 16, 16, 1000000, "aten::empty], - [4, 4, 16, 1000000, '...'], - ], - 'GPU0': ... - } - ```""" - curves = defaultdict(list) - peaks = defaultdict(float) - for r in records: - if r.addr is None: - continue - dev = r.device_name - ts = r.ts - ta = r.total_allocated - tr = r.total_reserved - - if ta != ta or tr != tr: # isnan - continue - - curves[dev].append([ - round(cano.convert_time(ts - self.profiler_start_ts), 3), - round(cano.convert_memory(ta), 3), - round(cano.convert_memory(tr), 3), - ]) - peaks[dev] = max(peaks[dev], ta) - - for dev in curves: - if len(curves[dev]) == 0: - del curves[dev] - del peaks[dev] - - return curves, peaks - - # NOTE: this should have been occured in frontend - def patch_curves_for_step_plot(curves: Dict[str, List]): - # For example, if a curve is [(0, 0), (1, 1), (2,2)], the line plot - # is a stright line. Interpolating it as [(0, 0), (1, 0), (1, 1), - # (2,1) (2,2)], then the line plot will work as step plot. - new_curves = defaultdict(list) - for dev, curve in curves.items(): - new_curve = [] - for i, p in enumerate(curve): - if i != 0: - new_curve.append(p[:1] + new_curve[-1][1:]) - new_curve.append(p) - new_curves[dev] = new_curve - return new_curves - - cano = Canonicalizer(time_metric, memory_metric) - - curves, peaks = get_curves_and_peaks(self.memory_snapshot.memory_records, cano) - if patch_for_step_plot: - curves = patch_curves_for_step_plot(curves) - peaks_formatted = {} - totals = {} - for dev, value in peaks.items(): - peaks_formatted[dev] = 'Peak Memory Usage: {:.1f}{}'.format(cano.convert_memory(value), cano.memory_metric) - if dev != 'CPU': - try: - totals[dev] = cano.convert_memory(self.gpu_infos[int(dev[3:])]['Memory Raw']) - except BaseException: - pass - - devices: List[str] = sorted(list(curves.keys())) - default_device = 'CPU' - for dev in devices: - if dev.startswith('GPU'): - default_device = dev - break - - return { - 'metadata': { - 'default_device': default_device, - 'devices': devices, - 'peaks': peaks_formatted, - 'totals': totals, - 'first_ts': self.profiler_start_ts, - 'time_metric': cano.time_metric, - 'memory_metric': cano.memory_metric, - 'time_factor': cano.time_factor, - 'memory_factor': cano.memory_factor, - }, - 'columns': [ - {'name': f'Time ({cano.time_metric})', 'type': 'number', 'tooltip': 'Time since profiler starts.'}, - {'name': f'Allocated ({cano.memory_metric})', 'type': 'number', 'tooltip': 'Total memory in use.'}, - {'name': f'Reserved ({cano.memory_metric})', 'type': 'number', - 'tooltip': 'Total reserved memory by allocator, both used and unused.'}, - ], - 'rows': curves, - } - - def get_memory_events( - self, - start_ts=None, - end_ts=None, - time_metric: str = 'ms', - memory_metric: str = 'K'): - def get_op_name_or_ctx(record: MemoryRecord): - name = record.op_name_or_unknown - if name.startswith('aten::empty') and record.parent_op_name: - # aten::empty can be treated as the 'malloc' in pytorch - name = f'{record.parent_op_name} ({name})' - return name - - cano = Canonicalizer(time_metric=time_metric, memory_metric=memory_metric) - rounder = DisplayRounder(ndigits=3) - - profiler_start_ts = self.profiler_start_ts - memory_records = RunProfile._filtered_by_ts(self.memory_snapshot.memory_records, start_ts, end_ts) - - events = defaultdict(list) - alloc = {} # allocation events may or may not have paired free event - free = {} # free events that does not have paired alloc event - prev_ts = float('-inf') # ensure ordered memory records is ordered - for i, r in enumerate(memory_records): - if r.addr is None: - # profile json data prior to pytorch 1.10 do not have addr - # we should ignore them - continue - if prev_ts > r.ts: - logger.error(f'Invalid value, prev_ts {prev_ts} is greater than end_ts {r.ts}') - return {} - prev_ts = r.ts - addr = r.addr - size = r.bytes - if r.is_allocation: - # to be matched with a release event - alloc[addr] = i - else: - if addr in alloc: - alloc_r = memory_records[alloc[addr]] - alloc_ts = alloc_r.ts - free_ts = r.ts - events[alloc_r.device_name].append([ - get_op_name_or_ctx(alloc_r), - rounder(cano.convert_memory(-size)), - rounder(cano.convert_time(alloc_ts - profiler_start_ts)), - rounder(cano.convert_time(free_ts - profiler_start_ts)), - rounder(cano.convert_time(free_ts - alloc_ts)), - ]) - del alloc[addr] - else: - if addr in free: - logger.warning(f'Address {addr} is freed multiple times') - free[addr] = i - - for i in alloc.values(): - r = memory_records[i] - events[r.device_name].append([ - get_op_name_or_ctx(r), - rounder(cano.convert_memory(r.bytes)), - rounder(cano.convert_time(r.ts - profiler_start_ts)), - None, - None, - ]) - - for i in free.values(): - r = memory_records[i] - events[r.device_name].append([ - get_op_name_or_ctx(r), - rounder(cano.convert_memory(-r.bytes)), - None, - rounder(cano.convert_time(r.ts - profiler_start_ts)), - None, - ]) - - default_device = 'CPU' - for dev_name in sorted(events.keys()): - if dev_name.startswith('GPU'): - default_device = dev_name - break - - return { - 'metadata': { - 'title': 'Memory Events', - 'default_device': default_device, - }, - 'columns': [ - {'name': 'Operator', 'type': 'string', 'tooltip': ''}, - {'name': f'Size ({cano.memory_metric})', 'type': 'number', 'tooltip': ''}, - {'name': f'Allocation Time ({cano.time_metric})', 'type': 'number', 'tooltip': ''}, - {'name': f'Release Time ({cano.time_metric})', 'type': 'number', 'tooltip': ''}, - {'name': f'Duration ({cano.time_metric})', 'type': 'number', 'tooltip': ''}, - ], - 'rows': events, # in the form of { 'CPU': [...], 'GPU0': [...], ... } - } - - def get_module_view(self): - if self.is_pytorch_lightning and self.pl_module_stats: - module_stats = self.pl_module_stats - elif self.module_stats: - module_stats = self.module_stats - else: - return None - - result = { - 'columns': [ - {'name': 'Module Name', 'type': 'string', 'key': 'name'}, - {'name': 'Occurences', 'type': 'number', 'key': 'occurences'}, - {'name': 'Operators', 'type': 'number', 'key': 'operators'}, - {'name': 'Host Total Time', 'type': 'number', 'key': 'host_duration'}, - {'name': 'Host Self Time', 'type': 'number', 'key': 'self_host_duration'}, - {'name': 'Device Total Time', 'type': 'number', 'key': 'device_duration'}, - {'name': 'Device Self Time', 'type': 'number', 'key': 'self_device_duration'} - ], - 'data': [] - } - - def process_modules_stats(parent: List[Any], modules_stats: List[Stats]): - for stats in modules_stats: - d = stats._asdict() - d['children'] = [] - parent.append(d) - process_modules_stats(d['children'], stats.children) - - process_modules_stats(result['data'], module_stats) - return result - - def get_operator_tree(self): - if self.is_pytorch_lightning: - root = next(iter(self.pl_tid2tree.values())) - else: - root = next(iter(self.tid2tree.values())) - - result = [] - - def traverse_node(parent: List, node: OperatorNode): - d = { - 'name': node.name, - 'start_time': node.start_time, - 'end_time': node.end_time, - 'type': node.type, - 'tid': node.tid, - 'children': [] - } - parent.append(d) - for child in node.children: - traverse_node(d['children'], child) - - traverse_node(result, root) - return result[0] - - def compare_run(self, exp: 'RunProfile'): - base_root = next(iter(self.tid2tree.values())) - exp_root = next(iter(exp.tid2tree.values())) - diff_root = compare_op_tree(base_root, exp_root) - diff_stats = diff_summary(diff_root) - return diff_stats - - -class DistributedRunProfile(object): - """ Profiling all workers in a view. - """ - - def __init__(self, span: str): - self.worker = 'All' - self.span = span - self.views = [] - self.gpu_info = None - self.steps_to_overlap = None - self.steps_to_wait = None - self.comm_ops = None diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/index.html b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/index.html deleted file mode 100644 index 66f6aca5f..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/index.html +++ /dev/null @@ -1,2 +0,0 @@ -
    \ No newline at end of file diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/index.js b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/index.js deleted file mode 100644 index ddb69f41d..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export async function render() { - document.location.href = 'index.html'; -} diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/trace_embedding.html b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/trace_embedding.html deleted file mode 100644 index 462d2c395..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/trace_embedding.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/trace_script.js b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/trace_script.js deleted file mode 100644 index 039aef359..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/trace_script.js +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * Copyright (c) 2014 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt - */ -// @version 0.7.24 -!function () { window.WebComponents = window.WebComponents || { flags: {} }; var e = "webcomponents.js", t = document.querySelector('script[src*="' + e + '"]'), n = {}; if (!n.noOpts) { if (location.search.slice(1).split("&").forEach(function (e) { var t, r = e.split("="); r[0] && (t = r[0].match(/wc-(.+)/)) && (n[t[1]] = r[1] || !0) }), t) for (var r, o = 0; r = t.attributes[o]; o++)"src" !== r.name && (n[r.name] = r.value || !0); if (n.log && n.log.split) { var i = n.log.split(","); n.log = {}, i.forEach(function (e) { n.log[e] = !0 }) } else n.log = {} } n.shadow = n.shadow || n.shadowdom || n.polyfill, "native" === n.shadow ? n.shadow = !1 : n.shadow = n.shadow || !HTMLElement.prototype.createShadowRoot, n.register && (window.CustomElements = window.CustomElements || { flags: {} }, window.CustomElements.flags.register = n.register), WebComponents.flags = n }(), WebComponents.flags.shadow && ("undefined" == typeof WeakMap && !function () { var e = Object.defineProperty, t = Date.now() % 1e9, n = function () { this.name = "__st" + (1e9 * Math.random() >>> 0) + (t++ + "__") }; n.prototype = { set: function (t, n) { var r = t[this.name]; return r && r[0] === t ? r[1] = n : e(t, this.name, { value: [t, n], writable: !0 }), this }, get: function (e) { var t; return (t = e[this.name]) && t[0] === e ? t[1] : void 0 }, "delete": function (e) { var t = e[this.name]; return !(!t || t[0] !== e) && (t[0] = t[1] = void 0, !0) }, has: function (e) { var t = e[this.name]; return !!t && t[0] === e } }, window.WeakMap = n }(), window.ShadowDOMPolyfill = {}, function (e) { "use strict"; function t() { if ("undefined" != typeof chrome && chrome.app && chrome.app.runtime) return !1; if (navigator.getDeviceStorage) return !1; try { var e = new Function("return true;"); return e() } catch (t) { return !1 } } function n(e) { if (!e) throw new Error("Assertion failed") } function r(e, t) { for (var n = W(t), r = 0; r < n.length; r++) { var o = n[r]; A(e, o, F(t, o)) } return e } function o(e, t) { for (var n = W(t), r = 0; r < n.length; r++) { var o = n[r]; switch (o) { case "arguments": case "caller": case "length": case "name": case "prototype": case "toString": continue }A(e, o, F(t, o)) } return e } function i(e, t) { for (var n = 0; n < t.length; n++)if (t[n] in e) return t[n] } function a(e, t, n) { U.value = n, A(e, t, U) } function s(e, t) { var n = e.__proto__ || Object.getPrototypeOf(e); if (q) try { W(n) } catch (r) { n = n.__proto__ } var o = R.get(n); if (o) return o; var i = s(n), a = E(i); return g(n, a, t), a } function c(e, t) { w(e, t, !0) } function l(e, t) { w(t, e, !1) } function u(e) { return /^on[a-z]+$/.test(e) } function d(e) { return /^[a-zA-Z_$][a-zA-Z_$0-9]*$/.test(e) } function p(e) { return k && d(e) ? new Function("return this.__impl4cf1e782hg__." + e) : function () { return this.__impl4cf1e782hg__[e] } } function h(e) { return k && d(e) ? new Function("v", "this.__impl4cf1e782hg__." + e + " = v") : function (t) { this.__impl4cf1e782hg__[e] = t } } function f(e) { return k && d(e) ? new Function("return this.__impl4cf1e782hg__." + e + ".apply(this.__impl4cf1e782hg__, arguments)") : function () { return this.__impl4cf1e782hg__[e].apply(this.__impl4cf1e782hg__, arguments) } } function m(e, t) { try { return e === window && "showModalDialog" === t ? B : Object.getOwnPropertyDescriptor(e, t) } catch (n) { return B } } function w(t, n, r, o) { for (var i = W(t), a = 0; a < i.length; a++) { var s = i[a]; if ("polymerBlackList_" !== s && !(s in n || t.polymerBlackList_ && t.polymerBlackList_[s])) { q && t.__lookupGetter__(s); var c, l, d = m(t, s); if ("function" != typeof d.value) { var w = u(s); c = w ? e.getEventHandlerGetter(s) : p(s), (d.writable || d.set || V) && (l = w ? e.getEventHandlerSetter(s) : h(s)); var v = V || d.configurable; A(n, s, { get: c, set: l, configurable: v, enumerable: d.enumerable }) } else r && (n[s] = f(s)) } } } function v(e, t, n) { if (null != e) { var r = e.prototype; g(r, t, n), o(t, e) } } function g(e, t, r) { var o = t.prototype; n(void 0 === R.get(e)), R.set(e, t), I.set(o, e), c(e, o), r && l(o, r), a(o, "constructor", t), t.prototype = o } function b(e, t) { return R.get(t.prototype) === e } function y(e) { var t = Object.getPrototypeOf(e), n = s(t), r = E(n); return g(t, r, e), r } function E(e) { function t(t) { e.call(this, t) } var n = Object.create(e.prototype); return n.constructor = t, t.prototype = n, t } function _(e) { return e && e.__impl4cf1e782hg__ } function S(e) { return !_(e) } function T(e) { if (null === e) return null; n(S(e)); var t = e.__wrapper8e3dd93a60__; return null != t ? t : e.__wrapper8e3dd93a60__ = new (s(e, e))(e) } function M(e) { return null === e ? null : (n(_(e)), e.__impl4cf1e782hg__) } function O(e) { return e.__impl4cf1e782hg__ } function L(e, t) { t.__impl4cf1e782hg__ = e, e.__wrapper8e3dd93a60__ = t } function N(e) { return e && _(e) ? M(e) : e } function C(e) { return e && !_(e) ? T(e) : e } function j(e, t) { null !== t && (n(S(e)), n(void 0 === t || _(t)), e.__wrapper8e3dd93a60__ = t) } function D(e, t, n) { G.get = n, A(e.prototype, t, G) } function H(e, t) { D(e, t, function () { return T(this.__impl4cf1e782hg__[t]) }) } function x(e, t) { e.forEach(function (e) { t.forEach(function (t) { e.prototype[t] = function () { var e = C(this); return e[t].apply(e, arguments) } }) }) } var R = new WeakMap, I = new WeakMap, P = Object.create(null), k = t(), A = Object.defineProperty, W = Object.getOwnPropertyNames, F = Object.getOwnPropertyDescriptor, U = { value: void 0, configurable: !0, enumerable: !1, writable: !0 }; W(window); var q = /Firefox/.test(navigator.userAgent), B = { get: function () { }, set: function (e) { }, configurable: !0, enumerable: !0 }, V = function () { var e = Object.getOwnPropertyDescriptor(Node.prototype, "nodeType"); return e && !e.get && !e.set }(), G = { get: void 0, configurable: !0, enumerable: !0 }; e.addForwardingProperties = c, e.assert = n, e.constructorTable = R, e.defineGetter = D, e.defineWrapGetter = H, e.forwardMethodsToWrapper = x, e.isIdentifierName = d, e.isWrapper = _, e.isWrapperFor = b, e.mixin = r, e.nativePrototypeTable = I, e.oneOf = i, e.registerObject = y, e.registerWrapper = v, e.rewrap = j, e.setWrapper = L, e.unsafeUnwrap = O, e.unwrap = M, e.unwrapIfNeeded = N, e.wrap = T, e.wrapIfNeeded = C, e.wrappers = P }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e, t, n) { return { index: e, removed: t, addedCount: n } } function n() { } var r = 0, o = 1, i = 2, a = 3; n.prototype = { calcEditDistances: function (e, t, n, r, o, i) { for (var a = i - o + 1, s = n - t + 1, c = new Array(a), l = 0; l < a; l++)c[l] = new Array(s), c[l][0] = l; for (var u = 0; u < s; u++)c[0][u] = u; for (var l = 1; l < a; l++)for (var u = 1; u < s; u++)if (this.equals(e[t + u - 1], r[o + l - 1])) c[l][u] = c[l - 1][u - 1]; else { var d = c[l - 1][u] + 1, p = c[l][u - 1] + 1; c[l][u] = d < p ? d : p } return c }, spliceOperationsFromEditDistances: function (e) { for (var t = e.length - 1, n = e[0].length - 1, s = e[t][n], c = []; t > 0 || n > 0;)if (0 != t) if (0 != n) { var l, u = e[t - 1][n - 1], d = e[t - 1][n], p = e[t][n - 1]; l = d < p ? d < u ? d : u : p < u ? p : u, l == u ? (u == s ? c.push(r) : (c.push(o), s = u), t--, n--) : l == d ? (c.push(a), t--, s = d) : (c.push(i), n--, s = p) } else c.push(a), t--; else c.push(i), n--; return c.reverse(), c }, calcSplices: function (e, n, s, c, l, u) { var d = 0, p = 0, h = Math.min(s - n, u - l); if (0 == n && 0 == l && (d = this.sharedPrefix(e, c, h)), s == e.length && u == c.length && (p = this.sharedSuffix(e, c, h - d)), n += d, l += d, s -= p, u -= p, s - n == 0 && u - l == 0) return []; if (n == s) { for (var f = t(n, [], 0); l < u;)f.removed.push(c[l++]); return [f] } if (l == u) return [t(n, [], s - n)]; for (var m = this.spliceOperationsFromEditDistances(this.calcEditDistances(e, n, s, c, l, u)), f = void 0, w = [], v = n, g = l, b = 0; b < m.length; b++)switch (m[b]) { case r: f && (w.push(f), f = void 0), v++, g++; break; case o: f || (f = t(v, [], 0)), f.addedCount++, v++, f.removed.push(c[g]), g++; break; case i: f || (f = t(v, [], 0)), f.addedCount++, v++; break; case a: f || (f = t(v, [], 0)), f.removed.push(c[g]), g++ }return f && w.push(f), w }, sharedPrefix: function (e, t, n) { for (var r = 0; r < n; r++)if (!this.equals(e[r], t[r])) return r; return n }, sharedSuffix: function (e, t, n) { for (var r = e.length, o = t.length, i = 0; i < n && this.equals(e[--r], t[--o]);)i++; return i }, calculateSplices: function (e, t) { return this.calcSplices(e, 0, e.length, t, 0, t.length) }, equals: function (e, t) { return e === t } }, e.ArraySplice = n }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t() { a = !1; var e = i.slice(0); i = []; for (var t = 0; t < e.length; t++)(0, e[t])() } function n(e) { i.push(e), a || (a = !0, r(t, 0)) } var r, o = window.MutationObserver, i = [], a = !1; if (o) { var s = 1, c = new o(t), l = document.createTextNode(s); c.observe(l, { characterData: !0 }), r = function () { s = (s + 1) % 2, l.data = s } } else r = window.setTimeout; e.setEndOfMicrotask = n }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { e.scheduled_ || (e.scheduled_ = !0, f.push(e), m || (u(n), m = !0)) } function n() { for (m = !1; f.length;) { var e = f; f = [], e.sort(function (e, t) { return e.uid_ - t.uid_ }); for (var t = 0; t < e.length; t++) { var n = e[t]; n.scheduled_ = !1; var r = n.takeRecords(); i(n), r.length && n.callback_(r, n) } } } function r(e, t) { this.type = e, this.target = t, this.addedNodes = new p.NodeList, this.removedNodes = new p.NodeList, this.previousSibling = null, this.nextSibling = null, this.attributeName = null, this.attributeNamespace = null, this.oldValue = null } function o(e, t) { for (; e; e = e.parentNode) { var n = h.get(e); if (n) for (var r = 0; r < n.length; r++) { var o = n[r]; o.options.subtree && o.addTransientObserver(t) } } } function i(e) { for (var t = 0; t < e.nodes_.length; t++) { var n = e.nodes_[t], r = h.get(n); if (!r) return; for (var o = 0; o < r.length; o++) { var i = r[o]; i.observer === e && i.removeTransientObservers() } } } function a(e, n, o) { for (var i = Object.create(null), a = Object.create(null), s = e; s; s = s.parentNode) { var c = h.get(s); if (c) for (var l = 0; l < c.length; l++) { var u = c[l], d = u.options; if ((s === e || d.subtree) && ("attributes" !== n || d.attributes) && ("attributes" !== n || !d.attributeFilter || null === o.namespace && d.attributeFilter.indexOf(o.name) !== -1) && ("characterData" !== n || d.characterData) && ("childList" !== n || d.childList)) { var p = u.observer; i[p.uid_] = p, ("attributes" === n && d.attributeOldValue || "characterData" === n && d.characterDataOldValue) && (a[p.uid_] = o.oldValue) } } } for (var f in i) { var p = i[f], m = new r(n, e); "name" in o && "namespace" in o && (m.attributeName = o.name, m.attributeNamespace = o.namespace), o.addedNodes && (m.addedNodes = o.addedNodes), o.removedNodes && (m.removedNodes = o.removedNodes), o.previousSibling && (m.previousSibling = o.previousSibling), o.nextSibling && (m.nextSibling = o.nextSibling), void 0 !== a[f] && (m.oldValue = a[f]), t(p), p.records_.push(m) } } function s(e) { if (this.childList = !!e.childList, this.subtree = !!e.subtree, "attributes" in e || !("attributeOldValue" in e || "attributeFilter" in e) ? this.attributes = !!e.attributes : this.attributes = !0, "characterDataOldValue" in e && !("characterData" in e) ? this.characterData = !0 : this.characterData = !!e.characterData, !this.attributes && (e.attributeOldValue || "attributeFilter" in e) || !this.characterData && e.characterDataOldValue) throw new TypeError; if (this.characterData = !!e.characterData, this.attributeOldValue = !!e.attributeOldValue, this.characterDataOldValue = !!e.characterDataOldValue, "attributeFilter" in e) { if (null == e.attributeFilter || "object" != typeof e.attributeFilter) throw new TypeError; this.attributeFilter = w.call(e.attributeFilter) } else this.attributeFilter = null } function c(e) { this.callback_ = e, this.nodes_ = [], this.records_ = [], this.uid_ = ++v, this.scheduled_ = !1 } function l(e, t, n) { this.observer = e, this.target = t, this.options = n, this.transientObservedNodes = [] } var u = e.setEndOfMicrotask, d = e.wrapIfNeeded, p = e.wrappers, h = new WeakMap, f = [], m = !1, w = Array.prototype.slice, v = 0; c.prototype = { constructor: c, observe: function (e, t) { e = d(e); var n, r = new s(t), o = h.get(e); o || h.set(e, o = []); for (var i = 0; i < o.length; i++)o[i].observer === this && (n = o[i], n.removeTransientObservers(), n.options = r); n || (n = new l(this, e, r), o.push(n), this.nodes_.push(e)) }, disconnect: function () { this.nodes_.forEach(function (e) { for (var t = h.get(e), n = 0; n < t.length; n++) { var r = t[n]; if (r.observer === this) { t.splice(n, 1); break } } }, this), this.records_ = [] }, takeRecords: function () { var e = this.records_; return this.records_ = [], e } }, l.prototype = { addTransientObserver: function (e) { if (e !== this.target) { t(this.observer), this.transientObservedNodes.push(e); var n = h.get(e); n || h.set(e, n = []), n.push(this) } }, removeTransientObservers: function () { var e = this.transientObservedNodes; this.transientObservedNodes = []; for (var t = 0; t < e.length; t++)for (var n = e[t], r = h.get(n), o = 0; o < r.length; o++)if (r[o] === this) { r.splice(o, 1); break } } }, e.enqueueMutation = a, e.registerTransientObservers = o, e.wrappers.MutationObserver = c, e.wrappers.MutationRecord = r }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e, t) { this.root = e, this.parent = t } function n(e, t) { if (e.treeScope_ !== t) { e.treeScope_ = t; for (var r = e.shadowRoot; r; r = r.olderShadowRoot)r.treeScope_.parent = t; for (var o = e.firstChild; o; o = o.nextSibling)n(o, t) } } function r(n) { if (n instanceof e.wrappers.Window, n.treeScope_) return n.treeScope_; var o, i = n.parentNode; return o = i ? r(i) : new t(n, null), n.treeScope_ = o } t.prototype = { get renderer() { return this.root instanceof e.wrappers.ShadowRoot ? e.getRendererForHost(this.root.host) : null }, contains: function (e) { for (; e; e = e.parent)if (e === this) return !0; return !1 } }, e.TreeScope = t, e.getTreeScope = r, e.setTreeScope = n }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { return e instanceof G.ShadowRoot } function n(e) { return A(e).root } function r(e, r) { var s = [], c = e; for (s.push(c); c;) { var l = a(c); if (l && l.length > 0) { for (var u = 0; u < l.length; u++) { var p = l[u]; if (i(p)) { var h = n(p), f = h.olderShadowRoot; f && s.push(f) } s.push(p) } c = l[l.length - 1] } else if (t(c)) { if (d(e, c) && o(r)) break; c = c.host, s.push(c) } else c = c.parentNode, c && s.push(c) } return s } function o(e) { if (!e) return !1; switch (e.type) { case "abort": case "error": case "select": case "change": case "load": case "reset": case "resize": case "scroll": case "selectstart": return !0 }return !1 } function i(e) { return e instanceof HTMLShadowElement } function a(t) { return e.getDestinationInsertionPoints(t) } function s(e, t) { if (0 === e.length) return t; t instanceof G.Window && (t = t.document); for (var n = A(t), r = e[0], o = A(r), i = l(n, o), a = 0; a < e.length; a++) { var s = e[a]; if (A(s) === i) return s } return e[e.length - 1] } function c(e) { for (var t = []; e; e = e.parent)t.push(e); return t } function l(e, t) { for (var n = c(e), r = c(t), o = null; n.length > 0 && r.length > 0;) { var i = n.pop(), a = r.pop(); if (i !== a) break; o = i } return o } function u(e, t, n) { t instanceof G.Window && (t = t.document); var o, i = A(t), a = A(n), s = r(n, e), o = l(i, a); o || (o = a.root); for (var c = o; c; c = c.parent)for (var u = 0; u < s.length; u++) { var d = s[u]; if (A(d) === c) return d } return null } function d(e, t) { return A(e) === A(t) } function p(e) { if (!K.get(e) && (K.set(e, !0), f(V(e), V(e.target)), P)) { var t = P; throw P = null, t } } function h(e) { switch (e.type) { case "load": case "beforeunload": case "unload": return !0 }return !1 } function f(t, n) { if ($.get(t)) throw new Error("InvalidStateError"); $.set(t, !0), e.renderAllPending(); var o, i, a; if (h(t) && !t.bubbles) { var s = n; s instanceof G.Document && (a = s.defaultView) && (i = s, o = []) } if (!o) if (n instanceof G.Window) a = n, o = []; else if (o = r(n, t), !h(t)) { var s = o[o.length - 1]; s instanceof G.Document && (a = s.defaultView) } return ne.set(t, o), m(t, o, a, i) && w(t, o, a, i) && v(t, o, a, i), J.set(t, re), Y["delete"](t, null), $["delete"](t), t.defaultPrevented } function m(e, t, n, r) { var o = oe; if (n && !g(n, e, o, t, r)) return !1; for (var i = t.length - 1; i > 0; i--)if (!g(t[i], e, o, t, r)) return !1; return !0 } function w(e, t, n, r) { var o = ie, i = t[0] || n; return g(i, e, o, t, r) } function v(e, t, n, r) { for (var o = ae, i = 1; i < t.length; i++)if (!g(t[i], e, o, t, r)) return; n && t.length > 0 && g(n, e, o, t, r) } function g(e, t, n, r, o) { var i = z.get(e); if (!i) return !0; var a = o || s(r, e); if (a === e) { if (n === oe) return !0; n === ae && (n = ie) } else if (n === ae && !t.bubbles) return !0; if ("relatedTarget" in t) { var c = B(t), l = c.relatedTarget; if (l) { if (l instanceof Object && l.addEventListener) { var d = V(l), p = u(t, e, d); if (p === a) return !0 } else p = null; Z.set(t, p) } } J.set(t, n); var h = t.type, f = !1; X.set(t, a), Y.set(t, e), i.depth++; for (var m = 0, w = i.length; m < w; m++) { var v = i[m]; if (v.removed) f = !0; else if (!(v.type !== h || !v.capture && n === oe || v.capture && n === ae)) try { if ("function" == typeof v.handler ? v.handler.call(e, t) : v.handler.handleEvent(t), ee.get(t)) return !1 } catch (g) { P || (P = g) } } if (i.depth--, f && 0 === i.depth) { var b = i.slice(); i.length = 0; for (var m = 0; m < b.length; m++)b[m].removed || i.push(b[m]) } return !Q.get(t) } function b(e, t, n) { this.type = e, this.handler = t, this.capture = Boolean(n) } function y(e, t) { if (!(e instanceof se)) return V(T(se, "Event", e, t)); var n = e; return be || "beforeunload" !== n.type || this instanceof M ? void U(n, this) : new M(n) } function E(e) { return e && e.relatedTarget ? Object.create(e, { relatedTarget: { value: B(e.relatedTarget) } }) : e } function _(e, t, n) { var r = window[e], o = function (t, n) { return t instanceof r ? void U(t, this) : V(T(r, e, t, n)) }; if (o.prototype = Object.create(t.prototype), n && W(o.prototype, n), r) try { F(r, o, new r("temp")) } catch (i) { F(r, o, document.createEvent(e)) } return o } function S(e, t) { return function () { arguments[t] = B(arguments[t]); var n = B(this); n[e].apply(n, arguments) } } function T(e, t, n, r) { if (ve) return new e(n, E(r)); var o = B(document.createEvent(t)), i = we[t], a = [n]; return Object.keys(i).forEach(function (e) { var t = null != r && e in r ? r[e] : i[e]; "relatedTarget" === e && (t = B(t)), a.push(t) }), o["init" + t].apply(o, a), o } function M(e) { y.call(this, e) } function O(e) { return "function" == typeof e || e && e.handleEvent } function L(e) { switch (e) { case "DOMAttrModified": case "DOMAttributeNameChanged": case "DOMCharacterDataModified": case "DOMElementNameChanged": case "DOMNodeInserted": case "DOMNodeInsertedIntoDocument": case "DOMNodeRemoved": case "DOMNodeRemovedFromDocument": case "DOMSubtreeModified": return !0 }return !1 } function N(e) { U(e, this) } function C(e) { return e instanceof G.ShadowRoot && (e = e.host), B(e) } function j(e, t) { var n = z.get(e); if (n) for (var r = 0; r < n.length; r++)if (!n[r].removed && n[r].type === t) return !0; return !1 } function D(e, t) { for (var n = B(e); n; n = n.parentNode)if (j(V(n), t)) return !0; return !1 } function H(e) { k(e, Ee) } function x(t, n, o, i) { e.renderAllPending(); var a = V(_e.call(q(n), o, i)); if (!a) return null; var c = r(a, null), l = c.lastIndexOf(t); return l == -1 ? null : (c = c.slice(0, l), s(c, t)) } function R(e) { return function () { var t = te.get(this); return t && t[e] && t[e].value || null } } function I(e) { var t = e.slice(2); return function (n) { var r = te.get(this); r || (r = Object.create(null), te.set(this, r)); var o = r[e]; if (o && this.removeEventListener(t, o.wrapped, !1), "function" == typeof n) { var i = function (t) { var r = n.call(this, t); r === !1 ? t.preventDefault() : "onbeforeunload" === e && "string" == typeof r && (t.returnValue = r) }; this.addEventListener(t, i, !1), r[e] = { value: n, wrapped: i } } } } var P, k = e.forwardMethodsToWrapper, A = e.getTreeScope, W = e.mixin, F = e.registerWrapper, U = e.setWrapper, q = e.unsafeUnwrap, B = e.unwrap, V = e.wrap, G = e.wrappers, z = (new WeakMap, new WeakMap), K = new WeakMap, $ = new WeakMap, X = new WeakMap, Y = new WeakMap, Z = new WeakMap, J = new WeakMap, Q = new WeakMap, ee = new WeakMap, te = new WeakMap, ne = new WeakMap, re = 0, oe = 1, ie = 2, ae = 3; b.prototype = { equals: function (e) { return this.handler === e.handler && this.type === e.type && this.capture === e.capture }, get removed() { return null === this.handler }, remove: function () { this.handler = null } }; var se = window.Event; se.prototype.polymerBlackList_ = { returnValue: !0, keyLocation: !0 }, y.prototype = { get target() { return X.get(this) }, get currentTarget() { return Y.get(this) }, get eventPhase() { return J.get(this) }, get path() { var e = ne.get(this); return e ? e.slice() : [] }, stopPropagation: function () { Q.set(this, !0) }, stopImmediatePropagation: function () { Q.set(this, !0), ee.set(this, !0) } }; var ce = function () { var e = document.createEvent("Event"); return e.initEvent("test", !0, !0), e.preventDefault(), e.defaultPrevented }(); ce || (y.prototype.preventDefault = function () { this.cancelable && (q(this).preventDefault(), Object.defineProperty(this, "defaultPrevented", { get: function () { return !0 }, configurable: !0 })) }), F(se, y, document.createEvent("Event")); var le = _("UIEvent", y), ue = _("CustomEvent", y), de = { get relatedTarget() { var e = Z.get(this); return void 0 !== e ? e : V(B(this).relatedTarget) } }, pe = W({ initMouseEvent: S("initMouseEvent", 14) }, de), he = W({ initFocusEvent: S("initFocusEvent", 5) }, de), fe = _("MouseEvent", le, pe), me = _("FocusEvent", le, he), we = Object.create(null), ve = function () { try { new window.FocusEvent("focus") } catch (e) { return !1 } return !0 }(); if (!ve) { var ge = function (e, t, n) { if (n) { var r = we[n]; t = W(W({}, r), t) } we[e] = t }; ge("Event", { bubbles: !1, cancelable: !1 }), ge("CustomEvent", { detail: null }, "Event"), ge("UIEvent", { view: null, detail: 0 }, "Event"), ge("MouseEvent", { screenX: 0, screenY: 0, clientX: 0, clientY: 0, ctrlKey: !1, altKey: !1, shiftKey: !1, metaKey: !1, button: 0, relatedTarget: null }, "UIEvent"), ge("FocusEvent", { relatedTarget: null }, "UIEvent") } var be = window.BeforeUnloadEvent; M.prototype = Object.create(y.prototype), W(M.prototype, { get returnValue() { return q(this).returnValue }, set returnValue(e) { q(this).returnValue = e } }), be && F(be, M); var ye = window.EventTarget, Ee = ["addEventListener", "removeEventListener", "dispatchEvent"];[Node, Window].forEach(function (e) { var t = e.prototype; Ee.forEach(function (e) { Object.defineProperty(t, e + "_", { value: t[e] }) }) }), N.prototype = { addEventListener: function (e, t, n) { if (O(t) && !L(e)) { var r = new b(e, t, n), o = z.get(this); if (o) { for (var i = 0; i < o.length; i++)if (r.equals(o[i])) return } else o = [], o.depth = 0, z.set(this, o); o.push(r); var a = C(this); a.addEventListener_(e, p, !0) } }, removeEventListener: function (e, t, n) { n = Boolean(n); var r = z.get(this); if (r) { for (var o = 0, i = !1, a = 0; a < r.length; a++)r[a].type === e && r[a].capture === n && (o++, r[a].handler === t && (i = !0, r[a].remove())); if (i && 1 === o) { var s = C(this); s.removeEventListener_(e, p, !0) } } }, dispatchEvent: function (t) { var n = B(t), r = n.type; K.set(n, !1), e.renderAllPending(); var o; D(this, r) || (o = function () { }, this.addEventListener(r, o, !0)); try { return B(this).dispatchEvent_(n) } finally { o && this.removeEventListener(r, o, !0) } } }, ye && F(ye, N); var _e = document.elementFromPoint; e.elementFromPoint = x, e.getEventHandlerGetter = R, e.getEventHandlerSetter = I, e.wrapEventTargetMethods = H, e.wrappers.BeforeUnloadEvent = M, e.wrappers.CustomEvent = ue, e.wrappers.Event = y, e.wrappers.EventTarget = N, e.wrappers.FocusEvent = me, e.wrappers.MouseEvent = fe, e.wrappers.UIEvent = le }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e, t) { Object.defineProperty(e, t, m) } function n(e) { l(e, this) } function r() { this.length = 0, t(this, "length") } function o(e) { for (var t = new r, o = 0; o < e.length; o++)t[o] = new n(e[o]); return t.length = o, t } function i(e) { a.call(this, e) } var a = e.wrappers.UIEvent, s = e.mixin, c = e.registerWrapper, l = e.setWrapper, u = e.unsafeUnwrap, d = e.wrap, p = window.TouchEvent; if (p) { var h; try { h = document.createEvent("TouchEvent") } catch (f) { return } var m = { enumerable: !1 }; n.prototype = { get target() { return d(u(this).target) } }; var w = { configurable: !0, enumerable: !0, get: null };["clientX", "clientY", "screenX", "screenY", "pageX", "pageY", "identifier", "webkitRadiusX", "webkitRadiusY", "webkitRotationAngle", "webkitForce"].forEach(function (e) { w.get = function () { return u(this)[e] }, Object.defineProperty(n.prototype, e, w) }), r.prototype = { item: function (e) { return this[e] } }, i.prototype = Object.create(a.prototype), s(i.prototype, { get touches() { return o(u(this).touches) }, get targetTouches() { return o(u(this).targetTouches) }, get changedTouches() { return o(u(this).changedTouches) }, initTouchEvent: function () { throw new Error("Not implemented") } }), c(p, i, h), e.wrappers.Touch = n, e.wrappers.TouchEvent = i, e.wrappers.TouchList = r } }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e, t) { Object.defineProperty(e, t, s) } function n() { this.length = 0, t(this, "length") } function r(e) { if (null == e) return e; for (var t = new n, r = 0, o = e.length; r < o; r++)t[r] = a(e[r]); return t.length = o, t } function o(e, t) { e.prototype[t] = function () { return r(i(this)[t].apply(i(this), arguments)) } } var i = e.unsafeUnwrap, a = e.wrap, s = { enumerable: !1 }; n.prototype = { item: function (e) { return this[e] } }, t(n.prototype, "item"), e.wrappers.NodeList = n, e.addWrapNodeListMethod = o, e.wrapNodeList = r }(window.ShadowDOMPolyfill), function (e) { "use strict"; e.wrapHTMLCollection = e.wrapNodeList, e.wrappers.HTMLCollection = e.wrappers.NodeList }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { O(e instanceof _) } function n(e) { var t = new T; return t[0] = e, t.length = 1, t } function r(e, t, n) { N(t, "childList", { removedNodes: n, previousSibling: e.previousSibling, nextSibling: e.nextSibling }) } function o(e, t) { N(e, "childList", { removedNodes: t }) } function i(e, t, r, o) { if (e instanceof DocumentFragment) { var i = s(e); U = !0; for (var a = i.length - 1; a >= 0; a--)e.removeChild(i[a]), i[a].parentNode_ = t; U = !1; for (var a = 0; a < i.length; a++)i[a].previousSibling_ = i[a - 1] || r, i[a].nextSibling_ = i[a + 1] || o; return r && (r.nextSibling_ = i[0]), o && (o.previousSibling_ = i[i.length - 1]), i } var i = n(e), c = e.parentNode; return c && c.removeChild(e), e.parentNode_ = t, e.previousSibling_ = r, e.nextSibling_ = o, r && (r.nextSibling_ = e), o && (o.previousSibling_ = e), i } function a(e) { if (e instanceof DocumentFragment) return s(e); var t = n(e), o = e.parentNode; return o && r(e, o, t), t } function s(e) { for (var t = new T, n = 0, r = e.firstChild; r; r = r.nextSibling)t[n++] = r; return t.length = n, o(e, t), t } function c(e) { return e } function l(e, t) { R(e, t), e.nodeIsInserted_() } function u(e, t) { for (var n = C(t), r = 0; r < e.length; r++)l(e[r], n) } function d(e) { R(e, new M(e, null)) } function p(e) { for (var t = 0; t < e.length; t++)d(e[t]) } function h(e, t) { var n = e.nodeType === _.DOCUMENT_NODE ? e : e.ownerDocument; n !== t.ownerDocument && n.adoptNode(t) } function f(t, n) { if (n.length) { var r = t.ownerDocument; if (r !== n[0].ownerDocument) for (var o = 0; o < n.length; o++)e.adoptNodeNoRemove(n[o], r) } } function m(e, t) { f(e, t); var n = t.length; if (1 === n) return P(t[0]); for (var r = P(e.ownerDocument.createDocumentFragment()), o = 0; o < n; o++)r.appendChild(P(t[o])); return r } function w(e) { if (void 0 !== e.firstChild_) for (var t = e.firstChild_; t;) { var n = t; t = t.nextSibling_, n.parentNode_ = n.previousSibling_ = n.nextSibling_ = void 0 } e.firstChild_ = e.lastChild_ = void 0 } function v(e) { if (e.invalidateShadowRenderer()) { for (var t = e.firstChild; t;) { O(t.parentNode === e); var n = t.nextSibling, r = P(t), o = r.parentNode; o && X.call(o, r), t.previousSibling_ = t.nextSibling_ = t.parentNode_ = null, t = n } e.firstChild_ = e.lastChild_ = null } else for (var n, i = P(e), a = i.firstChild; a;)n = a.nextSibling, X.call(i, a), a = n } function g(e) { var t = e.parentNode; return t && t.invalidateShadowRenderer() } function b(e) { for (var t, n = 0; n < e.length; n++)t = e[n], t.parentNode.removeChild(t) } function y(e, t, n) { var r; if (r = A(n ? q.call(n, I(e), !1) : B.call(I(e), !1)), t) { for (var o = e.firstChild; o; o = o.nextSibling)r.appendChild(y(o, !0, n)); if (e instanceof F.HTMLTemplateElement) for (var i = r.content, o = e.content.firstChild; o; o = o.nextSibling)i.appendChild(y(o, !0, n)) } return r } function E(e, t) { if (!t || C(e) !== C(t)) return !1; for (var n = t; n; n = n.parentNode)if (n === e) return !0; return !1 } function _(e) { O(e instanceof V), S.call(this, e), this.parentNode_ = void 0, this.firstChild_ = void 0, this.lastChild_ = void 0, this.nextSibling_ = void 0, this.previousSibling_ = void 0, this.treeScope_ = void 0 } var S = e.wrappers.EventTarget, T = e.wrappers.NodeList, M = e.TreeScope, O = e.assert, L = e.defineWrapGetter, N = e.enqueueMutation, C = e.getTreeScope, j = e.isWrapper, D = e.mixin, H = e.registerTransientObservers, x = e.registerWrapper, R = e.setTreeScope, I = e.unsafeUnwrap, P = e.unwrap, k = e.unwrapIfNeeded, A = e.wrap, W = e.wrapIfNeeded, F = e.wrappers, U = !1, q = document.importNode, B = window.Node.prototype.cloneNode, V = window.Node, G = window.DocumentFragment, z = (V.prototype.appendChild, V.prototype.compareDocumentPosition), K = V.prototype.isEqualNode, $ = V.prototype.insertBefore, X = V.prototype.removeChild, Y = V.prototype.replaceChild, Z = /Trident|Edge/.test(navigator.userAgent), J = Z ? function (e, t) { try { X.call(e, t) } catch (n) { if (!(e instanceof G)) throw n } } : function (e, t) { X.call(e, t) }; _.prototype = Object.create(S.prototype), D(_.prototype, { appendChild: function (e) { return this.insertBefore(e, null) }, insertBefore: function (e, n) { t(e); var r; n ? j(n) ? r = P(n) : (r = n, n = A(r)) : (n = null, r = null), n && O(n.parentNode === this); var o, s = n ? n.previousSibling : this.lastChild, c = !this.invalidateShadowRenderer() && !g(e); if (o = c ? a(e) : i(e, this, s, n), c) h(this, e), w(this), $.call(I(this), P(e), r); else { s || (this.firstChild_ = o[0]), n || (this.lastChild_ = o[o.length - 1], void 0 === this.firstChild_ && (this.firstChild_ = this.firstChild)); var l = r ? r.parentNode : I(this); l ? $.call(l, m(this, o), r) : f(this, o) } return N(this, "childList", { addedNodes: o, nextSibling: n, previousSibling: s }), u(o, this), e }, removeChild: function (e) { if (t(e), e.parentNode !== this) { for (var r = !1, o = (this.childNodes, this.firstChild); o; o = o.nextSibling)if (o === e) { r = !0; break } if (!r) throw new Error("NotFoundError") } var i = P(e), a = e.nextSibling, s = e.previousSibling; if (this.invalidateShadowRenderer()) { var c = this.firstChild, l = this.lastChild, u = i.parentNode; u && J(u, i), c === e && (this.firstChild_ = a), l === e && (this.lastChild_ = s), s && (s.nextSibling_ = a), a && (a.previousSibling_ = s), e.previousSibling_ = e.nextSibling_ = e.parentNode_ = void 0 } else w(this), J(I(this), i); return U || N(this, "childList", { removedNodes: n(e), nextSibling: a, previousSibling: s }), H(this, e), e }, replaceChild: function (e, r) { t(e); var o; if (j(r) ? o = P(r) : (o = r, r = A(o)), r.parentNode !== this) throw new Error("NotFoundError"); var s, c = r.nextSibling, l = r.previousSibling, p = !this.invalidateShadowRenderer() && !g(e); return p ? s = a(e) : (c === e && (c = e.nextSibling), s = i(e, this, l, c)), p ? (h(this, e), w(this), Y.call(I(this), P(e), o)) : (this.firstChild === r && (this.firstChild_ = s[0]), this.lastChild === r && (this.lastChild_ = s[s.length - 1]), r.previousSibling_ = r.nextSibling_ = r.parentNode_ = void 0, o.parentNode && Y.call(o.parentNode, m(this, s), o)), N(this, "childList", { addedNodes: s, removedNodes: n(r), nextSibling: c, previousSibling: l }), d(r), u(s, this), r }, nodeIsInserted_: function () { for (var e = this.firstChild; e; e = e.nextSibling)e.nodeIsInserted_() }, hasChildNodes: function () { return null !== this.firstChild }, get parentNode() { return void 0 !== this.parentNode_ ? this.parentNode_ : A(I(this).parentNode) }, get firstChild() { return void 0 !== this.firstChild_ ? this.firstChild_ : A(I(this).firstChild) }, get lastChild() { return void 0 !== this.lastChild_ ? this.lastChild_ : A(I(this).lastChild) }, get nextSibling() { return void 0 !== this.nextSibling_ ? this.nextSibling_ : A(I(this).nextSibling) }, get previousSibling() { return void 0 !== this.previousSibling_ ? this.previousSibling_ : A(I(this).previousSibling) }, get parentElement() { for (var e = this.parentNode; e && e.nodeType !== _.ELEMENT_NODE;)e = e.parentNode; return e }, get textContent() { for (var e = "", t = this.firstChild; t; t = t.nextSibling)t.nodeType != _.COMMENT_NODE && (e += t.textContent); return e }, set textContent(e) { null == e && (e = ""); var t = c(this.childNodes); if (this.invalidateShadowRenderer()) { if (v(this), "" !== e) { var n = I(this).ownerDocument.createTextNode(e); this.appendChild(n) } } else w(this), I(this).textContent = e; var r = c(this.childNodes); N(this, "childList", { addedNodes: r, removedNodes: t }), p(t), u(r, this) }, get childNodes() { for (var e = new T, t = 0, n = this.firstChild; n; n = n.nextSibling)e[t++] = n; return e.length = t, e }, cloneNode: function (e) { return y(this, e) }, contains: function (e) { return E(this, W(e)) }, compareDocumentPosition: function (e) { return z.call(I(this), k(e)) }, isEqualNode: function (e) { return K.call(I(this), k(e)) }, normalize: function () { for (var e, t, n = c(this.childNodes), r = [], o = "", i = 0; i < n.length; i++)t = n[i], t.nodeType === _.TEXT_NODE ? e || t.data.length ? e ? (o += t.data, r.push(t)) : e = t : this.removeChild(t) : (e && r.length && (e.data += o, b(r)), r = [], o = "", e = null, t.childNodes.length && t.normalize()); e && r.length && (e.data += o, b(r)) } }), L(_, "ownerDocument"), x(V, _, document.createDocumentFragment()), delete _.prototype.querySelector, delete _.prototype.querySelectorAll, _.prototype = D(Object.create(S.prototype), _.prototype), e.cloneNode = y, e.nodeWasAdded = l, e.nodeWasRemoved = d, e.nodesWereAdded = u, e.nodesWereRemoved = p, e.originalInsertBefore = $, e.originalRemoveChild = X, e.snapshotNodeList = c, e.wrappers.Node = _ }(window.ShadowDOMPolyfill), function (e) { - "use strict"; function t(t, n, r, o) { for (var i = null, a = null, s = 0, c = t.length; s < c; s++)i = b(t[s]), !o && (a = v(i).root) && a instanceof e.wrappers.ShadowRoot || (r[n++] = i); return n } function n(e) { return String(e).replace(/\/deep\/|::shadow|>>>/g, " ") } function r(e) { return String(e).replace(/:host\(([^\s]+)\)/g, "$1").replace(/([^\s]):host/g, "$1").replace(":host", "*").replace(/\^|\/shadow\/|\/shadow-deep\/|::shadow|\/deep\/|::content|>>>/g, " ") } function o(e, t) { for (var n, r = e.firstElementChild; r;) { if (r.matches(t)) return r; if (n = o(r, t)) return n; r = r.nextElementSibling } return null } function i(e, t) { return e.matches(t) } function a(e, t, n) { var r = e.localName; return r === t || r === n && e.namespaceURI === j } function s() { return !0 } function c(e, t, n) { return e.localName === n } function l(e, t) { return e.namespaceURI === t } function u(e, t, n) { return e.namespaceURI === t && e.localName === n } function d(e, t, n, r, o, i) { for (var a = e.firstElementChild; a;)r(a, o, i) && (n[t++] = a), t = d(a, t, n, r, o, i), a = a.nextElementSibling; return t } function p(n, r, o, i, a) { var s, c = g(this), l = v(this).root; if (l instanceof e.wrappers.ShadowRoot) return d(this, r, o, n, i, null); if (c instanceof N) s = S.call(c, i); else { if (!(c instanceof C)) return d(this, r, o, n, i, null); s = _.call(c, i) } return t(s, r, o, a) } function h(n, r, o, i, a) { var s, c = g(this), l = v(this).root; if (l instanceof e.wrappers.ShadowRoot) return d(this, r, o, n, i, a); if (c instanceof N) s = M.call(c, i, a); else { if (!(c instanceof C)) return d(this, r, o, n, i, a); s = T.call(c, i, a) } return t(s, r, o, !1) } function f(n, r, o, i, a) { var s, c = g(this), l = v(this).root; if (l instanceof e.wrappers.ShadowRoot) return d(this, r, o, n, i, a); if (c instanceof N) s = L.call(c, i, a); else { if (!(c instanceof C)) return d(this, r, o, n, i, a); s = O.call(c, i, a) } return t(s, r, o, !1) } var m = e.wrappers.HTMLCollection, w = e.wrappers.NodeList, v = e.getTreeScope, g = e.unsafeUnwrap, b = e.wrap, y = document.querySelector, E = document.documentElement.querySelector, _ = document.querySelectorAll, S = document.documentElement.querySelectorAll, T = document.getElementsByTagName, M = document.documentElement.getElementsByTagName, O = document.getElementsByTagNameNS, L = document.documentElement.getElementsByTagNameNS, N = window.Element, C = window.HTMLDocument || window.Document, j = "http://www.w3.org/1999/xhtml", D = { - querySelector: function (t) { var r = n(t), i = r !== t; t = r; var a, s = g(this), c = v(this).root; if (c instanceof e.wrappers.ShadowRoot) return o(this, t); if (s instanceof N) a = b(E.call(s, t)); else { if (!(s instanceof C)) return o(this, t); a = b(y.call(s, t)) } return a && !i && (c = v(a).root) && c instanceof e.wrappers.ShadowRoot ? o(this, t) : a }, querySelectorAll: function (e) { var t = n(e), r = t !== e; e = t; var o = new w; return o.length = p.call(this, i, 0, o, e, r), o } - }, H = { matches: function (t) { return t = r(t), e.originalMatches.call(g(this), t) } }, x = { getElementsByTagName: function (e) { var t = new m, n = "*" === e ? s : a; return t.length = h.call(this, n, 0, t, e, e.toLowerCase()), t }, getElementsByClassName: function (e) { return this.querySelectorAll("." + e) }, getElementsByTagNameNS: function (e, t) { var n = new m, r = null; return r = "*" === e ? "*" === t ? s : c : "*" === t ? l : u, n.length = f.call(this, r, 0, n, e || null, t), n } }; e.GetElementsByInterface = x, e.SelectorsInterface = D, e.MatchesInterface = H -}(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { for (; e && e.nodeType !== Node.ELEMENT_NODE;)e = e.nextSibling; return e } function n(e) { for (; e && e.nodeType !== Node.ELEMENT_NODE;)e = e.previousSibling; return e } var r = e.wrappers.NodeList, o = { get firstElementChild() { return t(this.firstChild) }, get lastElementChild() { return n(this.lastChild) }, get childElementCount() { for (var e = 0, t = this.firstElementChild; t; t = t.nextElementSibling)e++; return e }, get children() { for (var e = new r, t = 0, n = this.firstElementChild; n; n = n.nextElementSibling)e[t++] = n; return e.length = t, e }, remove: function () { var e = this.parentNode; e && e.removeChild(this) } }, i = { get nextElementSibling() { return t(this.nextSibling) }, get previousElementSibling() { return n(this.previousSibling) } }, a = { getElementById: function (e) { return /[ \t\n\r\f]/.test(e) ? null : this.querySelector('[id="' + e + '"]') } }; e.ChildNodeInterface = i, e.NonElementParentNodeInterface = a, e.ParentNodeInterface = o }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { r.call(this, e) } var n = e.ChildNodeInterface, r = e.wrappers.Node, o = e.enqueueMutation, i = e.mixin, a = e.registerWrapper, s = e.unsafeUnwrap, c = window.CharacterData; t.prototype = Object.create(r.prototype), i(t.prototype, { get nodeValue() { return this.data }, set nodeValue(e) { this.data = e }, get textContent() { return this.data }, set textContent(e) { this.data = e }, get data() { return s(this).data }, set data(e) { var t = s(this).data; o(this, "characterData", { oldValue: t }), s(this).data = e } }), i(t.prototype, n), a(c, t, document.createTextNode("")), e.wrappers.CharacterData = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { return e >>> 0 } function n(e) { r.call(this, e) } var r = e.wrappers.CharacterData, o = (e.enqueueMutation, e.mixin), i = e.registerWrapper, a = window.Text; n.prototype = Object.create(r.prototype), o(n.prototype, { splitText: function (e) { e = t(e); var n = this.data; if (e > n.length) throw new Error("IndexSizeError"); var r = n.slice(0, e), o = n.slice(e); this.data = r; var i = this.ownerDocument.createTextNode(o); return this.parentNode && this.parentNode.insertBefore(i, this.nextSibling), i } }), i(a, n, document.createTextNode("")), e.wrappers.Text = n }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { return i(e).getAttribute("class") } function n(e, t) { a(e, "attributes", { name: "class", namespace: null, oldValue: t }) } function r(t) { e.invalidateRendererBasedOnAttribute(t, "class") } function o(e, o, i) { var a = e.ownerElement_; if (null == a) return o.apply(e, i); var s = t(a), c = o.apply(e, i); return t(a) !== s && (n(a, s), r(a)), c } if (!window.DOMTokenList) return void console.warn("Missing DOMTokenList prototype, please include a compatible classList polyfill such as http://goo.gl/uTcepH."); var i = e.unsafeUnwrap, a = e.enqueueMutation, s = DOMTokenList.prototype.add; DOMTokenList.prototype.add = function () { o(this, s, arguments) }; var c = DOMTokenList.prototype.remove; DOMTokenList.prototype.remove = function () { o(this, c, arguments) }; var l = DOMTokenList.prototype.toggle; DOMTokenList.prototype.toggle = function () { return o(this, l, arguments) } }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(t, n) { var r = t.parentNode; if (r && r.shadowRoot) { var o = e.getRendererForHost(r); o.dependsOnAttribute(n) && o.invalidate() } } function n(e, t, n) { u(e, "attributes", { name: t, namespace: null, oldValue: n }) } function r(e) { a.call(this, e) } var o = e.ChildNodeInterface, i = e.GetElementsByInterface, a = e.wrappers.Node, s = e.ParentNodeInterface, c = e.SelectorsInterface, l = e.MatchesInterface, u = (e.addWrapNodeListMethod, e.enqueueMutation), d = e.mixin, p = (e.oneOf, e.registerWrapper), h = e.unsafeUnwrap, f = e.wrappers, m = window.Element, w = ["matches", "mozMatchesSelector", "msMatchesSelector", "webkitMatchesSelector"].filter(function (e) { return m.prototype[e] }), v = w[0], g = m.prototype[v], b = new WeakMap; r.prototype = Object.create(a.prototype), d(r.prototype, { createShadowRoot: function () { var t = new f.ShadowRoot(this); h(this).polymerShadowRoot_ = t; var n = e.getRendererForHost(this); return n.invalidate(), t }, get shadowRoot() { return h(this).polymerShadowRoot_ || null }, setAttribute: function (e, r) { var o = h(this).getAttribute(e); h(this).setAttribute(e, r), n(this, e, o), t(this, e) }, removeAttribute: function (e) { var r = h(this).getAttribute(e); h(this).removeAttribute(e), n(this, e, r), t(this, e) }, get classList() { var e = b.get(this); if (!e) { if (e = h(this).classList, !e) return; e.ownerElement_ = this, b.set(this, e) } return e }, get className() { return h(this).className }, set className(e) { this.setAttribute("class", e) }, get id() { return h(this).id }, set id(e) { this.setAttribute("id", e) } }), w.forEach(function (e) { "matches" !== e && (r.prototype[e] = function (e) { return this.matches(e) }) }), m.prototype.webkitCreateShadowRoot && (r.prototype.webkitCreateShadowRoot = r.prototype.createShadowRoot), d(r.prototype, o), d(r.prototype, i), d(r.prototype, s), d(r.prototype, c), d(r.prototype, l), p(m, r, document.createElementNS(null, "x")), e.invalidateRendererBasedOnAttribute = t, e.matchesNames = w, e.originalMatches = g, e.wrappers.Element = r }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { switch (e) { case "&": return "&"; case "<": return "<"; case ">": return ">"; case '"': return """; case " ": return " " } } function n(e) { return e.replace(L, t) } function r(e) { return e.replace(N, t) } function o(e) { for (var t = {}, n = 0; n < e.length; n++)t[e[n]] = !0; return t } function i(e) { if (e.namespaceURI !== D) return !0; var t = e.ownerDocument.doctype; return t && t.publicId && t.systemId } function a(e, t) { switch (e.nodeType) { case Node.ELEMENT_NODE: for (var o, a = e.tagName.toLowerCase(), c = "<" + a, l = e.attributes, u = 0; o = l[u]; u++)c += " " + o.name + '="' + n(o.value) + '"'; return C[a] ? (i(e) && (c += "/"), c + ">") : c + ">" + s(e) + ""; case Node.TEXT_NODE: var d = e.data; return t && j[t.localName] ? d : r(d); case Node.COMMENT_NODE: return ""; default: throw console.error(e), new Error("not implemented") } } function s(e) { e instanceof O.HTMLTemplateElement && (e = e.content); for (var t = "", n = e.firstChild; n; n = n.nextSibling)t += a(n, e); return t } function c(e, t, n) { var r = n || "div"; e.textContent = ""; var o = T(e.ownerDocument.createElement(r)); o.innerHTML = t; for (var i; i = o.firstChild;)e.appendChild(M(i)) } function l(e) { m.call(this, e) } function u(e, t) { var n = T(e.cloneNode(!1)); n.innerHTML = t; for (var r, o = T(document.createDocumentFragment()); r = n.firstChild;)o.appendChild(r); return M(o) } function d(t) { return function () { return e.renderAllPending(), S(this)[t] } } function p(e) { w(l, e, d(e)) } function h(t) { Object.defineProperty(l.prototype, t, { get: d(t), set: function (n) { e.renderAllPending(), S(this)[t] = n }, configurable: !0, enumerable: !0 }) } function f(t) { Object.defineProperty(l.prototype, t, { value: function () { return e.renderAllPending(), S(this)[t].apply(S(this), arguments) }, configurable: !0, enumerable: !0 }) } var m = e.wrappers.Element, w = e.defineGetter, v = e.enqueueMutation, g = e.mixin, b = e.nodesWereAdded, y = e.nodesWereRemoved, E = e.registerWrapper, _ = e.snapshotNodeList, S = e.unsafeUnwrap, T = e.unwrap, M = e.wrap, O = e.wrappers, L = /[&\u00A0"]/g, N = /[&\u00A0<>]/g, C = o(["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]), j = o(["style", "script", "xmp", "iframe", "noembed", "noframes", "plaintext", "noscript"]), D = "http://www.w3.org/1999/xhtml", H = /MSIE/.test(navigator.userAgent), x = window.HTMLElement, R = window.HTMLTemplateElement; l.prototype = Object.create(m.prototype), g(l.prototype, { get innerHTML() { return s(this) }, set innerHTML(e) { if (H && j[this.localName]) return void (this.textContent = e); var t = _(this.childNodes); this.invalidateShadowRenderer() ? this instanceof O.HTMLTemplateElement ? c(this.content, e) : c(this, e, this.tagName) : !R && this instanceof O.HTMLTemplateElement ? c(this.content, e) : S(this).innerHTML = e; var n = _(this.childNodes); v(this, "childList", { addedNodes: n, removedNodes: t }), y(t), b(n, this) }, get outerHTML() { return a(this, this.parentNode) }, set outerHTML(e) { var t = this.parentNode; if (t) { t.invalidateShadowRenderer(); var n = u(t, e); t.replaceChild(n, this) } }, insertAdjacentHTML: function (e, t) { var n, r; switch (String(e).toLowerCase()) { case "beforebegin": n = this.parentNode, r = this; break; case "afterend": n = this.parentNode, r = this.nextSibling; break; case "afterbegin": n = this, r = this.firstChild; break; case "beforeend": n = this, r = null; break; default: return }var o = u(n, t); n.insertBefore(o, r) }, get hidden() { return this.hasAttribute("hidden") }, set hidden(e) { e ? this.setAttribute("hidden", "") : this.removeAttribute("hidden") } }), ["clientHeight", "clientLeft", "clientTop", "clientWidth", "offsetHeight", "offsetLeft", "offsetTop", "offsetWidth", "scrollHeight", "scrollWidth"].forEach(p), ["scrollLeft", "scrollTop"].forEach(h), ["focus", "getBoundingClientRect", "getClientRects", "scrollIntoView"].forEach(f), E(x, l, document.createElement("b")), e.wrappers.HTMLElement = l, e.getInnerHTML = s, e.setInnerHTML = c }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { n.call(this, e) } var n = e.wrappers.HTMLElement, r = e.mixin, o = e.registerWrapper, i = e.unsafeUnwrap, a = e.wrap, s = window.HTMLCanvasElement; t.prototype = Object.create(n.prototype), r(t.prototype, { getContext: function () { var e = i(this).getContext.apply(i(this), arguments); return e && a(e) } }), o(s, t, document.createElement("canvas")), e.wrappers.HTMLCanvasElement = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { n.call(this, e) } var n = e.wrappers.HTMLElement, r = e.mixin, o = e.registerWrapper, i = window.HTMLContentElement; t.prototype = Object.create(n.prototype), r(t.prototype, { constructor: t, get select() { return this.getAttribute("select") }, set select(e) { this.setAttribute("select", e) }, setAttribute: function (e, t) { n.prototype.setAttribute.call(this, e, t), "select" === String(e).toLowerCase() && this.invalidateShadowRenderer(!0) } }), i && o(i, t), e.wrappers.HTMLContentElement = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { n.call(this, e) } var n = e.wrappers.HTMLElement, r = e.mixin, o = e.registerWrapper, i = e.wrapHTMLCollection, a = e.unwrap, s = window.HTMLFormElement; t.prototype = Object.create(n.prototype), r(t.prototype, { get elements() { return i(a(this).elements) } }), o(s, t, document.createElement("form")), e.wrappers.HTMLFormElement = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { r.call(this, e) } function n(e, t) { if (!(this instanceof n)) throw new TypeError("DOM object constructor cannot be called as a function."); var o = i(document.createElement("img")); r.call(this, o), a(o, this), void 0 !== e && (o.width = e), void 0 !== t && (o.height = t) } var r = e.wrappers.HTMLElement, o = e.registerWrapper, i = e.unwrap, a = e.rewrap, s = window.HTMLImageElement; t.prototype = Object.create(r.prototype), o(s, t, document.createElement("img")), n.prototype = t.prototype, e.wrappers.HTMLImageElement = t, e.wrappers.Image = n }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { n.call(this, e) } var n = e.wrappers.HTMLElement, r = (e.mixin, e.wrappers.NodeList, e.registerWrapper), o = window.HTMLShadowElement; t.prototype = Object.create(n.prototype), t.prototype.constructor = t, o && r(o, t), e.wrappers.HTMLShadowElement = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { if (!e.defaultView) return e; var t = d.get(e); if (!t) { for (t = e.implementation.createHTMLDocument(""); t.lastChild;)t.removeChild(t.lastChild); d.set(e, t) } return t } function n(e) { for (var n, r = t(e.ownerDocument), o = c(r.createDocumentFragment()); n = e.firstChild;)o.appendChild(n); return o } function r(e) { if (o.call(this, e), !p) { var t = n(e); u.set(this, l(t)) } } var o = e.wrappers.HTMLElement, i = e.mixin, a = e.registerWrapper, s = e.unsafeUnwrap, c = e.unwrap, l = e.wrap, u = new WeakMap, d = new WeakMap, p = window.HTMLTemplateElement; r.prototype = Object.create(o.prototype), i(r.prototype, { constructor: r, get content() { return p ? l(s(this).content) : u.get(this) } }), p && a(p, r), e.wrappers.HTMLTemplateElement = r }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { n.call(this, e) } var n = e.wrappers.HTMLElement, r = e.registerWrapper, o = window.HTMLMediaElement; o && (t.prototype = Object.create(n.prototype), r(o, t, document.createElement("audio")), e.wrappers.HTMLMediaElement = t) }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { r.call(this, e) } function n(e) { if (!(this instanceof n)) throw new TypeError("DOM object constructor cannot be called as a function."); var t = i(document.createElement("audio")); r.call(this, t), a(t, this), t.setAttribute("preload", "auto"), void 0 !== e && t.setAttribute("src", e) } var r = e.wrappers.HTMLMediaElement, o = e.registerWrapper, i = e.unwrap, a = e.rewrap, s = window.HTMLAudioElement; s && (t.prototype = Object.create(r.prototype), o(s, t, document.createElement("audio")), n.prototype = t.prototype, e.wrappers.HTMLAudioElement = t, e.wrappers.Audio = n) }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { return e.replace(/\s+/g, " ").trim() } function n(e) { o.call(this, e) } function r(e, t, n, i) { if (!(this instanceof r)) throw new TypeError("DOM object constructor cannot be called as a function."); var a = c(document.createElement("option")); o.call(this, a), s(a, this), void 0 !== e && (a.text = e), void 0 !== t && a.setAttribute("value", t), n === !0 && a.setAttribute("selected", ""), a.selected = i === !0 } var o = e.wrappers.HTMLElement, i = e.mixin, a = e.registerWrapper, s = e.rewrap, c = e.unwrap, l = e.wrap, u = window.HTMLOptionElement; n.prototype = Object.create(o.prototype), i(n.prototype, { get text() { return t(this.textContent) }, set text(e) { this.textContent = t(String(e)) }, get form() { return l(c(this).form) } }), a(u, n, document.createElement("option")), r.prototype = n.prototype, e.wrappers.HTMLOptionElement = n, e.wrappers.Option = r }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { n.call(this, e) } var n = e.wrappers.HTMLElement, r = e.mixin, o = e.registerWrapper, i = e.unwrap, a = e.wrap, s = window.HTMLSelectElement; t.prototype = Object.create(n.prototype), r(t.prototype, { add: function (e, t) { "object" == typeof t && (t = i(t)), i(this).add(i(e), t) }, remove: function (e) { return void 0 === e ? void n.prototype.remove.call(this) : ("object" == typeof e && (e = i(e)), void i(this).remove(e)) }, get form() { return a(i(this).form) } }), o(s, t, document.createElement("select")), e.wrappers.HTMLSelectElement = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { n.call(this, e) } var n = e.wrappers.HTMLElement, r = e.mixin, o = e.registerWrapper, i = e.unwrap, a = e.wrap, s = e.wrapHTMLCollection, c = window.HTMLTableElement; t.prototype = Object.create(n.prototype), r(t.prototype, { get caption() { return a(i(this).caption) }, createCaption: function () { return a(i(this).createCaption()) }, get tHead() { return a(i(this).tHead) }, createTHead: function () { return a(i(this).createTHead()) }, createTFoot: function () { return a(i(this).createTFoot()) }, get tFoot() { return a(i(this).tFoot) }, get tBodies() { return s(i(this).tBodies) }, createTBody: function () { return a(i(this).createTBody()) }, get rows() { return s(i(this).rows) }, insertRow: function (e) { return a(i(this).insertRow(e)) } }), o(c, t, document.createElement("table")), e.wrappers.HTMLTableElement = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { n.call(this, e) } var n = e.wrappers.HTMLElement, r = e.mixin, o = e.registerWrapper, i = e.wrapHTMLCollection, a = e.unwrap, s = e.wrap, c = window.HTMLTableSectionElement; t.prototype = Object.create(n.prototype), r(t.prototype, { constructor: t, get rows() { return i(a(this).rows) }, insertRow: function (e) { return s(a(this).insertRow(e)) } }), o(c, t, document.createElement("thead")), e.wrappers.HTMLTableSectionElement = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { n.call(this, e) } var n = e.wrappers.HTMLElement, r = e.mixin, o = e.registerWrapper, i = e.wrapHTMLCollection, a = e.unwrap, s = e.wrap, c = window.HTMLTableRowElement; t.prototype = Object.create(n.prototype), r(t.prototype, { get cells() { return i(a(this).cells) }, insertCell: function (e) { return s(a(this).insertCell(e)) } }), o(c, t, document.createElement("tr")), e.wrappers.HTMLTableRowElement = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { switch (e.localName) { case "content": return new n(e); case "shadow": return new o(e); case "template": return new i(e) }r.call(this, e) } var n = e.wrappers.HTMLContentElement, r = e.wrappers.HTMLElement, o = e.wrappers.HTMLShadowElement, i = e.wrappers.HTMLTemplateElement, a = (e.mixin, e.registerWrapper), s = window.HTMLUnknownElement; t.prototype = Object.create(r.prototype), a(s, t), e.wrappers.HTMLUnknownElement = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { n.call(this, e) } var n = e.wrappers.Element, r = e.wrappers.HTMLElement, o = e.registerWrapper, i = (e.defineWrapGetter, e.unsafeUnwrap), a = e.wrap, s = e.mixin, c = "http://www.w3.org/2000/svg", l = window.SVGElement, u = document.createElementNS(c, "title"); if (!("classList" in u)) { var d = Object.getOwnPropertyDescriptor(n.prototype, "classList"); Object.defineProperty(r.prototype, "classList", d), delete n.prototype.classList } t.prototype = Object.create(n.prototype), s(t.prototype, { get ownerSVGElement() { return a(i(this).ownerSVGElement) } }), o(l, t, document.createElementNS(c, "title")), e.wrappers.SVGElement = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { p.call(this, e) } var n = e.mixin, r = e.registerWrapper, o = e.unwrap, i = e.wrap, a = window.SVGUseElement, s = "http://www.w3.org/2000/svg", c = i(document.createElementNS(s, "g")), l = document.createElementNS(s, "use"), u = c.constructor, d = Object.getPrototypeOf(u.prototype), p = d.constructor; t.prototype = Object.create(d), "instanceRoot" in l && n(t.prototype, { get instanceRoot() { return i(o(this).instanceRoot) }, get animatedInstanceRoot() { return i(o(this).animatedInstanceRoot) } }), r(a, t, l), e.wrappers.SVGUseElement = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { n.call(this, e) } var n = e.wrappers.EventTarget, r = e.mixin, o = e.registerWrapper, i = e.unsafeUnwrap, a = e.wrap, s = window.SVGElementInstance; s && (t.prototype = Object.create(n.prototype), r(t.prototype, { get correspondingElement() { return a(i(this).correspondingElement) }, get correspondingUseElement() { return a(i(this).correspondingUseElement) }, get parentNode() { return a(i(this).parentNode) }, get childNodes() { throw new Error("Not implemented") }, get firstChild() { return a(i(this).firstChild) }, get lastChild() { return a(i(this).lastChild) }, get previousSibling() { return a(i(this).previousSibling) }, get nextSibling() { return a(i(this).nextSibling) } }), o(s, t), e.wrappers.SVGElementInstance = t) }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { o(e, this) } var n = e.mixin, r = e.registerWrapper, o = e.setWrapper, i = e.unsafeUnwrap, a = e.unwrap, s = e.unwrapIfNeeded, c = e.wrap, l = window.CanvasRenderingContext2D; n(t.prototype, { get canvas() { return c(i(this).canvas) }, drawImage: function () { arguments[0] = s(arguments[0]), i(this).drawImage.apply(i(this), arguments) }, createPattern: function () { return arguments[0] = a(arguments[0]), i(this).createPattern.apply(i(this), arguments) } }), r(l, t, document.createElement("canvas").getContext("2d")), e.wrappers.CanvasRenderingContext2D = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { i(e, this) } var n = e.addForwardingProperties, r = e.mixin, o = e.registerWrapper, i = e.setWrapper, a = e.unsafeUnwrap, s = e.unwrapIfNeeded, c = e.wrap, l = window.WebGLRenderingContext; if (l) { r(t.prototype, { get canvas() { return c(a(this).canvas) }, texImage2D: function () { arguments[5] = s(arguments[5]), a(this).texImage2D.apply(a(this), arguments) }, texSubImage2D: function () { arguments[6] = s(arguments[6]), a(this).texSubImage2D.apply(a(this), arguments) } }); var u = Object.getPrototypeOf(l.prototype); u !== Object.prototype && n(u, t.prototype); var d = /WebKit/.test(navigator.userAgent) ? { drawingBufferHeight: null, drawingBufferWidth: null } : {}; o(l, t, d), e.wrappers.WebGLRenderingContext = t } }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { n.call(this, e) } var n = e.wrappers.Node, r = e.GetElementsByInterface, o = e.NonElementParentNodeInterface, i = e.ParentNodeInterface, a = e.SelectorsInterface, s = e.mixin, c = e.registerObject, l = e.registerWrapper, u = window.DocumentFragment; t.prototype = Object.create(n.prototype), s(t.prototype, i), s(t.prototype, a), s(t.prototype, r), s(t.prototype, o), l(u, t, document.createDocumentFragment()), e.wrappers.DocumentFragment = t; var d = c(document.createComment("")); e.wrappers.Comment = d }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { var t = d(u(e).ownerDocument.createDocumentFragment()); n.call(this, t), c(t, this); var o = e.shadowRoot; f.set(this, o), this.treeScope_ = new r(this, a(o || e)), h.set(this, e) } var n = e.wrappers.DocumentFragment, r = e.TreeScope, o = e.elementFromPoint, i = e.getInnerHTML, a = e.getTreeScope, s = e.mixin, c = e.rewrap, l = e.setInnerHTML, u = e.unsafeUnwrap, d = e.unwrap, p = e.wrap, h = new WeakMap, f = new WeakMap; t.prototype = Object.create(n.prototype), s(t.prototype, { constructor: t, get innerHTML() { return i(this) }, set innerHTML(e) { l(this, e), this.invalidateShadowRenderer() }, get olderShadowRoot() { return f.get(this) || null }, get host() { return h.get(this) || null }, invalidateShadowRenderer: function () { return h.get(this).invalidateShadowRenderer() }, elementFromPoint: function (e, t) { return o(this, this.ownerDocument, e, t) }, getSelection: function () { return document.getSelection() }, get activeElement() { var e = d(this).ownerDocument.activeElement; if (!e || !e.nodeType) return null; for (var t = p(e); !this.contains(t);) { for (; t.parentNode;)t = t.parentNode; if (!t.host) return null; t = t.host } return t } }), e.wrappers.ShadowRoot = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { var t = d(e).root; return t instanceof h ? t.host : null } function n(t, n) { if (t.shadowRoot) { n = Math.min(t.childNodes.length - 1, n); var r = t.childNodes[n]; if (r) { var o = e.getDestinationInsertionPoints(r); if (o.length > 0) { var i = o[0].parentNode; i.nodeType == Node.ELEMENT_NODE && (t = i) } } } return t } function r(e) { return e = u(e), t(e) || e } function o(e) { a(e, this) } var i = e.registerWrapper, a = e.setWrapper, s = e.unsafeUnwrap, c = e.unwrap, l = e.unwrapIfNeeded, u = e.wrap, d = e.getTreeScope, p = window.Range, h = e.wrappers.ShadowRoot; o.prototype = { get startContainer() { return r(s(this).startContainer) }, get endContainer() { return r(s(this).endContainer) }, get commonAncestorContainer() { return r(s(this).commonAncestorContainer) }, setStart: function (e, t) { e = n(e, t), s(this).setStart(l(e), t) }, setEnd: function (e, t) { e = n(e, t), s(this).setEnd(l(e), t) }, setStartBefore: function (e) { s(this).setStartBefore(l(e)) }, setStartAfter: function (e) { s(this).setStartAfter(l(e)) }, setEndBefore: function (e) { s(this).setEndBefore(l(e)) }, setEndAfter: function (e) { s(this).setEndAfter(l(e)) }, selectNode: function (e) { s(this).selectNode(l(e)) }, selectNodeContents: function (e) { s(this).selectNodeContents(l(e)) }, compareBoundaryPoints: function (e, t) { return s(this).compareBoundaryPoints(e, c(t)) }, extractContents: function () { return u(s(this).extractContents()) }, cloneContents: function () { return u(s(this).cloneContents()) }, insertNode: function (e) { s(this).insertNode(l(e)) }, surroundContents: function (e) { s(this).surroundContents(l(e)) }, cloneRange: function () { return u(s(this).cloneRange()) }, isPointInRange: function (e, t) { return s(this).isPointInRange(l(e), t) }, comparePoint: function (e, t) { return s(this).comparePoint(l(e), t) }, intersectsNode: function (e) { return s(this).intersectsNode(l(e)) }, toString: function () { return s(this).toString() } }, p.prototype.createContextualFragment && (o.prototype.createContextualFragment = function (e) { return u(s(this).createContextualFragment(e)) }), i(window.Range, o, document.createRange()), e.wrappers.Range = o }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { e.previousSibling_ = e.previousSibling, e.nextSibling_ = e.nextSibling, e.parentNode_ = e.parentNode } function n(n, o, i) { var a = x(n), s = x(o), c = i ? x(i) : null; if (r(o), t(o), i) n.firstChild === i && (n.firstChild_ = i), i.previousSibling_ = i.previousSibling; else { n.lastChild_ = n.lastChild, n.lastChild === n.firstChild && (n.firstChild_ = n.firstChild); var l = R(a.lastChild); l && (l.nextSibling_ = l.nextSibling) } e.originalInsertBefore.call(a, s, c) } function r(n) { var r = x(n), o = r.parentNode; if (o) { var i = R(o); t(n), n.previousSibling && (n.previousSibling.nextSibling_ = n), n.nextSibling && (n.nextSibling.previousSibling_ = n), i.lastChild === n && (i.lastChild_ = n), i.firstChild === n && (i.firstChild_ = n), e.originalRemoveChild.call(o, r) } } function o(e) { P.set(e, []) } function i(e) { var t = P.get(e); return t || P.set(e, t = []), t } function a(e) { for (var t = [], n = 0, r = e.firstChild; r; r = r.nextSibling)t[n++] = r; return t } function s() { for (var e = 0; e < F.length; e++) { var t = F[e], n = t.parentRenderer; n && n.dirty || t.render() } F = [] } function c() { T = null, s() } function l(e) { var t = A.get(e); return t || (t = new h(e), A.set(e, t)), t } function u(e) { var t = j(e).root; return t instanceof C ? t : null } function d(e) { return l(e.host) } function p(e) { this.skip = !1, this.node = e, this.childNodes = [] } function h(e) { this.host = e, this.dirty = !1, this.invalidateAttributes(), this.associateNode(e) } function f(e) { for (var t = [], n = e.firstChild; n; n = n.nextSibling)E(n) ? t.push.apply(t, i(n)) : t.push(n); return t } function m(e) { if (e instanceof L) return e; if (e instanceof O) return null; for (var t = e.firstChild; t; t = t.nextSibling) { var n = m(t); if (n) return n } return null } function w(e, t) { i(t).push(e); var n = k.get(e); n ? n.push(t) : k.set(e, [t]) } function v(e) { return k.get(e) } function g(e) { k.set(e, void 0) } function b(e, t) { var n = t.getAttribute("select"); if (!n) return !0; if (n = n.trim(), !n) return !0; if (!(e instanceof M)) return !1; if (!q.test(n)) return !1; try { return e.matches(n) } catch (r) { return !1 } } function y(e, t) { var n = v(t); return n && n[n.length - 1] === e } function E(e) { return e instanceof O || e instanceof L } function _(e) { return e.shadowRoot } function S(e) { for (var t = [], n = e.shadowRoot; n; n = n.olderShadowRoot)t.push(n); return t } var T, M = e.wrappers.Element, O = e.wrappers.HTMLContentElement, L = e.wrappers.HTMLShadowElement, N = e.wrappers.Node, C = e.wrappers.ShadowRoot, j = (e.assert, e.getTreeScope), D = (e.mixin, e.oneOf), H = e.unsafeUnwrap, x = e.unwrap, R = e.wrap, I = e.ArraySplice, P = new WeakMap, k = new WeakMap, A = new WeakMap, W = D(window, ["requestAnimationFrame", "mozRequestAnimationFrame", "webkitRequestAnimationFrame", "setTimeout"]), F = [], U = new I; U.equals = function (e, t) { return x(e.node) === t }, p.prototype = { append: function (e) { var t = new p(e); return this.childNodes.push(t), t }, sync: function (e) { if (!this.skip) { for (var t = this.node, o = this.childNodes, i = a(x(t)), s = e || new WeakMap, c = U.calculateSplices(o, i), l = 0, u = 0, d = 0, p = 0; p < c.length; p++) { for (var h = c[p]; d < h.index; d++)u++, o[l++].sync(s); for (var f = h.removed.length, m = 0; m < f; m++) { var w = R(i[u++]); s.get(w) || r(w) } for (var v = h.addedCount, g = i[u] && R(i[u]), m = 0; m < v; m++) { var b = o[l++], y = b.node; n(t, y, g), s.set(y, !0), b.sync(s) } d += v } for (var p = d; p < o.length; p++)o[p].sync(s) } } }, h.prototype = { render: function (e) { if (this.dirty) { this.invalidateAttributes(); var t = this.host; this.distribution(t); var n = e || new p(t); this.buildRenderTree(n, t); var r = !e; r && n.sync(), this.dirty = !1 } }, get parentRenderer() { return j(this.host).renderer }, invalidate: function () { if (!this.dirty) { this.dirty = !0; var e = this.parentRenderer; if (e && e.invalidate(), F.push(this), T) return; T = window[W](c, 0) } }, distribution: function (e) { this.resetAllSubtrees(e), this.distributionResolution(e) }, resetAll: function (e) { E(e) ? o(e) : g(e), this.resetAllSubtrees(e) }, resetAllSubtrees: function (e) { for (var t = e.firstChild; t; t = t.nextSibling)this.resetAll(t); e.shadowRoot && this.resetAll(e.shadowRoot), e.olderShadowRoot && this.resetAll(e.olderShadowRoot) }, distributionResolution: function (e) { if (_(e)) { for (var t = e, n = f(t), r = S(t), o = 0; o < r.length; o++)this.poolDistribution(r[o], n); for (var o = r.length - 1; o >= 0; o--) { var i = r[o], a = m(i); if (a) { var s = i.olderShadowRoot; s && (n = f(s)); for (var c = 0; c < n.length; c++)w(n[c], a) } this.distributionResolution(i) } } for (var l = e.firstChild; l; l = l.nextSibling)this.distributionResolution(l) }, poolDistribution: function (e, t) { if (!(e instanceof L)) if (e instanceof O) { var n = e; this.updateDependentAttributes(n.getAttribute("select")); for (var r = !1, o = 0; o < t.length; o++) { var e = t[o]; e && b(e, n) && (w(e, n), t[o] = void 0, r = !0) } if (!r) for (var i = n.firstChild; i; i = i.nextSibling)w(i, n) } else for (var i = e.firstChild; i; i = i.nextSibling)this.poolDistribution(i, t) }, buildRenderTree: function (e, t) { for (var n = this.compose(t), r = 0; r < n.length; r++) { var o = n[r], i = e.append(o); this.buildRenderTree(i, o) } if (_(t)) { var a = l(t); a.dirty = !1 } }, compose: function (e) { for (var t = [], n = e.shadowRoot || e, r = n.firstChild; r; r = r.nextSibling)if (E(r)) { this.associateNode(n); for (var o = i(r), a = 0; a < o.length; a++) { var s = o[a]; y(r, s) && t.push(s) } } else t.push(r); return t }, invalidateAttributes: function () { this.attributes = Object.create(null) }, updateDependentAttributes: function (e) { if (e) { var t = this.attributes; /\.\w+/.test(e) && (t["class"] = !0), /#\w+/.test(e) && (t.id = !0), e.replace(/\[\s*([^\s=\|~\]]+)/g, function (e, n) { t[n] = !0 }) } }, dependsOnAttribute: function (e) { return this.attributes[e] }, associateNode: function (e) { H(e).polymerShadowRenderer_ = this } }; var q = /^(:not\()?[*.#[a-zA-Z_|]/; N.prototype.invalidateShadowRenderer = function (e) { var t = H(this).polymerShadowRenderer_; return !!t && (t.invalidate(), !0) }, O.prototype.getDistributedNodes = L.prototype.getDistributedNodes = function () { return s(), i(this) }, M.prototype.getDestinationInsertionPoints = function () { return s(), v(this) || [] }, O.prototype.nodeIsInserted_ = L.prototype.nodeIsInserted_ = function () { this.invalidateShadowRenderer(); var e, t = u(this); t && (e = d(t)), H(this).polymerShadowRenderer_ = e, e && e.invalidate() }, e.getRendererForHost = l, e.getShadowTrees = S, e.renderAllPending = s, e.getDestinationInsertionPoints = v, e.visual = { insertBefore: n, remove: r } }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(t) { if (window[t]) { r(!e.wrappers[t]); var c = function (e) { n.call(this, e) }; c.prototype = Object.create(n.prototype), o(c.prototype, { get form() { return s(a(this).form) } }), i(window[t], c, document.createElement(t.slice(4, -7))), e.wrappers[t] = c } } var n = e.wrappers.HTMLElement, r = e.assert, o = e.mixin, i = e.registerWrapper, a = e.unwrap, s = e.wrap, c = ["HTMLButtonElement", "HTMLFieldSetElement", "HTMLInputElement", "HTMLKeygenElement", "HTMLLabelElement", "HTMLLegendElement", "HTMLObjectElement", "HTMLOutputElement", "HTMLTextAreaElement"]; c.forEach(t) }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { r(e, this) } var n = e.registerWrapper, r = e.setWrapper, o = e.unsafeUnwrap, i = e.unwrap, a = e.unwrapIfNeeded, s = e.wrap, c = window.Selection; t.prototype = { get anchorNode() { return s(o(this).anchorNode) }, get focusNode() { return s(o(this).focusNode) }, addRange: function (e) { o(this).addRange(a(e)) }, collapse: function (e, t) { o(this).collapse(a(e), t) }, containsNode: function (e, t) { return o(this).containsNode(a(e), t) }, getRangeAt: function (e) { return s(o(this).getRangeAt(e)) }, removeRange: function (e) { o(this).removeRange(i(e)) }, selectAllChildren: function (e) { o(this).selectAllChildren(e instanceof ShadowRoot ? o(e.host) : a(e)) }, toString: function () { return o(this).toString() } }, c.prototype.extend && (t.prototype.extend = function (e, t) { o(this).extend(a(e), t) }), n(window.Selection, t, window.getSelection()), e.wrappers.Selection = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { r(e, this) } var n = e.registerWrapper, r = e.setWrapper, o = e.unsafeUnwrap, i = e.unwrapIfNeeded, a = e.wrap, s = window.TreeWalker; t.prototype = { get root() { return a(o(this).root) }, get currentNode() { return a(o(this).currentNode) }, set currentNode(e) { o(this).currentNode = i(e) }, get filter() { return o(this).filter }, parentNode: function () { return a(o(this).parentNode()) }, firstChild: function () { return a(o(this).firstChild()) }, lastChild: function () { return a(o(this).lastChild()) }, previousSibling: function () { return a(o(this).previousSibling()) }, previousNode: function () { return a(o(this).previousNode()) }, nextNode: function () { return a(o(this).nextNode()) } }, n(s, t), e.wrappers.TreeWalker = t }(window.ShadowDOMPolyfill), function (e) { - "use strict"; function t(e) { u.call(this, e), this.treeScope_ = new w(this, null) } function n(e) { var n = document[e]; t.prototype[e] = function () { return j(n.apply(N(this), arguments)) } } function r(e, t) { x.call(N(t), C(e)), o(e, t) } function o(e, t) { e.shadowRoot && t.adoptNode(e.shadowRoot), e instanceof m && i(e, t); for (var n = e.firstChild; n; n = n.nextSibling)o(n, t) } function i(e, t) { var n = e.olderShadowRoot; n && t.adoptNode(n) } function a(e) { L(e, this) } function s(e, t) { - var n = document.implementation[t]; e.prototype[t] = function () { - return j(n.apply(N(this), arguments)) - } - } function c(e, t) { var n = document.implementation[t]; e.prototype[t] = function () { return n.apply(N(this), arguments) } } var l = e.GetElementsByInterface, u = e.wrappers.Node, d = e.ParentNodeInterface, p = e.NonElementParentNodeInterface, h = e.wrappers.Selection, f = e.SelectorsInterface, m = e.wrappers.ShadowRoot, w = e.TreeScope, v = e.cloneNode, g = e.defineGetter, b = e.defineWrapGetter, y = e.elementFromPoint, E = e.forwardMethodsToWrapper, _ = e.matchesNames, S = e.mixin, T = e.registerWrapper, M = e.renderAllPending, O = e.rewrap, L = e.setWrapper, N = e.unsafeUnwrap, C = e.unwrap, j = e.wrap, D = e.wrapEventTargetMethods, H = (e.wrapNodeList, new WeakMap); t.prototype = Object.create(u.prototype), b(t, "documentElement"), b(t, "body"), b(t, "head"), g(t, "activeElement", function () { var e = C(this).activeElement; if (!e || !e.nodeType) return null; for (var t = j(e); !this.contains(t);) { for (; t.parentNode;)t = t.parentNode; if (!t.host) return null; t = t.host } return t }), ["createComment", "createDocumentFragment", "createElement", "createElementNS", "createEvent", "createEventNS", "createRange", "createTextNode"].forEach(n); var x = document.adoptNode, R = document.getSelection; S(t.prototype, { adoptNode: function (e) { return e.parentNode && e.parentNode.removeChild(e), r(e, this), e }, elementFromPoint: function (e, t) { return y(this, this, e, t) }, importNode: function (e, t) { return v(e, t, N(this)) }, getSelection: function () { return M(), new h(R.call(C(this))) }, getElementsByName: function (e) { return f.querySelectorAll.call(this, "[name=" + JSON.stringify(String(e)) + "]") } }); var I = document.createTreeWalker, P = e.wrappers.TreeWalker; if (t.prototype.createTreeWalker = function (e, t, n, r) { var o = null; return n && (n.acceptNode && "function" == typeof n.acceptNode ? o = { acceptNode: function (e) { return n.acceptNode(j(e)) } } : "function" == typeof n && (o = function (e) { return n(j(e)) })), new P(I.call(C(this), C(e), t, o, r)) }, document.registerElement) { var k = document.registerElement; t.prototype.registerElement = function (t, n) { function r(e) { return e ? void L(e, this) : i ? document.createElement(i, t) : document.createElement(t) } var o, i; if (void 0 !== n && (o = n.prototype, i = n["extends"]), o || (o = Object.create(HTMLElement.prototype)), e.nativePrototypeTable.get(o)) throw new Error("NotSupportedError"); for (var a, s = Object.getPrototypeOf(o), c = []; s && !(a = e.nativePrototypeTable.get(s));)c.push(s), s = Object.getPrototypeOf(s); if (!a) throw new Error("NotSupportedError"); for (var l = Object.create(a), u = c.length - 1; u >= 0; u--)l = Object.create(l);["createdCallback", "attachedCallback", "detachedCallback", "attributeChangedCallback"].forEach(function (e) { var t = o[e]; t && (l[e] = function () { j(this) instanceof r || O(this), t.apply(j(this), arguments) }) }); var d = { prototype: l }; i && (d["extends"] = i), r.prototype = o, r.prototype.constructor = r, e.constructorTable.set(l, r), e.nativePrototypeTable.set(o, l); k.call(C(this), t, d); return r }, E([window.HTMLDocument || window.Document], ["registerElement"]) } E([window.HTMLBodyElement, window.HTMLDocument || window.Document, window.HTMLHeadElement, window.HTMLHtmlElement], ["appendChild", "compareDocumentPosition", "contains", "getElementsByClassName", "getElementsByTagName", "getElementsByTagNameNS", "insertBefore", "querySelector", "querySelectorAll", "removeChild", "replaceChild"]), E([window.HTMLBodyElement, window.HTMLHeadElement, window.HTMLHtmlElement], _), E([window.HTMLDocument || window.Document], ["adoptNode", "importNode", "contains", "createComment", "createDocumentFragment", "createElement", "createElementNS", "createEvent", "createEventNS", "createRange", "createTextNode", "createTreeWalker", "elementFromPoint", "getElementById", "getElementsByName", "getSelection"]), S(t.prototype, l), S(t.prototype, d), S(t.prototype, f), S(t.prototype, p), S(t.prototype, { get implementation() { var e = H.get(this); return e ? e : (e = new a(C(this).implementation), H.set(this, e), e) }, get defaultView() { return j(C(this).defaultView) } }), T(window.Document, t, document.implementation.createHTMLDocument("")), window.HTMLDocument && T(window.HTMLDocument, t), D([window.HTMLBodyElement, window.HTMLDocument || window.Document, window.HTMLHeadElement]); var A = document.implementation.createDocument; a.prototype.createDocument = function () { return arguments[2] = C(arguments[2]), j(A.apply(N(this), arguments)) }, s(a, "createDocumentType"), s(a, "createHTMLDocument"), c(a, "hasFeature"), T(window.DOMImplementation, a), E([window.DOMImplementation], ["createDocument", "createDocumentType", "createHTMLDocument", "hasFeature"]), e.adoptNodeNoRemove = r, e.wrappers.DOMImplementation = a, e.wrappers.Document = t -}(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { n.call(this, e) } var n = e.wrappers.EventTarget, r = e.wrappers.Selection, o = e.mixin, i = e.registerWrapper, a = e.renderAllPending, s = e.unwrap, c = e.unwrapIfNeeded, l = e.wrap, u = window.Window, d = window.getComputedStyle, p = window.getDefaultComputedStyle, h = window.getSelection; t.prototype = Object.create(n.prototype), u.prototype.getComputedStyle = function (e, t) { return l(this || window).getComputedStyle(c(e), t) }, p && (u.prototype.getDefaultComputedStyle = function (e, t) { return l(this || window).getDefaultComputedStyle(c(e), t) }), u.prototype.getSelection = function () { return l(this || window).getSelection() }, delete window.getComputedStyle, delete window.getDefaultComputedStyle, delete window.getSelection, ["addEventListener", "removeEventListener", "dispatchEvent"].forEach(function (e) { u.prototype[e] = function () { var t = l(this || window); return t[e].apply(t, arguments) }, delete window[e] }), o(t.prototype, { getComputedStyle: function (e, t) { return a(), d.call(s(this), c(e), t) }, getSelection: function () { return a(), new r(h.call(s(this))) }, get document() { return l(s(this).document) } }), p && (t.prototype.getDefaultComputedStyle = function (e, t) { return a(), p.call(s(this), c(e), t) }), i(u, t, window), e.wrappers.Window = t }(window.ShadowDOMPolyfill), function (e) { "use strict"; var t = e.unwrap, n = window.DataTransfer || window.Clipboard, r = n.prototype.setDragImage; r && (n.prototype.setDragImage = function (e, n, o) { r.call(this, t(e), n, o) }) }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { var t; t = e instanceof i ? e : new i(e && o(e)), r(t, this) } var n = e.registerWrapper, r = e.setWrapper, o = e.unwrap, i = window.FormData; i && (n(i, t, new i), e.wrappers.FormData = t) }(window.ShadowDOMPolyfill), function (e) { "use strict"; var t = e.unwrapIfNeeded, n = XMLHttpRequest.prototype.send; XMLHttpRequest.prototype.send = function (e) { return n.call(this, t(e)) } }(window.ShadowDOMPolyfill), function (e) { "use strict"; function t(e) { var t = n[e], r = window[t]; if (r) { var o = document.createElement(e), i = o.constructor; window[t] = i } } var n = (e.isWrapperFor, { a: "HTMLAnchorElement", area: "HTMLAreaElement", audio: "HTMLAudioElement", base: "HTMLBaseElement", body: "HTMLBodyElement", br: "HTMLBRElement", button: "HTMLButtonElement", canvas: "HTMLCanvasElement", caption: "HTMLTableCaptionElement", col: "HTMLTableColElement", content: "HTMLContentElement", data: "HTMLDataElement", datalist: "HTMLDataListElement", del: "HTMLModElement", dir: "HTMLDirectoryElement", div: "HTMLDivElement", dl: "HTMLDListElement", embed: "HTMLEmbedElement", fieldset: "HTMLFieldSetElement", font: "HTMLFontElement", form: "HTMLFormElement", frame: "HTMLFrameElement", frameset: "HTMLFrameSetElement", h1: "HTMLHeadingElement", head: "HTMLHeadElement", hr: "HTMLHRElement", html: "HTMLHtmlElement", iframe: "HTMLIFrameElement", img: "HTMLImageElement", input: "HTMLInputElement", keygen: "HTMLKeygenElement", label: "HTMLLabelElement", legend: "HTMLLegendElement", li: "HTMLLIElement", link: "HTMLLinkElement", map: "HTMLMapElement", marquee: "HTMLMarqueeElement", menu: "HTMLMenuElement", menuitem: "HTMLMenuItemElement", meta: "HTMLMetaElement", meter: "HTMLMeterElement", object: "HTMLObjectElement", ol: "HTMLOListElement", optgroup: "HTMLOptGroupElement", option: "HTMLOptionElement", output: "HTMLOutputElement", p: "HTMLParagraphElement", param: "HTMLParamElement", pre: "HTMLPreElement", progress: "HTMLProgressElement", q: "HTMLQuoteElement", script: "HTMLScriptElement", select: "HTMLSelectElement", shadow: "HTMLShadowElement", source: "HTMLSourceElement", span: "HTMLSpanElement", style: "HTMLStyleElement", table: "HTMLTableElement", tbody: "HTMLTableSectionElement", template: "HTMLTemplateElement", textarea: "HTMLTextAreaElement", thead: "HTMLTableSectionElement", time: "HTMLTimeElement", title: "HTMLTitleElement", tr: "HTMLTableRowElement", track: "HTMLTrackElement", ul: "HTMLUListElement", video: "HTMLVideoElement" }); Object.keys(n).forEach(t), Object.getOwnPropertyNames(e.wrappers).forEach(function (t) { window[t] = e.wrappers[t] }) }(window.ShadowDOMPolyfill), function (e) { function t(e, t) { var n = ""; return Array.prototype.forEach.call(e, function (e) { n += e.textContent + "\n\n" }), t || (n = n.replace(d, "")), n } function n(e) { var t = document.createElement("style"); return t.textContent = e, t } function r(e) { var t = n(e); document.head.appendChild(t); var r = []; if (t.sheet) try { r = t.sheet.cssRules } catch (o) { } else console.warn("sheet not found", t); return t.parentNode.removeChild(t), r } function o() { C.initialized = !0, document.body.appendChild(C); var e = C.contentDocument, t = e.createElement("base"); t.href = document.baseURI, e.head.appendChild(t) } function i(e) { C.initialized || o(), document.body.appendChild(C), e(C.contentDocument), document.body.removeChild(C) } function a(e, t) { if (t) { var o; if (e.match("@import") && D) { var a = n(e); i(function (e) { e.head.appendChild(a.impl), o = Array.prototype.slice.call(a.sheet.cssRules, 0), t(o) }) } else o = r(e), t(o) } } function s(e) { e && l().appendChild(document.createTextNode(e)) } function c(e, t) { var r = n(e); r.setAttribute(t, ""), r.setAttribute(x, ""), document.head.appendChild(r) } function l() { return j || (j = document.createElement("style"), j.setAttribute(x, ""), j[x] = !0), j } var u = { strictStyling: !1, registry: {}, shimStyling: function (e, n, r) { var o = this.prepareRoot(e, n, r), i = this.isTypeExtension(r), a = this.makeScopeSelector(n, i), s = t(o, !0); s = this.scopeCssText(s, a), e && (e.shimmedStyle = s), this.addCssToDocument(s, n) }, shimStyle: function (e, t) { return this.shimCssText(e.textContent, t) }, shimCssText: function (e, t) { return e = this.insertDirectives(e), this.scopeCssText(e, t) }, makeScopeSelector: function (e, t) { return e ? t ? "[is=" + e + "]" : e : "" }, isTypeExtension: function (e) { return e && e.indexOf("-") < 0 }, prepareRoot: function (e, t, n) { var r = this.registerRoot(e, t, n); return this.replaceTextInStyles(r.rootStyles, this.insertDirectives), this.removeStyles(e, r.rootStyles), this.strictStyling && this.applyScopeToContent(e, t), r.scopeStyles }, removeStyles: function (e, t) { for (var n, r = 0, o = t.length; r < o && (n = t[r]); r++)n.parentNode.removeChild(n) }, registerRoot: function (e, t, n) { var r = this.registry[t] = { root: e, name: t, extendsName: n }, o = this.findStyles(e); r.rootStyles = o, r.scopeStyles = r.rootStyles; var i = this.registry[r.extendsName]; return i && (r.scopeStyles = i.scopeStyles.concat(r.scopeStyles)), r }, findStyles: function (e) { if (!e) return []; var t = e.querySelectorAll("style"); return Array.prototype.filter.call(t, function (e) { return !e.hasAttribute(R) }) }, applyScopeToContent: function (e, t) { e && (Array.prototype.forEach.call(e.querySelectorAll("*"), function (e) { e.setAttribute(t, "") }), Array.prototype.forEach.call(e.querySelectorAll("template"), function (e) { this.applyScopeToContent(e.content, t) }, this)) }, insertDirectives: function (e) { return e = this.insertPolyfillDirectivesInCssText(e), this.insertPolyfillRulesInCssText(e) }, insertPolyfillDirectivesInCssText: function (e) { return e = e.replace(p, function (e, t) { return t.slice(0, -2) + "{" }), e.replace(h, function (e, t) { return t + " {" }) }, insertPolyfillRulesInCssText: function (e) { return e = e.replace(f, function (e, t) { return t.slice(0, -1) }), e.replace(m, function (e, t, n, r) { var o = e.replace(t, "").replace(n, ""); return r + o }) }, scopeCssText: function (e, t) { var n = this.extractUnscopedRulesFromCssText(e); if (e = this.insertPolyfillHostInCssText(e), e = this.convertColonHost(e), e = this.convertColonHostContext(e), e = this.convertShadowDOMSelectors(e), t) { var e, r = this; a(e, function (n) { e = r.scopeRules(n, t) }) } return e = e + "\n" + n, e.trim() }, extractUnscopedRulesFromCssText: function (e) { for (var t, n = ""; t = w.exec(e);)n += t[1].slice(0, -1) + "\n\n"; for (; t = v.exec(e);)n += t[0].replace(t[2], "").replace(t[1], t[3]) + "\n\n"; return n }, convertColonHost: function (e) { return this.convertColonRule(e, E, this.colonHostPartReplacer) }, convertColonHostContext: function (e) { return this.convertColonRule(e, _, this.colonHostContextPartReplacer) }, convertColonRule: function (e, t, n) { return e.replace(t, function (e, t, r, o) { if (t = O, r) { for (var i, a = r.split(","), s = [], c = 0, l = a.length; c < l && (i = a[c]); c++)i = i.trim(), s.push(n(t, i, o)); return s.join(",") } return t + o }) }, colonHostContextPartReplacer: function (e, t, n) { return t.match(g) ? this.colonHostPartReplacer(e, t, n) : e + t + n + ", " + t + " " + e + n }, colonHostPartReplacer: function (e, t, n) { return e + t.replace(g, "") + n }, convertShadowDOMSelectors: function (e) { for (var t = 0; t < N.length; t++)e = e.replace(N[t], " "); return e }, scopeRules: function (e, t) { var n = ""; return e && Array.prototype.forEach.call(e, function (e) { if (e.selectorText && e.style && void 0 !== e.style.cssText) n += this.scopeSelector(e.selectorText, t, this.strictStyling) + " {\n\t", n += this.propertiesFromRule(e) + "\n}\n\n"; else if (e.type === CSSRule.MEDIA_RULE) n += "@media " + e.media.mediaText + " {\n", n += this.scopeRules(e.cssRules, t), n += "\n}\n\n"; else try { e.cssText && (n += e.cssText + "\n\n") } catch (r) { e.type === CSSRule.KEYFRAMES_RULE && e.cssRules && (n += this.ieSafeCssTextFromKeyFrameRule(e)) } }, this), n }, ieSafeCssTextFromKeyFrameRule: function (e) { var t = "@keyframes " + e.name + " {"; return Array.prototype.forEach.call(e.cssRules, function (e) { t += " " + e.keyText + " {" + e.style.cssText + "}" }), t += " }" }, scopeSelector: function (e, t, n) { var r = [], o = e.split(","); return o.forEach(function (e) { e = e.trim(), this.selectorNeedsScoping(e, t) && (e = n && !e.match(O) ? this.applyStrictSelectorScope(e, t) : this.applySelectorScope(e, t)), r.push(e) }, this), r.join(", ") }, selectorNeedsScoping: function (e, t) { if (Array.isArray(t)) return !0; var n = this.makeScopeMatcher(t); return !e.match(n) }, makeScopeMatcher: function (e) { return e = e.replace(/\[/g, "\\[").replace(/\]/g, "\\]"), new RegExp("^(" + e + ")" + S, "m") }, applySelectorScope: function (e, t) { return Array.isArray(t) ? this.applySelectorScopeList(e, t) : this.applySimpleSelectorScope(e, t) }, applySelectorScopeList: function (e, t) { for (var n, r = [], o = 0; n = t[o]; o++)r.push(this.applySimpleSelectorScope(e, n)); return r.join(", ") }, applySimpleSelectorScope: function (e, t) { return e.match(L) ? (e = e.replace(O, t), e.replace(L, t + " ")) : t + " " + e }, applyStrictSelectorScope: function (e, t) { t = t.replace(/\[is=([^\]]*)\]/g, "$1"); var n = [" ", ">", "+", "~"], r = e, o = "[" + t + "]"; return n.forEach(function (e) { var t = r.split(e); r = t.map(function (e) { var t = e.trim().replace(L, ""); return t && n.indexOf(t) < 0 && t.indexOf(o) < 0 && (e = t.replace(/([^:]*)(:*)(.*)/, "$1" + o + "$2$3")), e }).join(e) }), r }, insertPolyfillHostInCssText: function (e) { return e.replace(M, b).replace(T, g) }, propertiesFromRule: function (e) { var t = e.style.cssText; e.style.content && !e.style.content.match(/['"]+|attr/) && (t = t.replace(/content:[^;]*;/g, "content: '" + e.style.content + "';")); var n = e.style; for (var r in n) "initial" === n[r] && (t += r + ": initial; "); return t }, replaceTextInStyles: function (e, t) { e && t && (e instanceof Array || (e = [e]), Array.prototype.forEach.call(e, function (e) { e.textContent = t.call(this, e.textContent) }, this)) }, addCssToDocument: function (e, t) { e.match("@import") ? c(e, t) : s(e) } }, d = /\/\*[^*]*\*+([^\/*][^*]*\*+)*\//gim, p = /\/\*\s*@polyfill ([^*]*\*+([^\/*][^*]*\*+)*\/)([^{]*?){/gim, h = /polyfill-next-selector[^}]*content\:[\s]*?['"](.*?)['"][;\s]*}([^{]*?){/gim, f = /\/\*\s@polyfill-rule([^*]*\*+([^\/*][^*]*\*+)*)\//gim, m = /(polyfill-rule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim, w = /\/\*\s@polyfill-unscoped-rule([^*]*\*+([^\/*][^*]*\*+)*)\//gim, v = /(polyfill-unscoped-rule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim, g = "-shadowcsshost", b = "-shadowcsscontext", y = ")(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))?([^,{]*)", E = new RegExp("(" + g + y, "gim"), _ = new RegExp("(" + b + y, "gim"), S = "([>\\s~+[.,{:][\\s\\S]*)?$", T = /\:host/gim, M = /\:host-context/gim, O = g + "-no-combinator", L = new RegExp(g, "gim"), N = (new RegExp(b, "gim"), [/>>>/g, /::shadow/g, /::content/g, /\/deep\//g, /\/shadow\//g, /\/shadow-deep\//g, /\^\^/g, /\^(?!=)/g]), C = document.createElement("iframe"); C.style.display = "none"; var j, D = navigator.userAgent.match("Chrome"), H = "shim-shadowdom", x = "shim-shadowdom-css", R = "no-shim"; if (window.ShadowDOMPolyfill) { s("style { display: none !important; }\n"); var I = ShadowDOMPolyfill.wrap(document), P = I.querySelector("head"); P.insertBefore(l(), P.childNodes[0]), document.addEventListener("DOMContentLoaded", function () { e.urlResolver; if (window.HTMLImports && !HTMLImports.useNative) { var t = "link[rel=stylesheet][" + H + "]", n = "style[" + H + "]"; HTMLImports.importer.documentPreloadSelectors += "," + t, HTMLImports.importer.importsPreloadSelectors += "," + t, HTMLImports.parser.documentSelectors = [HTMLImports.parser.documentSelectors, t, n].join(","); var r = HTMLImports.parser.parseGeneric; HTMLImports.parser.parseGeneric = function (e) { if (!e[x]) { var t = e.__importElement || e; if (!t.hasAttribute(H)) return void r.call(this, e); e.__resource && (t = e.ownerDocument.createElement("style"), t.textContent = e.__resource), HTMLImports.path.resolveUrlsInStyle(t, e.href), t.textContent = u.shimStyle(t), t.removeAttribute(H, ""), t.setAttribute(x, ""), t[x] = !0, t.parentNode !== P && (e.parentNode === P ? P.replaceChild(t, e) : this.addElementToDocument(t)), t.__importParsed = !0, this.markParsingComplete(e), this.parseNext() } }; var o = HTMLImports.parser.hasResource; HTMLImports.parser.hasResource = function (e) { return "link" === e.localName && "stylesheet" === e.rel && e.hasAttribute(H) ? e.__resource : o.call(this, e) } } }) } e.ShadowCSS = u }(window.WebComponents)), function (e) { window.ShadowDOMPolyfill ? (window.wrap = ShadowDOMPolyfill.wrapIfNeeded, window.unwrap = ShadowDOMPolyfill.unwrapIfNeeded) : window.wrap = window.unwrap = function (e) { return e } }(window.WebComponents), function (e) { "use strict"; function t(e) { return void 0 !== p[e] } function n() { s.call(this), this._isInvalid = !0 } function r(e) { return "" == e && n.call(this), e.toLowerCase() } function o(e) { var t = e.charCodeAt(0); return t > 32 && t < 127 && [34, 35, 60, 62, 63, 96].indexOf(t) == -1 ? e : encodeURIComponent(e) } function i(e) { var t = e.charCodeAt(0); return t > 32 && t < 127 && [34, 35, 60, 62, 96].indexOf(t) == -1 ? e : encodeURIComponent(e) } function a(e, a, s) { function c(e) { b.push(e) } var l = a || "scheme start", u = 0, d = "", v = !1, g = !1, b = []; e: for (; (e[u - 1] != f || 0 == u) && !this._isInvalid;) { var y = e[u]; switch (l) { case "scheme start": if (!y || !m.test(y)) { if (a) { c("Invalid scheme."); break e } d = "", l = "no scheme"; continue } d += y.toLowerCase(), l = "scheme"; break; case "scheme": if (y && w.test(y)) d += y.toLowerCase(); else { if (":" != y) { if (a) { if (f == y) break e; c("Code point not allowed in scheme: " + y); break e } d = "", u = 0, l = "no scheme"; continue } if (this._scheme = d, d = "", a) break e; t(this._scheme) && (this._isRelative = !0), l = "file" == this._scheme ? "relative" : this._isRelative && s && s._scheme == this._scheme ? "relative or authority" : this._isRelative ? "authority first slash" : "scheme data" } break; case "scheme data": "?" == y ? (this._query = "?", l = "query") : "#" == y ? (this._fragment = "#", l = "fragment") : f != y && "\t" != y && "\n" != y && "\r" != y && (this._schemeData += o(y)); break; case "no scheme": if (s && t(s._scheme)) { l = "relative"; continue } c("Missing scheme."), n.call(this); break; case "relative or authority": if ("/" != y || "/" != e[u + 1]) { c("Expected /, got: " + y), l = "relative"; continue } l = "authority ignore slashes"; break; case "relative": if (this._isRelative = !0, "file" != this._scheme && (this._scheme = s._scheme), f == y) { this._host = s._host, this._port = s._port, this._path = s._path.slice(), this._query = s._query, this._username = s._username, this._password = s._password; break e } if ("/" == y || "\\" == y) "\\" == y && c("\\ is an invalid code point."), l = "relative slash"; else if ("?" == y) this._host = s._host, this._port = s._port, this._path = s._path.slice(), this._query = "?", this._username = s._username, this._password = s._password, l = "query"; else { if ("#" != y) { var E = e[u + 1], _ = e[u + 2]; ("file" != this._scheme || !m.test(y) || ":" != E && "|" != E || f != _ && "/" != _ && "\\" != _ && "?" != _ && "#" != _) && (this._host = s._host, this._port = s._port, this._username = s._username, this._password = s._password, this._path = s._path.slice(), this._path.pop()), l = "relative path"; continue } this._host = s._host, this._port = s._port, this._path = s._path.slice(), this._query = s._query, this._fragment = "#", this._username = s._username, this._password = s._password, l = "fragment" } break; case "relative slash": if ("/" != y && "\\" != y) { "file" != this._scheme && (this._host = s._host, this._port = s._port, this._username = s._username, this._password = s._password), l = "relative path"; continue } "\\" == y && c("\\ is an invalid code point."), l = "file" == this._scheme ? "file host" : "authority ignore slashes"; break; case "authority first slash": if ("/" != y) { c("Expected '/', got: " + y), l = "authority ignore slashes"; continue } l = "authority second slash"; break; case "authority second slash": if (l = "authority ignore slashes", "/" != y) { c("Expected '/', got: " + y); continue } break; case "authority ignore slashes": if ("/" != y && "\\" != y) { l = "authority"; continue } c("Expected authority, got: " + y); break; case "authority": if ("@" == y) { v && (c("@ already seen."), d += "%40"), v = !0; for (var S = 0; S < d.length; S++) { var T = d[S]; if ("\t" != T && "\n" != T && "\r" != T) if (":" != T || null !== this._password) { var M = o(T); null !== this._password ? this._password += M : this._username += M } else this._password = ""; else c("Invalid whitespace in authority.") } d = "" } else { if (f == y || "/" == y || "\\" == y || "?" == y || "#" == y) { u -= d.length, d = "", l = "host"; continue } d += y } break; case "file host": if (f == y || "/" == y || "\\" == y || "?" == y || "#" == y) { 2 != d.length || !m.test(d[0]) || ":" != d[1] && "|" != d[1] ? 0 == d.length ? l = "relative path start" : (this._host = r.call(this, d), d = "", l = "relative path start") : l = "relative path"; continue } "\t" == y || "\n" == y || "\r" == y ? c("Invalid whitespace in file host.") : d += y; break; case "host": case "hostname": if (":" != y || g) { if (f == y || "/" == y || "\\" == y || "?" == y || "#" == y) { if (this._host = r.call(this, d), d = "", l = "relative path start", a) break e; continue } "\t" != y && "\n" != y && "\r" != y ? ("[" == y ? g = !0 : "]" == y && (g = !1), d += y) : c("Invalid code point in host/hostname: " + y) } else if (this._host = r.call(this, d), d = "", l = "port", "hostname" == a) break e; break; case "port": if (/[0-9]/.test(y)) d += y; else { if (f == y || "/" == y || "\\" == y || "?" == y || "#" == y || a) { if ("" != d) { var O = parseInt(d, 10); O != p[this._scheme] && (this._port = O + ""), d = "" } if (a) break e; l = "relative path start"; continue } "\t" == y || "\n" == y || "\r" == y ? c("Invalid code point in port: " + y) : n.call(this) } break; case "relative path start": if ("\\" == y && c("'\\' not allowed in path."), l = "relative path", "/" != y && "\\" != y) continue; break; case "relative path": if (f != y && "/" != y && "\\" != y && (a || "?" != y && "#" != y)) "\t" != y && "\n" != y && "\r" != y && (d += o(y)); else { "\\" == y && c("\\ not allowed in relative path."); var L; (L = h[d.toLowerCase()]) && (d = L), ".." == d ? (this._path.pop(), "/" != y && "\\" != y && this._path.push("")) : "." == d && "/" != y && "\\" != y ? this._path.push("") : "." != d && ("file" == this._scheme && 0 == this._path.length && 2 == d.length && m.test(d[0]) && "|" == d[1] && (d = d[0] + ":"), this._path.push(d)), d = "", "?" == y ? (this._query = "?", l = "query") : "#" == y && (this._fragment = "#", l = "fragment") } break; case "query": a || "#" != y ? f != y && "\t" != y && "\n" != y && "\r" != y && (this._query += i(y)) : (this._fragment = "#", l = "fragment"); break; case "fragment": f != y && "\t" != y && "\n" != y && "\r" != y && (this._fragment += y) }u++ } } function s() { this._scheme = "", this._schemeData = "", this._username = "", this._password = null, this._host = "", this._port = "", this._path = [], this._query = "", this._fragment = "", this._isInvalid = !1, this._isRelative = !1 } function c(e, t) { void 0 === t || t instanceof c || (t = new c(String(t))), this._url = e, s.call(this); var n = e.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, ""); a.call(this, n, null, t) } var l = !1; if (!e.forceJURL) try { var u = new URL("b", "http://a"); u.pathname = "c%20d", l = "http://a/c%20d" === u.href } catch (d) { } if (!l) { var p = Object.create(null); p.ftp = 21, p.file = 0, p.gopher = 70, p.http = 80, p.https = 443, p.ws = 80, p.wss = 443; var h = Object.create(null); h["%2e"] = ".", h[".%2e"] = "..", h["%2e."] = "..", h["%2e%2e"] = ".."; var f = void 0, m = /[a-zA-Z]/, w = /[a-zA-Z0-9\+\-\.]/; c.prototype = { toString: function () { return this.href }, get href() { if (this._isInvalid) return this._url; var e = ""; return "" == this._username && null == this._password || (e = this._username + (null != this._password ? ":" + this._password : "") + "@"), this.protocol + (this._isRelative ? "//" + e + this.host : "") + this.pathname + this._query + this._fragment }, set href(e) { s.call(this), a.call(this, e) }, get protocol() { return this._scheme + ":" }, set protocol(e) { this._isInvalid || a.call(this, e + ":", "scheme start") }, get host() { return this._isInvalid ? "" : this._port ? this._host + ":" + this._port : this._host }, set host(e) { !this._isInvalid && this._isRelative && a.call(this, e, "host") }, get hostname() { return this._host }, set hostname(e) { !this._isInvalid && this._isRelative && a.call(this, e, "hostname") }, get port() { return this._port }, set port(e) { !this._isInvalid && this._isRelative && a.call(this, e, "port") }, get pathname() { return this._isInvalid ? "" : this._isRelative ? "/" + this._path.join("/") : this._schemeData }, set pathname(e) { !this._isInvalid && this._isRelative && (this._path = [], a.call(this, e, "relative path start")) }, get search() { return this._isInvalid || !this._query || "?" == this._query ? "" : this._query }, set search(e) { !this._isInvalid && this._isRelative && (this._query = "?", "?" == e[0] && (e = e.slice(1)), a.call(this, e, "query")) }, get hash() { return this._isInvalid || !this._fragment || "#" == this._fragment ? "" : this._fragment }, set hash(e) { this._isInvalid || (this._fragment = "#", "#" == e[0] && (e = e.slice(1)), a.call(this, e, "fragment")) }, get origin() { var e; if (this._isInvalid || !this._scheme) return ""; switch (this._scheme) { case "data": case "file": case "javascript": case "mailto": return "null" }return e = this.host, e ? this._scheme + "://" + e : "" } }; var v = e.URL; v && (c.createObjectURL = function (e) { return v.createObjectURL.apply(v, arguments) }, c.revokeObjectURL = function (e) { v.revokeObjectURL(e) }), e.URL = c } }(self), function (e) { function t(e) { y.push(e), b || (b = !0, m(r)) } function n(e) { return window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(e) || e } function r() { b = !1; var e = y; y = [], e.sort(function (e, t) { return e.uid_ - t.uid_ }); var t = !1; e.forEach(function (e) { var n = e.takeRecords(); o(e), n.length && (e.callback_(n, e), t = !0) }), t && r() } function o(e) { e.nodes_.forEach(function (t) { var n = w.get(t); n && n.forEach(function (t) { t.observer === e && t.removeTransientObservers() }) }) } function i(e, t) { for (var n = e; n; n = n.parentNode) { var r = w.get(n); if (r) for (var o = 0; o < r.length; o++) { var i = r[o], a = i.options; if (n === e || a.subtree) { var s = t(a); s && i.enqueue(s) } } } } function a(e) { this.callback_ = e, this.nodes_ = [], this.records_ = [], this.uid_ = ++E } function s(e, t) { this.type = e, this.target = t, this.addedNodes = [], this.removedNodes = [], this.previousSibling = null, this.nextSibling = null, this.attributeName = null, this.attributeNamespace = null, this.oldValue = null } function c(e) { var t = new s(e.type, e.target); return t.addedNodes = e.addedNodes.slice(), t.removedNodes = e.removedNodes.slice(), t.previousSibling = e.previousSibling, t.nextSibling = e.nextSibling, t.attributeName = e.attributeName, t.attributeNamespace = e.attributeNamespace, t.oldValue = e.oldValue, t } function l(e, t) { return _ = new s(e, t) } function u(e) { return S ? S : (S = c(_), S.oldValue = e, S) } function d() { _ = S = void 0 } function p(e) { return e === S || e === _ } function h(e, t) { return e === t ? e : S && p(e) ? S : null } function f(e, t, n) { this.observer = e, this.target = t, this.options = n, this.transientObservedNodes = [] } if (!e.JsMutationObserver) { var m, w = new WeakMap; if (/Trident|Edge/.test(navigator.userAgent)) m = setTimeout; else if (window.setImmediate) m = window.setImmediate; else { var v = [], g = String(Math.random()); window.addEventListener("message", function (e) { if (e.data === g) { var t = v; v = [], t.forEach(function (e) { e() }) } }), m = function (e) { v.push(e), window.postMessage(g, "*") } } var b = !1, y = [], E = 0; a.prototype = { observe: function (e, t) { if (e = n(e), !t.childList && !t.attributes && !t.characterData || t.attributeOldValue && !t.attributes || t.attributeFilter && t.attributeFilter.length && !t.attributes || t.characterDataOldValue && !t.characterData) throw new SyntaxError; var r = w.get(e); r || w.set(e, r = []); for (var o, i = 0; i < r.length; i++)if (r[i].observer === this) { o = r[i], o.removeListeners(), o.options = t; break } o || (o = new f(this, e, t), r.push(o), this.nodes_.push(e)), o.addListeners() }, disconnect: function () { this.nodes_.forEach(function (e) { for (var t = w.get(e), n = 0; n < t.length; n++) { var r = t[n]; if (r.observer === this) { r.removeListeners(), t.splice(n, 1); break } } }, this), this.records_ = [] }, takeRecords: function () { var e = this.records_; return this.records_ = [], e } }; var _, S; f.prototype = { enqueue: function (e) { var n = this.observer.records_, r = n.length; if (n.length > 0) { var o = n[r - 1], i = h(o, e); if (i) return void (n[r - 1] = i) } else t(this.observer); n[r] = e }, addListeners: function () { this.addListeners_(this.target) }, addListeners_: function (e) { var t = this.options; t.attributes && e.addEventListener("DOMAttrModified", this, !0), t.characterData && e.addEventListener("DOMCharacterDataModified", this, !0), t.childList && e.addEventListener("DOMNodeInserted", this, !0), (t.childList || t.subtree) && e.addEventListener("DOMNodeRemoved", this, !0) }, removeListeners: function () { this.removeListeners_(this.target) }, removeListeners_: function (e) { var t = this.options; t.attributes && e.removeEventListener("DOMAttrModified", this, !0), t.characterData && e.removeEventListener("DOMCharacterDataModified", this, !0), t.childList && e.removeEventListener("DOMNodeInserted", this, !0), (t.childList || t.subtree) && e.removeEventListener("DOMNodeRemoved", this, !0) }, addTransientObserver: function (e) { if (e !== this.target) { this.addListeners_(e), this.transientObservedNodes.push(e); var t = w.get(e); t || w.set(e, t = []), t.push(this) } }, removeTransientObservers: function () { var e = this.transientObservedNodes; this.transientObservedNodes = [], e.forEach(function (e) { this.removeListeners_(e); for (var t = w.get(e), n = 0; n < t.length; n++)if (t[n] === this) { t.splice(n, 1); break } }, this) }, handleEvent: function (e) { switch (e.stopImmediatePropagation(), e.type) { case "DOMAttrModified": var t = e.attrName, n = e.relatedNode.namespaceURI, r = e.target, o = new l("attributes", r); o.attributeName = t, o.attributeNamespace = n; var a = e.attrChange === MutationEvent.ADDITION ? null : e.prevValue; i(r, function (e) { if (e.attributes && (!e.attributeFilter || !e.attributeFilter.length || e.attributeFilter.indexOf(t) !== -1 || e.attributeFilter.indexOf(n) !== -1)) return e.attributeOldValue ? u(a) : o }); break; case "DOMCharacterDataModified": var r = e.target, o = l("characterData", r), a = e.prevValue; i(r, function (e) { if (e.characterData) return e.characterDataOldValue ? u(a) : o }); break; case "DOMNodeRemoved": this.addTransientObserver(e.target); case "DOMNodeInserted": var s, c, p = e.target; "DOMNodeInserted" === e.type ? (s = [p], c = []) : (s = [], c = [p]); var h = p.previousSibling, f = p.nextSibling, o = l("childList", e.target.parentNode); o.addedNodes = s, o.removedNodes = c, o.previousSibling = h, o.nextSibling = f, i(e.relatedNode, function (e) { if (e.childList) return o }) }d() } }, e.JsMutationObserver = a, e.MutationObserver || (e.MutationObserver = a, a._isPolyfilled = !0) } }(self), function (e) { "use strict"; if (!window.performance || !window.performance.now) { var t = Date.now(); window.performance = { now: function () { return Date.now() - t } } } window.requestAnimationFrame || (window.requestAnimationFrame = function () { var e = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame; return e ? function (t) { return e(function () { t(performance.now()) }) } : function (e) { return window.setTimeout(e, 1e3 / 60) } }()), window.cancelAnimationFrame || (window.cancelAnimationFrame = function () { return window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || function (e) { clearTimeout(e) } }()); var n = function () { var e = document.createEvent("Event"); return e.initEvent("foo", !0, !0), e.preventDefault(), e.defaultPrevented }(); if (!n) { var r = Event.prototype.preventDefault; Event.prototype.preventDefault = function () { this.cancelable && (r.call(this), Object.defineProperty(this, "defaultPrevented", { get: function () { return !0 }, configurable: !0 })) } } var o = /Trident/.test(navigator.userAgent); if ((!window.CustomEvent || o && "function" != typeof window.CustomEvent) && (window.CustomEvent = function (e, t) { t = t || {}; var n = document.createEvent("CustomEvent"); return n.initCustomEvent(e, Boolean(t.bubbles), Boolean(t.cancelable), t.detail), n }, window.CustomEvent.prototype = window.Event.prototype), !window.Event || o && "function" != typeof window.Event) { var i = window.Event; window.Event = function (e, t) { t = t || {}; var n = document.createEvent("Event"); return n.initEvent(e, Boolean(t.bubbles), Boolean(t.cancelable)), n }, window.Event.prototype = i.prototype } }(window.WebComponents), window.HTMLImports = window.HTMLImports || { flags: {} }, function (e) { - function t(e, t) { t = t || f, r(function () { i(e, t) }, t) } function n(e) { return "complete" === e.readyState || e.readyState === v } function r(e, t) { if (n(t)) e && e(); else { var o = function () { "complete" !== t.readyState && t.readyState !== v || (t.removeEventListener(g, o), r(e, t)) }; t.addEventListener(g, o) } } function o(e) { e.target.__loaded = !0 } function i(e, t) { - function n() { c == l && e && e({ allImports: s, loadedImports: u, errorImports: d }) } function r(e) { o(e), u.push(this), c++, n() } function i(e) { - d.push(this), c++, n() - } var s = t.querySelectorAll("link[rel=import]"), c = 0, l = s.length, u = [], d = []; if (l) for (var p, h = 0; h < l && (p = s[h]); h++)a(p) ? (u.push(this), c++, n()) : (p.addEventListener("load", r), p.addEventListener("error", i)); else n() - } function a(e) { return d ? e.__loaded || e["import"] && "loading" !== e["import"].readyState : e.__importParsed } function s(e) { for (var t, n = 0, r = e.length; n < r && (t = e[n]); n++)c(t) && l(t) } function c(e) { return "link" === e.localName && "import" === e.rel } function l(e) { var t = e["import"]; t ? o({ target: e }) : (e.addEventListener("load", o), e.addEventListener("error", o)) } var u = "import", d = Boolean(u in document.createElement("link")), p = Boolean(window.ShadowDOMPolyfill), h = function (e) { return p ? window.ShadowDOMPolyfill.wrapIfNeeded(e) : e }, f = h(document), m = { get: function () { var e = window.HTMLImports.currentScript || document.currentScript || ("complete" !== document.readyState ? document.scripts[document.scripts.length - 1] : null); return h(e) }, configurable: !0 }; Object.defineProperty(document, "_currentScript", m), Object.defineProperty(f, "_currentScript", m); var w = /Trident/.test(navigator.userAgent), v = w ? "complete" : "interactive", g = "readystatechange"; d && (new MutationObserver(function (e) { for (var t, n = 0, r = e.length; n < r && (t = e[n]); n++)t.addedNodes && s(t.addedNodes) }).observe(document.head, { childList: !0 }), function () { if ("loading" === document.readyState) for (var e, t = document.querySelectorAll("link[rel=import]"), n = 0, r = t.length; n < r && (e = t[n]); n++)l(e) }()), t(function (e) { window.HTMLImports.ready = !0, window.HTMLImports.readyTime = (new Date).getTime(); var t = f.createEvent("CustomEvent"); t.initCustomEvent("HTMLImportsLoaded", !0, !0, e), f.dispatchEvent(t) }), e.IMPORT_LINK_TYPE = u, e.useNative = d, e.rootDocument = f, e.whenReady = t, e.isIE = w -}(window.HTMLImports), function (e) { var t = [], n = function (e) { t.push(e) }, r = function () { t.forEach(function (t) { t(e) }) }; e.addModule = n, e.initializeModules = r }(window.HTMLImports), window.HTMLImports.addModule(function (e) { var t = /(url\()([^)]*)(\))/g, n = /(@import[\s]+(?!url\())([^;]*)(;)/g, r = { resolveUrlsInStyle: function (e, t) { var n = e.ownerDocument, r = n.createElement("a"); return e.textContent = this.resolveUrlsInCssText(e.textContent, t, r), e }, resolveUrlsInCssText: function (e, r, o) { var i = this.replaceUrls(e, o, r, t); return i = this.replaceUrls(i, o, r, n) }, replaceUrls: function (e, t, n, r) { return e.replace(r, function (e, r, o, i) { var a = o.replace(/["']/g, ""); return n && (a = new URL(a, n).href), t.href = a, a = t.href, r + "'" + a + "'" + i }) } }; e.path = r }), window.HTMLImports.addModule(function (e) { var t = { async: !0, ok: function (e) { return e.status >= 200 && e.status < 300 || 304 === e.status || 0 === e.status }, load: function (n, r, o) { var i = new XMLHttpRequest; return (e.flags.debug || e.flags.bust) && (n += "?" + Math.random()), i.open("GET", n, t.async), i.addEventListener("readystatechange", function (e) { if (4 === i.readyState) { var n = null; try { var a = i.getResponseHeader("Location"); a && (n = "/" === a.substr(0, 1) ? location.origin + a : a) } catch (e) { console.error(e.message) } r.call(o, !t.ok(i) && i, i.response || i.responseText, n) } }), i.send(), i }, loadDocument: function (e, t, n) { this.load(e, t, n).responseType = "document" } }; e.xhr = t }), window.HTMLImports.addModule(function (e) { var t = e.xhr, n = e.flags, r = function (e, t) { this.cache = {}, this.onload = e, this.oncomplete = t, this.inflight = 0, this.pending = {} }; r.prototype = { addNodes: function (e) { this.inflight += e.length; for (var t, n = 0, r = e.length; n < r && (t = e[n]); n++)this.require(t); this.checkDone() }, addNode: function (e) { this.inflight++, this.require(e), this.checkDone() }, require: function (e) { var t = e.src || e.href; e.__nodeUrl = t, this.dedupe(t, e) || this.fetch(t, e) }, dedupe: function (e, t) { if (this.pending[e]) return this.pending[e].push(t), !0; return this.cache[e] ? (this.onload(e, t, this.cache[e]), this.tail(), !0) : (this.pending[e] = [t], !1) }, fetch: function (e, r) { if (n.load && console.log("fetch", e, r), e) if (e.match(/^data:/)) { var o = e.split(","), i = o[0], a = o[1]; a = i.indexOf(";base64") > -1 ? atob(a) : decodeURIComponent(a), setTimeout(function () { this.receive(e, r, null, a) }.bind(this), 0) } else { var s = function (t, n, o) { this.receive(e, r, t, n, o) }.bind(this); t.load(e, s) } else setTimeout(function () { this.receive(e, r, { error: "href must be specified" }, null) }.bind(this), 0) }, receive: function (e, t, n, r, o) { this.cache[e] = r; for (var i, a = this.pending[e], s = 0, c = a.length; s < c && (i = a[s]); s++)this.onload(e, i, r, n, o), this.tail(); this.pending[e] = null }, tail: function () { --this.inflight, this.checkDone() }, checkDone: function () { this.inflight || this.oncomplete() } }, e.Loader = r }), window.HTMLImports.addModule(function (e) { var t = function (e) { this.addCallback = e, this.mo = new MutationObserver(this.handler.bind(this)) }; t.prototype = { handler: function (e) { for (var t, n = 0, r = e.length; n < r && (t = e[n]); n++)"childList" === t.type && t.addedNodes.length && this.addedNodes(t.addedNodes) }, addedNodes: function (e) { this.addCallback && this.addCallback(e); for (var t, n = 0, r = e.length; n < r && (t = e[n]); n++)t.children && t.children.length && this.addedNodes(t.children) }, observe: function (e) { this.mo.observe(e, { childList: !0, subtree: !0 }) } }, e.Observer = t }), window.HTMLImports.addModule(function (e) { function t(e) { return "link" === e.localName && e.rel === u } function n(e) { var t = r(e); return "data:text/javascript;charset=utf-8," + encodeURIComponent(t) } function r(e) { return e.textContent + o(e) } function o(e) { var t = e.ownerDocument; t.__importedScripts = t.__importedScripts || 0; var n = e.ownerDocument.baseURI, r = t.__importedScripts ? "-" + t.__importedScripts : ""; return t.__importedScripts++, "\n//# sourceURL=" + n + r + ".js\n" } function i(e) { var t = e.ownerDocument.createElement("style"); return t.textContent = e.textContent, a.resolveUrlsInStyle(t), t } var a = e.path, s = e.rootDocument, c = e.flags, l = e.isIE, u = e.IMPORT_LINK_TYPE, d = "link[rel=" + u + "]", p = { documentSelectors: d, importsSelectors: [d, "link[rel=stylesheet]:not([type])", "style:not([type])", "script:not([type])", 'script[type="application/javascript"]', 'script[type="text/javascript"]'].join(","), map: { link: "parseLink", script: "parseScript", style: "parseStyle" }, dynamicElements: [], parseNext: function () { var e = this.nextToParse(); e && this.parse(e) }, parse: function (e) { if (this.isParsed(e)) return void (c.parse && console.log("[%s] is already parsed", e.localName)); var t = this[this.map[e.localName]]; t && (this.markParsing(e), t.call(this, e)) }, parseDynamic: function (e, t) { this.dynamicElements.push(e), t || this.parseNext() }, markParsing: function (e) { c.parse && console.log("parsing", e), this.parsingElement = e }, markParsingComplete: function (e) { e.__importParsed = !0, this.markDynamicParsingComplete(e), e.__importElement && (e.__importElement.__importParsed = !0, this.markDynamicParsingComplete(e.__importElement)), this.parsingElement = null, c.parse && console.log("completed", e) }, markDynamicParsingComplete: function (e) { var t = this.dynamicElements.indexOf(e); t >= 0 && this.dynamicElements.splice(t, 1) }, parseImport: function (e) { if (e["import"] = e.__doc, window.HTMLImports.__importsParsingHook && window.HTMLImports.__importsParsingHook(e), e["import"] && (e["import"].__importParsed = !0), this.markParsingComplete(e), e.__resource && !e.__error ? e.dispatchEvent(new CustomEvent("load", { bubbles: !1 })) : e.dispatchEvent(new CustomEvent("error", { bubbles: !1 })), e.__pending) for (var t; e.__pending.length;)t = e.__pending.shift(), t && t({ target: e }); this.parseNext() }, parseLink: function (e) { t(e) ? this.parseImport(e) : (e.href = e.href, this.parseGeneric(e)) }, parseStyle: function (e) { var t = e; e = i(e), t.__appliedElement = e, e.__importElement = t, this.parseGeneric(e) }, parseGeneric: function (e) { this.trackElement(e), this.addElementToDocument(e) }, rootImportForElement: function (e) { for (var t = e; t.ownerDocument.__importLink;)t = t.ownerDocument.__importLink; return t }, addElementToDocument: function (e) { var t = this.rootImportForElement(e.__importElement || e); t.parentNode.insertBefore(e, t) }, trackElement: function (e, t) { var n = this, r = function (o) { e.removeEventListener("load", r), e.removeEventListener("error", r), t && t(o), n.markParsingComplete(e), n.parseNext() }; if (e.addEventListener("load", r), e.addEventListener("error", r), l && "style" === e.localName) { var o = !1; if (e.textContent.indexOf("@import") == -1) o = !0; else if (e.sheet) { o = !0; for (var i, a = e.sheet.cssRules, s = a ? a.length : 0, c = 0; c < s && (i = a[c]); c++)i.type === CSSRule.IMPORT_RULE && (o = o && Boolean(i.styleSheet)) } o && setTimeout(function () { e.dispatchEvent(new CustomEvent("load", { bubbles: !1 })) }) } }, parseScript: function (t) { var r = document.createElement("script"); r.__importElement = t, r.src = t.src ? t.src : n(t), e.currentScript = t, this.trackElement(r, function (t) { r.parentNode && r.parentNode.removeChild(r), e.currentScript = null }), this.addElementToDocument(r) }, nextToParse: function () { return this._mayParse = [], !this.parsingElement && (this.nextToParseInDoc(s) || this.nextToParseDynamic()) }, nextToParseInDoc: function (e, n) { if (e && this._mayParse.indexOf(e) < 0) { this._mayParse.push(e); for (var r, o = e.querySelectorAll(this.parseSelectorsForNode(e)), i = 0, a = o.length; i < a && (r = o[i]); i++)if (!this.isParsed(r)) return this.hasResource(r) ? t(r) ? this.nextToParseInDoc(r.__doc, r) : r : void 0 } return n }, nextToParseDynamic: function () { return this.dynamicElements[0] }, parseSelectorsForNode: function (e) { var t = e.ownerDocument || e; return t === s ? this.documentSelectors : this.importsSelectors }, isParsed: function (e) { return e.__importParsed }, needsDynamicParsing: function (e) { return this.dynamicElements.indexOf(e) >= 0 }, hasResource: function (e) { return !t(e) || void 0 !== e.__doc } }; e.parser = p, e.IMPORT_SELECTOR = d }), window.HTMLImports.addModule(function (e) { function t(e) { return n(e, a) } function n(e, t) { return "link" === e.localName && e.getAttribute("rel") === t } function r(e) { return !!Object.getOwnPropertyDescriptor(e, "baseURI") } function o(e, t) { var n = document.implementation.createHTMLDocument(a); n._URL = t; var o = n.createElement("base"); o.setAttribute("href", t), n.baseURI || r(n) || Object.defineProperty(n, "baseURI", { value: t }); var i = n.createElement("meta"); return i.setAttribute("charset", "utf-8"), n.head.appendChild(i), n.head.appendChild(o), n.body.innerHTML = e, window.HTMLTemplateElement && HTMLTemplateElement.bootstrap && HTMLTemplateElement.bootstrap(n), n } var i = e.flags, a = e.IMPORT_LINK_TYPE, s = e.IMPORT_SELECTOR, c = e.rootDocument, l = e.Loader, u = e.Observer, d = e.parser, p = { documents: {}, documentPreloadSelectors: s, importsPreloadSelectors: [s].join(","), loadNode: function (e) { h.addNode(e) }, loadSubtree: function (e) { var t = this.marshalNodes(e); h.addNodes(t) }, marshalNodes: function (e) { return e.querySelectorAll(this.loadSelectorsForNode(e)) }, loadSelectorsForNode: function (e) { var t = e.ownerDocument || e; return t === c ? this.documentPreloadSelectors : this.importsPreloadSelectors }, loaded: function (e, n, r, a, s) { if (i.load && console.log("loaded", e, n), n.__resource = r, n.__error = a, t(n)) { var c = this.documents[e]; void 0 === c && (c = a ? null : o(r, s || e), c && (c.__importLink = n, this.bootDocument(c)), this.documents[e] = c), n.__doc = c } d.parseNext() }, bootDocument: function (e) { this.loadSubtree(e), this.observer.observe(e), d.parseNext() }, loadedAll: function () { d.parseNext() } }, h = new l(p.loaded.bind(p), p.loadedAll.bind(p)); if (p.observer = new u, !document.baseURI) { var f = { get: function () { var e = document.querySelector("base"); return e ? e.href : window.location.href }, configurable: !0 }; Object.defineProperty(document, "baseURI", f), Object.defineProperty(c, "baseURI", f) } e.importer = p, e.importLoader = h }), window.HTMLImports.addModule(function (e) { var t = e.parser, n = e.importer, r = { added: function (e) { for (var r, o, i, a, s = 0, c = e.length; s < c && (a = e[s]); s++)r || (r = a.ownerDocument, o = t.isParsed(r)), i = this.shouldLoadNode(a), i && n.loadNode(a), this.shouldParseNode(a) && o && t.parseDynamic(a, i) }, shouldLoadNode: function (e) { return 1 === e.nodeType && o.call(e, n.loadSelectorsForNode(e)) }, shouldParseNode: function (e) { return 1 === e.nodeType && o.call(e, t.parseSelectorsForNode(e)) } }; n.observer.addCallback = r.added.bind(r); var o = HTMLElement.prototype.matches || HTMLElement.prototype.matchesSelector || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.mozMatchesSelector || HTMLElement.prototype.msMatchesSelector }), function (e) { function t() { window.HTMLImports.importer.bootDocument(r) } var n = e.initializeModules; e.isIE; if (!e.useNative) { n(); var r = e.rootDocument; "complete" === document.readyState || "interactive" === document.readyState && !window.attachEvent ? t() : document.addEventListener("DOMContentLoaded", t) } }(window.HTMLImports), window.CustomElements = window.CustomElements || { flags: {} }, function (e) { var t = e.flags, n = [], r = function (e) { n.push(e) }, o = function () { n.forEach(function (t) { t(e) }) }; e.addModule = r, e.initializeModules = o, e.hasNative = Boolean(document.registerElement), e.isIE = /Trident/.test(navigator.userAgent), e.useNative = !t.register && e.hasNative && !window.ShadowDOMPolyfill && (!window.HTMLImports || window.HTMLImports.useNative) }(window.CustomElements), window.CustomElements.addModule(function (e) { function t(e, t) { n(e, function (e) { return !!t(e) || void r(e, t) }), r(e, t) } function n(e, t, r) { var o = e.firstElementChild; if (!o) for (o = e.firstChild; o && o.nodeType !== Node.ELEMENT_NODE;)o = o.nextSibling; for (; o;)t(o, r) !== !0 && n(o, t, r), o = o.nextElementSibling; return null } function r(e, n) { for (var r = e.shadowRoot; r;)t(r, n), r = r.olderShadowRoot } function o(e, t) { i(e, t, []) } function i(e, t, n) { if (e = window.wrap(e), !(n.indexOf(e) >= 0)) { n.push(e); for (var r, o = e.querySelectorAll("link[rel=" + a + "]"), s = 0, c = o.length; s < c && (r = o[s]); s++)r["import"] && i(r["import"], t, n); t(e) } } var a = window.HTMLImports ? window.HTMLImports.IMPORT_LINK_TYPE : "none"; e.forDocumentTree = o, e.forSubtree = t }), window.CustomElements.addModule(function (e) { function t(e, t) { return n(e, t) || r(e, t) } function n(t, n) { return !!e.upgrade(t, n) || void (n && a(t)) } function r(e, t) { b(e, function (e) { if (n(e, t)) return !0 }) } function o(e) { S.push(e), _ || (_ = !0, setTimeout(i)) } function i() { _ = !1; for (var e, t = S, n = 0, r = t.length; n < r && (e = t[n]); n++)e(); S = [] } function a(e) { E ? o(function () { s(e) }) : s(e) } function s(e) { e.__upgraded__ && !e.__attached && (e.__attached = !0, e.attachedCallback && e.attachedCallback()) } function c(e) { l(e), b(e, function (e) { l(e) }) } function l(e) { E ? o(function () { u(e) }) : u(e) } function u(e) { e.__upgraded__ && e.__attached && (e.__attached = !1, e.detachedCallback && e.detachedCallback()) } function d(e) { for (var t = e, n = window.wrap(document); t;) { if (t == n) return !0; t = t.parentNode || t.nodeType === Node.DOCUMENT_FRAGMENT_NODE && t.host } } function p(e) { if (e.shadowRoot && !e.shadowRoot.__watched) { g.dom && console.log("watching shadow-root for: ", e.localName); for (var t = e.shadowRoot; t;)m(t), t = t.olderShadowRoot } } function h(e, n) { if (g.dom) { var r = n[0]; if (r && "childList" === r.type && r.addedNodes && r.addedNodes) { for (var o = r.addedNodes[0]; o && o !== document && !o.host;)o = o.parentNode; var i = o && (o.URL || o._URL || o.host && o.host.localName) || ""; i = i.split("/?").shift().split("/").pop() } console.group("mutations (%d) [%s]", n.length, i || "") } var a = d(e); n.forEach(function (e) { "childList" === e.type && (T(e.addedNodes, function (e) { e.localName && t(e, a) }), T(e.removedNodes, function (e) { e.localName && c(e) })) }), g.dom && console.groupEnd() } function f(e) { for (e = window.wrap(e), e || (e = window.wrap(document)); e.parentNode;)e = e.parentNode; var t = e.__observer; t && (h(e, t.takeRecords()), i()) } function m(e) { if (!e.__observer) { var t = new MutationObserver(h.bind(this, e)); t.observe(e, { childList: !0, subtree: !0 }), e.__observer = t } } function w(e) { e = window.wrap(e), g.dom && console.group("upgradeDocument: ", e.baseURI.split("/").pop()); var n = e === window.wrap(document); t(e, n), m(e), g.dom && console.groupEnd() } function v(e) { y(e, w) } var g = e.flags, b = e.forSubtree, y = e.forDocumentTree, E = window.MutationObserver._isPolyfilled && g["throttle-attached"]; e.hasPolyfillMutations = E, e.hasThrottledAttached = E; var _ = !1, S = [], T = Array.prototype.forEach.call.bind(Array.prototype.forEach), M = Element.prototype.createShadowRoot; M && (Element.prototype.createShadowRoot = function () { var e = M.call(this); return window.CustomElements.watchShadow(this), e }), e.watchShadow = p, e.upgradeDocumentTree = v, e.upgradeDocument = w, e.upgradeSubtree = r, e.upgradeAll = t, e.attached = a, e.takeRecords = f }), window.CustomElements.addModule(function (e) { function t(t, r) { if ("template" === t.localName && window.HTMLTemplateElement && HTMLTemplateElement.decorate && HTMLTemplateElement.decorate(t), !t.__upgraded__ && t.nodeType === Node.ELEMENT_NODE) { var o = t.getAttribute("is"), i = e.getRegisteredDefinition(t.localName) || e.getRegisteredDefinition(o); if (i && (o && i.tag == t.localName || !o && !i["extends"])) return n(t, i, r) } } function n(t, n, o) { return a.upgrade && console.group("upgrade:", t.localName), n.is && t.setAttribute("is", n.is), r(t, n), t.__upgraded__ = !0, i(t), o && e.attached(t), e.upgradeSubtree(t, o), a.upgrade && console.groupEnd(), t } function r(e, t) { Object.__proto__ ? e.__proto__ = t.prototype : (o(e, t.prototype, t["native"]), e.__proto__ = t.prototype) } function o(e, t, n) { for (var r = {}, o = t; o !== n && o !== HTMLElement.prototype;) { for (var i, a = Object.getOwnPropertyNames(o), s = 0; i = a[s]; s++)r[i] || (Object.defineProperty(e, i, Object.getOwnPropertyDescriptor(o, i)), r[i] = 1); o = Object.getPrototypeOf(o) } } function i(e) { e.createdCallback && e.createdCallback() } var a = e.flags; e.upgrade = t, e.upgradeWithDefinition = n, e.implementPrototype = r }), window.CustomElements.addModule(function (e) { function t(t, r) { var c = r || {}; if (!t) throw new Error("document.registerElement: first argument `name` must not be empty"); if (t.indexOf("-") < 0) throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '" + String(t) + "'."); if (o(t)) throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '" + String(t) + "'. The type name is invalid."); if (l(t)) throw new Error("DuplicateDefinitionError: a type with name '" + String(t) + "' is already registered"); return c.prototype || (c.prototype = Object.create(HTMLElement.prototype)), c.__name = t.toLowerCase(), c["extends"] && (c["extends"] = c["extends"].toLowerCase()), c.lifecycle = c.lifecycle || {}, c.ancestry = i(c["extends"]), a(c), s(c), n(c.prototype), u(c.__name, c), c.ctor = d(c), c.ctor.prototype = c.prototype, c.prototype.constructor = c.ctor, e.ready && w(document), c.ctor } function n(e) { if (!e.setAttribute._polyfilled) { var t = e.setAttribute; e.setAttribute = function (e, n) { r.call(this, e, n, t) }; var n = e.removeAttribute; e.removeAttribute = function (e) { r.call(this, e, null, n) }, e.setAttribute._polyfilled = !0 } } function r(e, t, n) { e = e.toLowerCase(); var r = this.getAttribute(e); n.apply(this, arguments); var o = this.getAttribute(e); this.attributeChangedCallback && o !== r && this.attributeChangedCallback(e, r, o) } function o(e) { for (var t = 0; t < E.length; t++)if (e === E[t]) return !0 } function i(e) { var t = l(e); return t ? i(t["extends"]).concat([t]) : [] } function a(e) { for (var t, n = e["extends"], r = 0; t = e.ancestry[r]; r++)n = t.is && t.tag; e.tag = n || e.__name, n && (e.is = e.__name) } function s(e) { if (!Object.__proto__) { var t = HTMLElement.prototype; if (e.is) { var n = document.createElement(e.tag); t = Object.getPrototypeOf(n) } for (var r, o = e.prototype, i = !1; o;)o == t && (i = !0), r = Object.getPrototypeOf(o), r && (o.__proto__ = r), o = r; i || console.warn(e.tag + " prototype not found in prototype chain for " + e.is), e["native"] = t } } function c(e) { return g(T(e.tag), e) } function l(e) { if (e) return _[e.toLowerCase()] } function u(e, t) { _[e] = t } function d(e) { return function () { return c(e) } } function p(e, t, n) { return e === S ? h(t, n) : M(e, t) } function h(e, t) { e && (e = e.toLowerCase()), t && (t = t.toLowerCase()); var n = l(t || e); if (n) { if (e == n.tag && t == n.is) return new n.ctor; if (!t && !n.is) return new n.ctor } var r; return t ? (r = h(e), r.setAttribute("is", t), r) : (r = T(e), e.indexOf("-") >= 0 && b(r, HTMLElement), r) } function f(e, t) { var n = e[t]; e[t] = function () { var e = n.apply(this, arguments); return v(e), e } } var m, w = (e.isIE, e.upgradeDocumentTree), v = e.upgradeAll, g = e.upgradeWithDefinition, b = e.implementPrototype, y = e.useNative, E = ["annotation-xml", "color-profile", "font-face", "font-face-src", "font-face-uri", "font-face-format", "font-face-name", "missing-glyph"], _ = {}, S = "http://www.w3.org/1999/xhtml", T = document.createElement.bind(document), M = document.createElementNS.bind(document); m = Object.__proto__ || y ? function (e, t) { return e instanceof t } : function (e, t) { if (e instanceof t) return !0; for (var n = e; n;) { if (n === t.prototype) return !0; n = n.__proto__ } return !1 }, f(Node.prototype, "cloneNode"), f(document, "importNode"), document.registerElement = t, document.createElement = h, document.createElementNS = p, e.registry = _, e["instanceof"] = m, e.reservedTagList = E, e.getRegisteredDefinition = l, document.register = document.registerElement }), function (e) { function t() { i(window.wrap(document)), window.CustomElements.ready = !0; var e = window.requestAnimationFrame || function (e) { setTimeout(e, 16) }; e(function () { setTimeout(function () { window.CustomElements.readyTime = Date.now(), window.HTMLImports && (window.CustomElements.elapsed = window.CustomElements.readyTime - window.HTMLImports.readyTime), document.dispatchEvent(new CustomEvent("WebComponentsReady", { bubbles: !0 })) }) }) } var n = e.useNative, r = e.initializeModules; e.isIE; if (n) { var o = function () { }; e.watchShadow = o, e.upgrade = o, e.upgradeAll = o, e.upgradeDocumentTree = o, e.upgradeSubtree = o, e.takeRecords = o, e["instanceof"] = function (e, t) { return e instanceof t } } else r(); var i = e.upgradeDocumentTree, a = e.upgradeDocument; if (window.wrap || (window.ShadowDOMPolyfill ? (window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded, window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded) : window.wrap = window.unwrap = function (e) { return e }), window.HTMLImports && (window.HTMLImports.__importsParsingHook = function (e) { e["import"] && a(wrap(e["import"])) }), "complete" === document.readyState || e.flags.eager) t(); else if ("interactive" !== document.readyState || window.attachEvent || window.HTMLImports && !window.HTMLImports.ready) { var s = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImportsLoaded" : "DOMContentLoaded"; window.addEventListener(s, t) } else t() }(window.CustomElements), function (e) { Function.prototype.bind || (Function.prototype.bind = function (e) { var t = this, n = Array.prototype.slice.call(arguments, 1); return function () { var r = n.slice(); return r.push.apply(r, arguments), t.apply(e, r) } }) }(window.WebComponents), function (e) { var t = document.createElement("style"); t.textContent = "body {transition: opacity ease-in 0.2s; } \nbody[unresolved] {opacity: 0; display: block; overflow: hidden; position: relative; } \n"; var n = document.querySelector("head"); n.insertBefore(t, n.firstChild) }(window.WebComponents), function (e) { window.Platform = e }(window.WebComponents); \ No newline at end of file diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/trace_viewer_full.html b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/trace_viewer_full.html deleted file mode 100644 index 4aac8735d..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/static/trace_viewer_full.html +++ /dev/null @@ -1,10175 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/utils.py b/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/utils.py deleted file mode 100644 index 5991cf2b3..000000000 --- a/plugins/tensorboard-plugins/tb_plugin/torch_tb_profiler/utils.py +++ /dev/null @@ -1,147 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# -# Copyright(c) 2023 Huawei Technologies. -# All rights reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Modifications: Add visualization of PyTorch Ascend profiling. -# -------------------------------------------------------------------------- -import logging -import math -import os -import time -from contextlib import contextmanager - -from . import consts - -predefined_logging_level = ('CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG', 'NOTSET') - - -def get_logging_level(): - log_level = os.environ.get('TORCH_PROFILER_LOG_LEVEL', 'INFO').upper() - if log_level not in predefined_logging_level: - log_level = logging.getLevelName(logging.INFO) - return log_level - - -logger = None - - -def get_logger(): - global logger - if logger is None: - logger = logging.getLogger(consts.PLUGIN_NAME) - logger.setLevel(get_logging_level()) - return logger - - -def is_gpu_chrome_trace_file(path): - return consts.WORKER_PATTERN.match(path) - - -def is_worker_span_dir(path): - return consts.WORKER_SPAN_PATTERN.match(path) - - -def is_npu_trace_path(path): - return consts.TRACE_PATTERN.match(path) - - -def href(text, url): - """"return html formatted hyperlink string - - Note: - target="_blank" causes this link to be opened in new tab if clicked. - """ - return f'{text}' - - -class Canonicalizer: - def __init__( - self, - time_metric='us', - memory_metric='B', - *, - input_time_metric='us', - input_memory_metric='B'): - # raw timestamp is in microsecond - time_metric_to_factor = { - 'us': 1, - 'ms': 1e3, - 's': 1e6, - } - # raw memory is in bytes - memory_metric_to_factor = { - 'B': math.pow(1024, 0), - 'KB': math.pow(1024, 1), - 'MB': math.pow(1024, 2), - 'GB': math.pow(1024, 3), - } - - # canonicalize the memory metric to a string - self.canonical_time_metrics = { - 'micro': 'us', 'microsecond': 'us', 'us': 'us', - 'milli': 'ms', 'millisecond': 'ms', 'ms': 'ms', - '': 's', 'second': 's', 's': 's', - } - # canonicalize the memory metric to a string - self.canonical_memory_metrics = { - '': 'B', 'B': 'B', - 'K': 'KB', 'KB': 'KB', - 'M': 'MB', 'MB': 'MB', - 'G': 'GB', 'GB': 'GB', - } - - self.time_metric = self.canonical_time_metrics.get(time_metric) - self.memory_metric = self.canonical_memory_metrics.get(memory_metric) - - # scale factor scale input to output - self.time_factor = time_metric_to_factor.get(self.canonical_time_metrics.get(input_time_metric)) /\ - time_metric_to_factor.get(self.time_metric) - self.memory_factor = memory_metric_to_factor.get(self.canonical_memory_metrics.get(input_memory_metric)) /\ - memory_metric_to_factor.get(self.memory_metric) - - def convert_time(self, t): - return self.time_factor * t - - def convert_memory(self, m): - return self.memory_factor * m - - -class DisplayRounder: - """Round a value for display purpose.""" - - def __init__(self, ndigits): - self.ndigits = ndigits - self.precision = math.pow(10, -ndigits) - - def __call__(self, v: float): - _v = abs(v) - if _v >= self.precision or v == 0: - return round(v, 3) - else: - ndigit = abs(math.floor(math.log10(_v))) - return round(v, ndigit) - - -@contextmanager -def timing(description: str, force: bool = False) -> None: - if force or os.environ.get('TORCH_PROFILER_BENCHMARK', '0') == '1': - start = time.time() - yield - elapsed_time = time.time() - start - logger.info(f'{description}: {elapsed_time}') - else: - yield -- Gitee From 0c1047f6f787a1d960ee879be16a38bcd629d372 Mon Sep 17 00:00:00 2001 From: curry3 <485078529@qq.com> Date: Mon, 23 Jun 2025 21:21:06 +0800 Subject: [PATCH 15/79] =?UTF-8?q?=E3=80=90bugfix=E3=80=91dump=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E5=A4=9A=E7=BA=BF=E7=A8=8B=E5=9C=BA=E6=99=AF=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=87=87=E9=9B=86=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msprobe/core/common/utils.py | 97 +++++++++-- .../msprobe/core/data_dump/data_collector.py | 5 +- .../core/debugger/precision_debugger.py | 21 ++- .../msprobe/core/hook_manager.py | 157 ++++++++++-------- .../msprobe/mindspore/cell_processor.py | 49 ++++-- .../mindspore/debugger/precision_debugger.py | 45 ++--- .../mindspore/dump/hook_cell/hook_cell.py | 23 ++- .../dump/hook_cell/ms_hook_manager.py | 19 ++- .../dump/hook_cell/primitive_hooks.py | 40 +++-- .../msprobe/mindspore/dump/jit_dump.py | 9 +- .../msprobe/mindspore/mindspore_service.py | 4 +- .../pytorch/debugger/precision_debugger.py | 9 +- .../dump/module_dump/module_processer.py | 48 ++++-- .../pytorch/hook_module/hook_module.py | 14 +- .../pytorch/hook_module/pt_hook_manager.py | 14 +- .../core_ut/data_dump/test_data_collector.py | 16 +- .../msprobe/test/core_ut/test_hook_manager.py | 92 +++++----- .../hook_module/test_ms_hook_manager.py | 49 +++--- .../test/mindspore_ut/test_cell_processor.py | 70 ++++---- .../debugger/test_pt_precision_debugger.py | 2 + .../pytorch_ut/dump/test_module_processer.py | 34 ++-- .../hook_module/test_pt_hook_manager.py | 4 +- .../hook_module/test_pt_hook_module.py | 10 +- 23 files changed, 509 insertions(+), 322 deletions(-) diff --git a/debug/accuracy_tools/msprobe/core/common/utils.py b/debug/accuracy_tools/msprobe/core/common/utils.py index 668e9a0ad..0ac134a55 100644 --- a/debug/accuracy_tools/msprobe/core/common/utils.py +++ b/debug/accuracy_tools/msprobe/core/common/utils.py @@ -14,21 +14,22 @@ # limitations under the License. import collections +import functools +import inspect import os import re -import subprocess +import threading import time -import inspect +from collections import OrderedDict from datetime import datetime, timezone import numpy as np -from msprobe.core.common.file_utils import (FileOpen, check_file_or_directory_path, load_json) from msprobe.core.common.const import Const, CompareConst -from msprobe.core.common.log import logger -from msprobe.core.common.exceptions import MsprobeException from msprobe.core.common.decorator import recursion_depth_decorator - +from msprobe.core.common.exceptions import MsprobeException +from msprobe.core.common.file_utils import (FileOpen, check_file_or_directory_path, load_json) +from msprobe.core.common.log import logger device = collections.namedtuple('device', ['type', 'index']) prefixes = ['api_stack', 'list', 'range', 'acl'] @@ -112,6 +113,82 @@ class DumpException(MsprobeBaseException): return f"Dump Error Code {self.code}: {self.error_info}" +class ThreadSafe: + """ + 线程安全控制工具类,提供三种使用方式: + 1.上下文管理器:with ThreadSafe() + 2.主动加锁与释放锁:ThreadSafe.acquire()/ThreadSafe.release() + 3.方法装饰器:@ThreadSafe.synchronized + """ + _lock = threading.RLock() + + def __enter__(self): + self.__class__._lock.acquire() + + def __exit__(self, exc_type, exc_val, exc_tb): + self.__class__._lock.release() + + @classmethod + def acquire(cls): + cls._lock.acquire() + + @classmethod + def release(cls): + cls._lock.release() + + @classmethod + def synchronized(cls, func): + @functools.wraps(func) + def wrapper(*args, **kwargs): + with cls._lock: + return func(*args, **kwargs) + + return wrapper + + +class ModuleQueue: + def __init__(self): + self.queue = OrderedDict() + + def add_name(self, name): + self.queue[name] = True + + def remove_name(self, name): + if name in self.queue: + del self.queue[name] + + def find_last(self, name): + """ + 在队列中找到当前 Module/Cell 的父节点名称并返回,若找不到则返回None + + Args: + name: 需要寻找父节点的 Module/Cell 的名称 + + Returns: + 返回父节点名称,找不到则返回None + + Examples: + 父节点名称格式: Module.module1.module1.forward.0 + 子节点名称格式: Module.module1.module2.Module2.forward.0 + 匹配关系: Module/Cell 的名称总能被点(.)分割符分成5个部分及以上,子节点截断后4个点和父节点截断后3个点的前缀名称是匹配的 + """ + child_parts = name.split('.') + if len(child_parts) < 5: + return None + child_name_prefix = '.'.join(child_parts[:-4]) + if child_name_prefix in Const.MODULE_PREFIX: + return None + + for parent_name in reversed(self.queue): + parent_parts = parent_name.split('.') + if len(parent_parts) < 5: + return None + parent_name_prefix = '.'.join(parent_parts[:-3]) + if parent_name_prefix == child_name_prefix: + return parent_name + return None + + def is_json_file(file_path): if isinstance(file_path, str) and file_path.lower().endswith('.json'): return True @@ -282,9 +359,9 @@ def set_dump_path(input_param): npu_path = input_param.get("npu_json_path", None) bench_path = input_param.get("bench_json_path", None) dump_json_path_valid = npu_path is not None and npu_path.endswith("dump.json") and \ - bench_path is not None and bench_path.endswith("dump.json") + bench_path is not None and bench_path.endswith("dump.json") debug_json_path_valid = npu_path is not None and npu_path.endswith("debug.json") and \ - bench_path is not None and bench_path.endswith("debug.json") + bench_path is not None and bench_path.endswith("debug.json") if not dump_json_path_valid and not debug_json_path_valid: logger.error(f"Please check the json path is valid and ensure that neither npu_path nor bench_path is None.") raise CompareException(CompareException.INVALID_PATH_ERROR) @@ -457,10 +534,10 @@ def get_real_step_or_rank(step_or_rank_input, obj): def check_init_step(step): if not is_int(step): raise MsprobeException(MsprobeException.INVALID_PARAM_ERROR, - f"{step} must be an integer") + f"{step} must be an integer") if not step >= 0: raise MsprobeException(MsprobeException.INVALID_PARAM_ERROR, - f"{step} must be greater than or equal to 0") + f"{step} must be greater than or equal to 0") def check_token_range(token_range): diff --git a/debug/accuracy_tools/msprobe/core/data_dump/data_collector.py b/debug/accuracy_tools/msprobe/core/data_dump/data_collector.py index 4bc404551..5a79ef34c 100644 --- a/debug/accuracy_tools/msprobe/core/data_dump/data_collector.py +++ b/debug/accuracy_tools/msprobe/core/data_dump/data_collector.py @@ -15,6 +15,7 @@ import atexit import os +import threading import traceback from msprobe.core.data_dump.scope import ScopeFactory @@ -255,7 +256,9 @@ class DataCollector: else: if self.config.level == Const.LEVEL_MIX and \ not (name.startswith(Const.MODULE) or name.startswith(Const.CELL)): - self.data_writer.update_construct({name: self.module_processor.api_parent_node}) + self.data_writer.update_construct( + {name: self.module_processor.api_parent_node.get(threading.get_ident())} + ) self.data_writer.update_construct(self.module_processor.module_node) diff --git a/debug/accuracy_tools/msprobe/core/debugger/precision_debugger.py b/debug/accuracy_tools/msprobe/core/debugger/precision_debugger.py index 99388de0d..9cfbd76c1 100644 --- a/debug/accuracy_tools/msprobe/core/debugger/precision_debugger.py +++ b/debug/accuracy_tools/msprobe/core/debugger/precision_debugger.py @@ -18,7 +18,7 @@ import os from msprobe.core.common.const import Const, FileCheckConst, MsgConst from msprobe.core.common.exceptions import MsprobeException from msprobe.core.common.file_utils import FileChecker, load_json -from msprobe.core.common.utils import get_real_step_or_rank, check_init_step +from msprobe.core.common.utils import get_real_step_or_rank, check_init_step, ThreadSafe from msprobe.core.common_config import CommonConfig @@ -27,13 +27,14 @@ class BasePrecisionDebugger: tasks_not_need_debugger = [Const.GRAD_PROBE] def __new__(cls, *args, **kwargs): - if cls._instance is None: - cls._instance = super(BasePrecisionDebugger, cls).__new__(cls) - cls._instance.config = None - cls._instance.enable_dataloader = False - cls._instance.initialized = False - cls.service = None - cls.first_start = False + if not cls._instance: + with ThreadSafe(): + if not cls._instance: + cls._instance = super(BasePrecisionDebugger, cls).__new__(cls) + cls._instance.config = None + cls._instance.initialized = False + cls.service = None + cls.first_start = False return cls._instance def __init__( @@ -83,11 +84,13 @@ class BasePrecisionDebugger: raise NotImplementedError("Subclass must implement _get_task_config") @classmethod + @ThreadSafe.synchronized def forward_backward_dump_end(cls): instance = cls._instance instance.stop() @classmethod + @ThreadSafe.synchronized def set_init_step(cls, step): instance = cls._instance if not instance: @@ -97,6 +100,7 @@ class BasePrecisionDebugger: instance.service.loop = 0 @classmethod + @ThreadSafe.synchronized def register_custom_api(cls, module, api, api_prefix=None): if not api_prefix: api_prefix = getattr(module, "__name__", "Custom") @@ -112,6 +116,7 @@ class BasePrecisionDebugger: instance.service.register_custom_api(module, api, api_prefix) @classmethod + @ThreadSafe.synchronized def restore_custom_api(cls, module, api): if not hasattr(module, api): raise MsprobeException( diff --git a/debug/accuracy_tools/msprobe/core/hook_manager.py b/debug/accuracy_tools/msprobe/core/hook_manager.py index 17d9ee0b5..db989df0b 100644 --- a/debug/accuracy_tools/msprobe/core/hook_manager.py +++ b/debug/accuracy_tools/msprobe/core/hook_manager.py @@ -13,12 +13,13 @@ # See the License for the specific language governing permissions and # limitations under the License. - -from abc import ABC, abstractmethod import os +import threading +from abc import ABC, abstractmethod +from collections import defaultdict from msprobe.core.common.runtime import Runtime -from msprobe.core.common.utils import Const +from msprobe.core.common.utils import Const, ThreadSafe from msprobe.core.data_dump.data_processor.base import (ModuleBackwardInputsOutputs, ModuleForwardInputsOutputs) @@ -31,7 +32,7 @@ class HookSet: class BaseHookManager(ABC): - inner_switch = False + inner_switch = defaultdict(bool) hook_handle_dict = {} params_grad_info = {} @@ -86,7 +87,7 @@ class BaseHookManager(ABC): grad_name = ori_name + Const.SEP + Const.PARAMS_GRAD # 首次执行前向hook时,添加params_grad_name属性,并注册参数hook setattr(module, 'params_grad_name', grad_name) - # data_mode为forward时,不注册参数hook + # data_mode为forward时,不注册参数hook if not (Const.FORWARD in self.config.data_mode and Const.BACKWARD not in self.config.data_mode): for param_name, param in params_dict.items(): if param.requires_grad: @@ -116,7 +117,7 @@ class BaseHookManager(ABC): # 记录当前模块的参数梯度信息已占位 BaseHookManager.params_grad_info[grad_name] = True - def _should_execute_hook(self, hook_type, module, is_forward): + def _should_execute_hook(self, hook_type, module, is_forward, tid): is_module_hook = hook_type == Const.MODULE if is_module_hook and not Runtime.is_running: return False @@ -124,7 +125,7 @@ class BaseHookManager(ABC): return False elif not is_module_hook and not is_forward and not module.forward_data_collected: return False - if BaseHookManager.inner_switch: + if BaseHookManager.inner_switch[tid]: return False if not self.data_collector or self.data_collector.data_processor.is_terminated: return False @@ -132,30 +133,38 @@ class BaseHookManager(ABC): def _build_grad_hook(self, module, ori_name, param_name): def hook_fn(grad): - if not self._should_execute_hook(Const.MODULE, module, False): + tid = threading.get_ident() + if not self._should_execute_hook(Const.MODULE, module, False, tid): return - BaseHookManager.inner_switch = True - self.data_collector.params_data_collect(ori_name, param_name, self._pid, grad) - BaseHookManager.inner_switch = False + with ThreadSafe(): + BaseHookManager.inner_switch[tid] = True + self.data_collector.params_data_collect(ori_name, param_name, self._pid, grad) + BaseHookManager.inner_switch[tid] = False return + return hook_fn def _build_forward_pre_hook(self, hook_type, full_name, api_name): def forward_pre_hook(module, args, kwargs=None): if hook_type == Const.MODULE: return - if not self._should_execute_hook(hook_type, module, True): + + tid = threading.get_ident() + if not self._should_execute_hook(hook_type, module, True, tid): + ThreadSafe.release() return + if kwargs is None: kwargs = module.msprobe_input_kwargs if hasattr(module, 'msprobe_input_kwargs') else {} with self._no_grad_context(): - BaseHookManager.inner_switch = False + BaseHookManager.inner_switch[tid] = False module.forward_data_collected = True self._add_count(api_name) module_input_output = ModuleForwardInputsOutputs(args=args, kwargs=kwargs, output=None) self.data_collector.update_api_or_module_name(full_name) if getattr(self.config, "online_run_ut", False): - BaseHookManager.inner_switch = False + BaseHookManager.inner_switch[tid] = False + ThreadSafe.release() return self.data_collector.forward_input_data_collect( full_name, @@ -164,79 +173,89 @@ class BaseHookManager(ABC): module_input_output, self._is_recompute ) - BaseHookManager.inner_switch = False + BaseHookManager.inner_switch[tid] = False + ThreadSafe.release() + return forward_pre_hook def _build_forward_hook(self, hook_type, full_name): def forward_hook(module, args, kwargs_or_output, output_or_kwargs=None): - if not self._should_execute_hook(hook_type, module, True): + tid = threading.get_ident() + if not self._should_execute_hook(hook_type, module, True, tid): self._clear_input_kwargs(module) return None - kwargs, output = self._process_kwargs_and_output(module, hook_type, kwargs_or_output, output_or_kwargs) - BaseHookManager.inner_switch = True - self.data_collector.update_api_or_module_name(full_name) - module_input_output = ModuleForwardInputsOutputs(args=args, kwargs=kwargs, output=output) - with self._no_grad_context(): - if getattr(self.config, "online_run_ut", False): - if self.data_collector.scope and not self.data_collector.scope.check(full_name): + + with ThreadSafe(): + kwargs, output = self._process_kwargs_and_output(module, hook_type, kwargs_or_output, output_or_kwargs) + BaseHookManager.inner_switch[tid] = True + self.data_collector.update_api_or_module_name(full_name) + module_input_output = ModuleForwardInputsOutputs(args=args, kwargs=kwargs, output=output) + with self._no_grad_context(): + if getattr(self.config, "online_run_ut", False): + if self.data_collector.scope and not self.data_collector.scope.check(full_name): + return None + if self.attl_manager: + self.attl_manager.attl_send(full_name, args, kwargs, output) + BaseHookManager.inner_switch[tid] = False return None - if self.attl_manager: - self.attl_manager.attl_send(full_name, args, kwargs, output) - BaseHookManager.inner_switch = False - return None - if hook_type == Const.MODULE: - params_dict = self._get_params_dict(module) - setattr(module_input_output, Const.PARAMS, params_dict) - if params_dict: - self._register_param_hook(full_name, module, params_dict) - self.data_collector.update_api_or_module_name(full_name) - self.data_collector.forward_data_collect( - full_name, - module, - self._pid, - module_input_output, - self._is_recompute - ) - self._init_params_grad_info(module, params_dict) - else: - self.data_collector.forward_output_data_collect( - full_name, - module, - self._pid, - module_input_output, - self._is_recompute - ) - self._clear_input_kwargs(module) + if hook_type == Const.MODULE: + params_dict = self._get_params_dict(module) + setattr(module_input_output, Const.PARAMS, params_dict) + if params_dict: + self._register_param_hook(full_name, module, params_dict) + self.data_collector.update_api_or_module_name(full_name) + self.data_collector.forward_data_collect( + full_name, + module, + self._pid, + module_input_output, + self._is_recompute + ) + self._init_params_grad_info(module, params_dict) + else: + self.data_collector.forward_output_data_collect( + full_name, + module, + self._pid, + module_input_output, + self._is_recompute + ) + self._clear_input_kwargs(module) + + if self.data_collector.if_return_forward_new_output(): + forward_new_output = self.data_collector.get_forward_new_output() + BaseHookManager.inner_switch[tid] = False + return forward_new_output - if self.data_collector.if_return_forward_new_output(): - forward_new_output = self.data_collector.get_forward_new_output() - BaseHookManager.inner_switch = False - return forward_new_output + BaseHookManager.inner_switch[tid] = False + return output - BaseHookManager.inner_switch = False - return output return forward_hook def _build_backward_hook(self, hook_type, full_name): def backward_hook(module, grad_input, grad_output): - if not self._should_execute_hook(hook_type, module, False): + tid = threading.get_ident() + if not self._should_execute_hook(hook_type, module, False, tid): return - BaseHookManager.inner_switch = True - self.data_collector.update_api_or_module_name(full_name) - if getattr(self.config, "online_run_ut", False): - BaseHookManager.inner_switch = False - return - need_exchange = self._need_exchange(module) if hook_type == Const.MODULE else True - if need_exchange: - module_input_output = ModuleBackwardInputsOutputs(grad_input=grad_output, grad_output=grad_input) - else: - module_input_output = ModuleBackwardInputsOutputs(grad_input=grad_input, grad_output=grad_output) - self.data_collector.backward_data_collect( + + with ThreadSafe(): + BaseHookManager.inner_switch[tid] = True + self.data_collector.update_api_or_module_name(full_name) + if getattr(self.config, "online_run_ut", False): + BaseHookManager.inner_switch[tid] = False + return + need_exchange = self._need_exchange(module) if hook_type == Const.MODULE else True + if need_exchange: + module_input_output = ModuleBackwardInputsOutputs(grad_input=grad_output, grad_output=grad_input) + else: + module_input_output = ModuleBackwardInputsOutputs(grad_input=grad_input, grad_output=grad_output) + self.data_collector.backward_data_collect( full_name, module, self._pid, module_input_output, self._is_recompute ) - BaseHookManager.inner_switch = False + BaseHookManager.inner_switch[tid] = False + return backward_hook diff --git a/debug/accuracy_tools/msprobe/mindspore/cell_processor.py b/debug/accuracy_tools/msprobe/mindspore/cell_processor.py index e46e07697..ef72ea050 100644 --- a/debug/accuracy_tools/msprobe/mindspore/cell_processor.py +++ b/debug/accuracy_tools/msprobe/mindspore/cell_processor.py @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import threading from collections import OrderedDict from mindspore import Tensor @@ -21,6 +22,8 @@ from mindspore.ops.operations import _inner_ops as inner from msprobe.core.common.const import Const from msprobe.core.common.exceptions import MsprobeException +from msprobe.core.common.runtime import Runtime +from msprobe.core.common.utils import ModuleQueue, ThreadSafe from msprobe.core.data_dump.scope import ModuleRangeScope, MixRangeScope, BaseScope from msprobe.mindspore.common.const import Const as MsConst from msprobe.mindspore.common.log import logger @@ -32,7 +35,6 @@ from msprobe.mindspore.common.utils import ( ) from msprobe.mindspore.debugger.debugger_config import DebuggerConfig from msprobe.mindspore.dump.graph_mode_cell_dump import GraphModeCellDump -from msprobe.core.common.runtime import Runtime def get_cell_construct(construct): @@ -40,13 +42,15 @@ def get_cell_construct(construct): if hasattr(self, 'msprobe_hook'): setattr(self, 'msprobe_input_kwargs', kwargs) return construct(self, *args, **kwargs) + return _construct class CellProcessor: + cell_queue = ModuleQueue() cell_count = {} - cell_stack = [] - api_parent_node = None + cell_stack = {} + api_parent_node = {} module_node = {} cell_bw_hook_kernels = {} cell_backward_pre_hook = [] @@ -65,9 +69,10 @@ class CellProcessor: @classmethod def reset_cell_stats(cls): + cls.cell_queue = ModuleQueue() cls.cell_count = {} - cls.cell_stack = [] - cls.api_parent_node = None + cls.cell_stack = {} + cls.api_parent_node = {} cls.module_node = {} cls.cell_bw_hook_kernels = {} cls.cell_backward_pre_hook = [] @@ -122,6 +127,7 @@ class CellProcessor: GraphModeCellDump(config, cells_and_names_in_graph_mode, strict=False).handle() def build_cell_hook(self, cell_name, build_data_hook): + @ThreadSafe.synchronized def forward_pre_hook(cell, args): index = CellProcessor.set_and_get_calls_number(cell_name) full_forward_name = f'{cell_name}{Const.FORWARD}{Const.SEP}{index}' @@ -146,11 +152,13 @@ class CellProcessor: setattr(cell, 'msprobe_forward_hook', True) def get_backward_hook(backward_data_hook, full_backward_name): + @ThreadSafe.synchronized def backward_hook_fn(cell, grad_input, grad_output): new_output = backward_data_hook(cell, grad_input, grad_output) self.set_construct_info_in_hook(full_backward_name) cell.has_pre_hook_called = False return new_output + return backward_hook_fn enable_hooked = sum( @@ -170,13 +178,14 @@ class CellProcessor: return args + @ThreadSafe.synchronized def forward_hook(cell, args, kwargs_or_output, output_or_kwargs=None): index = CellProcessor.cell_count.get(cell_name, 0) full_forward_name = f'{cell_name}{Const.FORWARD}{Const.SEP}{index}' full_backward_name = f'{cell_name}{Const.BACKWARD}{Const.SEP}{index}' self.set_construct_info_in_hook(full_forward_name) - + hook_set = build_data_hook(BaseScope.Module_Type_Module, full_forward_name) hook_result = hook_set.forward_hook(cell, args, kwargs_or_output, output_or_kwargs) if hook_result is not None: @@ -199,6 +208,7 @@ class CellProcessor: outputs = new_outputs def get_backward_pre_hook(full_backward_name, backward_data_hook): + @ThreadSafe.synchronized def backward_pre_hook_fn(cell, grad_output): cell.has_pre_hook_called = True self.set_construct_info_in_pre_hook(full_backward_name) @@ -206,6 +216,7 @@ class CellProcessor: backward_data_hook(cell, (), grad_output) self.set_construct_info_in_hook(full_backward_name) cell.has_pre_hook_called = False + return backward_pre_hook_fn backward_pre_hook = OrderedDict() @@ -233,18 +244,28 @@ class CellProcessor: return forward_pre_hook def set_construct_info_in_pre_hook(self, full_name): - if self.cell_stack: - CellProcessor.module_node[full_name] = self.cell_stack[-1] + tid = threading.get_ident() + if tid not in self.cell_stack: + CellProcessor.cell_stack[tid] = [] + + if self.cell_stack[tid]: + CellProcessor.module_node[full_name] = self.cell_stack[tid][-1] else: - CellProcessor.module_node[full_name] = None - CellProcessor.cell_stack.append(full_name) - CellProcessor.api_parent_node = full_name + parent_name = CellProcessor.cell_queue.find_last(full_name) + CellProcessor.module_node[full_name] = parent_name + + CellProcessor.cell_queue.add_name(full_name) + CellProcessor.cell_stack[tid].append(full_name) + CellProcessor.api_parent_node[tid] = full_name if self.scope: self.scope.begin_module(full_name) def set_construct_info_in_hook(self, full_name): - if self.cell_stack: - CellProcessor.cell_stack.pop() - CellProcessor.api_parent_node = CellProcessor.cell_stack[-1] if self.cell_stack else None + tid = threading.get_ident() + CellProcessor.api_parent_node[tid] = None + if self.cell_stack.get(tid): + CellProcessor.cell_stack[tid].pop() + if self.cell_stack.get(tid): + CellProcessor.api_parent_node[tid] = CellProcessor.cell_stack[tid][-1] if self.scope: self.scope.end_module(full_name) diff --git a/debug/accuracy_tools/msprobe/mindspore/debugger/precision_debugger.py b/debug/accuracy_tools/msprobe/mindspore/debugger/precision_debugger.py index 05c0bf8e0..bc5bfd284 100644 --- a/debug/accuracy_tools/msprobe/mindspore/debugger/precision_debugger.py +++ b/debug/accuracy_tools/msprobe/mindspore/debugger/precision_debugger.py @@ -20,7 +20,7 @@ import mindspore as ms from mindspore._c_expression import MSContext from msprobe.core.common.const import Const, MsgConst -from msprobe.core.common.utils import check_token_range +from msprobe.core.common.utils import check_token_range, ThreadSafe from msprobe.core.common.runtime import Runtime from msprobe.core.debugger.precision_debugger import BasePrecisionDebugger from msprobe.mindspore.cell_processor import CellProcessor @@ -57,18 +57,14 @@ ConfigParameters = namedtuple("ConfigParameters", ["config_path", "task", "dump_ class PrecisionDebugger(BasePrecisionDebugger): - def __new__(cls, config_path=None, task=None, dump_path=None, - level=None, step=None, opt=None): - if not cls._instance: - cls._instance = super().__new__(cls) - cls._instance.initialized = False - cls._instance.config = None - cls.service = None - cls.first_start = False - return cls._instance - - def __init__(self, config_path=None, task=None, dump_path=None, - level=None, step=None): + def __init__( + self, + config_path=None, + task=None, + dump_path=None, + level=None, + step=None + ): if self.initialized: return set_register_backward_hook_functions() @@ -135,10 +131,11 @@ class PrecisionDebugger(BasePrecisionDebugger): check_token_range(token_range) instance.config.execution_mode = cls._get_execution_mode() if cls._need_service(): - if not instance.service: - instance.service = MindsporeService(instance.config) - instance.config.check_model(model, token_range) - instance.service.start(model, token_range) + with ThreadSafe(): + if not instance.service: + instance.service = MindsporeService(instance.config) + instance.config.check_model(model, token_range) + instance.service.start(model, token_range) else: if not instance.first_start: get_api_register().restore_all_api() @@ -156,14 +153,15 @@ class PrecisionDebugger(BasePrecisionDebugger): if instance.task == Const.GRAD_PROBE: instance.gm.stop() if instance.service: - instance.service.stop() + with ThreadSafe(): + instance.service.stop() else: Runtime.is_running = False if enable_dynamic_kbyk_dump: _dump_stop() if cls._is_kernel_dump() and _msprobe_c: _msprobe_c._PrecisionDebugger().stop() - + @classmethod def step(cls): instance = cls._get_instance() @@ -171,7 +169,8 @@ class PrecisionDebugger(BasePrecisionDebugger): return if instance.service: - instance.service.step() + with ThreadSafe(): + instance.service.step() if is_graph_mode_cell_dump_allowed(instance.config): GraphModeCellDump.step() if enable_dynamic_kbyk_dump: @@ -184,6 +183,7 @@ class PrecisionDebugger(BasePrecisionDebugger): Runtime.step_count += 1 @classmethod + @ThreadSafe.synchronized def monitor(cls, opt): instance = cls._instance if not instance: @@ -193,6 +193,7 @@ class PrecisionDebugger(BasePrecisionDebugger): instance.gm.monitor(opt) @classmethod + @ThreadSafe.synchronized def save(cls, variable, name, save_backward=True): instance = cls._instance if not instance: @@ -221,14 +222,14 @@ class PrecisionDebugger(BasePrecisionDebugger): return False else: return instance.config.task != Const.FREE_BENCHMARK - + @classmethod def _is_kernel_dump(cls): instance = cls._instance if not instance: raise Exception(MsgConst.NOT_CREATED_INSTANCE) return instance.config.level_ori == Const.LEVEL_L2 - + @classmethod def _start_kernel_dump(cls): instance = cls.get_instance() diff --git a/debug/accuracy_tools/msprobe/mindspore/dump/hook_cell/hook_cell.py b/debug/accuracy_tools/msprobe/mindspore/dump/hook_cell/hook_cell.py index 62e14e9f2..dcb17855c 100644 --- a/debug/accuracy_tools/msprobe/mindspore/dump/hook_cell/hook_cell.py +++ b/debug/accuracy_tools/msprobe/mindspore/dump/hook_cell/hook_cell.py @@ -13,15 +13,16 @@ # See the License for the specific language governing permissions and # limitations under the License. +import threading from collections import defaultdict import mindspore as ms from mindspore import nn from msprobe.core.common.runtime import Runtime +from msprobe.core.common.utils import ThreadSafe from msprobe.mindspore.common.utils import is_mindtorch, register_backward_hook_functions - ms_version = ms.__version__ @@ -35,16 +36,17 @@ def get_cell_count(name): def __init__(self, hook_build_func) -> None: super(HOOKCell, self).__init__() - self.changed_status = False self.msprobe_input_kwargs = {} - if not HOOKCell.g_stop_hook: - HOOKCell.g_stop_hook = True - self.changed_status = True + + self.tid = threading.get_ident() + self.stop_hook = HOOKCell.inner_stop_hook.get(self.tid, False) + if not self.stop_hook: self.forward_data_collected = False if not Runtime.is_running: return prefix = self.prefix_api_name if hasattr(self, "prefix_api_name") else "" + ThreadSafe.acquire() if callable(hook_build_func): hook_set = hook_build_func(prefix) if ms_version < "2.6.0" and not is_mindtorch(): @@ -59,21 +61,24 @@ def __init__(self, hook_build_func) -> None: # 重载call,加全局标志。 def __call__(self, *args, **kwargs): + changed = False + if not self.stop_hook: + HOOKCell.inner_stop_hook[self.tid] = True + changed = True try: self.msprobe_input_kwargs = kwargs out = super(HOOKCell, self).__call__(*args, **kwargs) except Exception as e: raise e finally: - if self.changed_status: - self.changed_status = False - HOOKCell.g_stop_hook = False + if changed: + HOOKCell.inner_stop_hook[self.tid] = False return out hook_cell_dict = { "cell_count": defaultdict(int), - "g_stop_hook": False, + "inner_stop_hook": defaultdict(bool), "add_cell_count": staticmethod(add_cell_count), "get_cell_count": staticmethod(get_cell_count), "__init__": __init__, diff --git a/debug/accuracy_tools/msprobe/mindspore/dump/hook_cell/ms_hook_manager.py b/debug/accuracy_tools/msprobe/mindspore/dump/hook_cell/ms_hook_manager.py index 5581a44ca..0a4a39329 100644 --- a/debug/accuracy_tools/msprobe/mindspore/dump/hook_cell/ms_hook_manager.py +++ b/debug/accuracy_tools/msprobe/mindspore/dump/hook_cell/ms_hook_manager.py @@ -13,9 +13,11 @@ # See the License for the specific language governing permissions and # limitations under the License. +import threading + from mindspore.common.api import _no_grad from msprobe.core.common.const import Const -from msprobe.core.common.utils import replace_last_occurrence +from msprobe.core.common.utils import replace_last_occurrence, ThreadSafe from msprobe.core.data_dump.data_processor.base import ModuleBackwardInputs from msprobe.core.hook_manager import BaseHookManager, HookSet from msprobe.mindspore.common.utils import has_kwargs_in_forward_hook @@ -78,11 +80,14 @@ class MindsproeHookManager(BaseHookManager): def backward_pre_hook(module, grad_input): if self.config.level != Const.LEVEL_L2: return - if not self._should_execute_hook(hook_type, module, False): + tid = threading.get_ident() + if not self._should_execute_hook(hook_type, module, False, tid): return - BaseHookManager.inner_switch = True - module_input = ModuleBackwardInputs(grad_input=grad_input) - self.data_collector.update_api_or_module_name(name) - self.data_collector.backward_input_data_collect(name, module, self._pid, module_input) - BaseHookManager.inner_switch = False + + with ThreadSafe(): + BaseHookManager.inner_switch[tid] = True + module_input = ModuleBackwardInputs(grad_input=grad_input) + self.data_collector.update_api_or_module_name(name) + self.data_collector.backward_input_data_collect(name, module, self._pid, module_input) + BaseHookManager.inner_switch[tid] = False return backward_pre_hook diff --git a/debug/accuracy_tools/msprobe/mindspore/dump/hook_cell/primitive_hooks.py b/debug/accuracy_tools/msprobe/mindspore/dump/hook_cell/primitive_hooks.py index 8bf4a94ac..71f218bd5 100644 --- a/debug/accuracy_tools/msprobe/mindspore/dump/hook_cell/primitive_hooks.py +++ b/debug/accuracy_tools/msprobe/mindspore/dump/hook_cell/primitive_hooks.py @@ -14,13 +14,16 @@ # limitations under the License. import os +import threading from mindspore import ops from mindspore.common.tensor import Tensor - -from msprobe.core.common.utils import Const, DumpException -from msprobe.core.data_dump.data_processor.base import (ModuleBackwardInputs, ModuleBackwardOutputs, - ModuleForwardInputsOutputs) +from msprobe.core.common.utils import Const, DumpException, ThreadSafe +from msprobe.core.data_dump.data_processor.base import ( + ModuleBackwardInputs, + ModuleBackwardOutputs, + ModuleForwardInputsOutputs +) from msprobe.core.hook_manager import BaseHookManager from msprobe.mindspore.common.log import logger @@ -56,10 +59,13 @@ class PrimitiveHookService: callable: 反向 hook 函数。 """ + @ThreadSafe.synchronized def backward_hook(grad): + tid = threading.get_ident() + BaseHookManager.inner_switch[tid] = True + captured_grads.extend(grad) backward_primitive_name = f"{updated_primitive_name}{Const.SEP}{Const.BACKWARD}" - self.service_instance.inner_switch = True try: if hook_type == Const.INPUT: self.service_instance.data_collector.update_api_or_module_name(backward_primitive_name) @@ -78,7 +84,7 @@ class PrimitiveHookService: logger.error(f"This is a primitive op {hook_type}_backward dump error: {exception}, " f"updated_primitive_name: {updated_primitive_name}") raise DumpException(DumpException.BACKWARD_DATA_COLLECTION_ERROR) from exception - self.service_instance.inner_switch = False + BaseHookManager.inner_switch[tid] = False return backward_hook @@ -137,9 +143,13 @@ class PrimitiveHookService: return tuple(hooked_outputs) return out + @ThreadSafe.synchronized def pre_forward_hook(primitive_name, primitive_instance, args, kwargs): + tid = threading.get_ident() + BaseHookManager.inner_switch[tid] = True + + self.service_instance.data_collector.update_api_or_module_name(primitive_name) module_input_output = ModuleForwardInputsOutputs(args=args, kwargs=kwargs, output=None) - self.service_instance.inner_switch = True try: self.service_instance.data_collector.forward_input_data_collect( primitive_name, @@ -151,11 +161,15 @@ class PrimitiveHookService: logger.error(f"This is a primitive op dump error during forward input data collection: {exception}, " f"primitive_name: {primitive_name}") raise DumpException(DumpException.FORWARD_DATA_COLLECTION_ERROR) from exception - self.service_instance.inner_switch = False + BaseHookManager.inner_switch[tid] = False + @ThreadSafe.synchronized def post_forward_hook(primitive_name, primitive_instance, args, kwargs, output): + tid = threading.get_ident() + BaseHookManager.inner_switch[tid] = True + + self.service_instance.data_collector.update_api_or_module_name(primitive_name) module_input_output = ModuleForwardInputsOutputs(args=args, kwargs=kwargs, output=output) - self.service_instance.inner_switch = True try: self.service_instance.data_collector.forward_output_data_collect( primitive_name, @@ -167,7 +181,7 @@ class PrimitiveHookService: logger.error(f"This is a primitive op dump error during forward output data collection: {exception}, " f"primitive_name: {primitive_name}") raise DumpException(DumpException.FORWARD_DATA_COLLECTION_ERROR) from exception - self.service_instance.inner_switch = False + BaseHookManager.inner_switch[tid] = False def wrapped_primitive_call(instance_self, *args, **kwargs): """ @@ -185,7 +199,8 @@ class PrimitiveHookService: current_count = self.primitive_counters.get(primitive_name, 0) updated_primitive_name = f"{Const.PRIMITIVE_PREFIX}{Const.SEP}{primitive_name}{Const.SEP}{current_count}" - if not self.service_instance.primitive_switch or BaseHookManager.inner_switch: + tid = threading.get_ident() + if not self.service_instance.primitive_switch or BaseHookManager.inner_switch[tid]: return origin_func(*args, **kwargs) captured_grads_input, captured_grads_output = [], [] @@ -198,8 +213,6 @@ class PrimitiveHookService: raise DumpException(DumpException.INPUT_HOOK_ERROR) from exception forward_primitive_name = f"{updated_primitive_name}{Const.SEP}{Const.FORWARD}" - self.service_instance.data_collector.update_api_or_module_name(forward_primitive_name) - pre_forward_hook(forward_primitive_name, instance_self, hooked_inputs, kwargs) try: out = origin_func(*hooked_inputs, **kwargs) @@ -220,6 +233,7 @@ class PrimitiveHookService: return wrapped_primitive_call + @ThreadSafe.synchronized def update_primitive_counters(self, primitive_name): if primitive_name not in self.primitive_counters: self.primitive_counters[primitive_name] = 0 diff --git a/debug/accuracy_tools/msprobe/mindspore/dump/jit_dump.py b/debug/accuracy_tools/msprobe/mindspore/dump/jit_dump.py index 90565ac6d..5f4564394 100644 --- a/debug/accuracy_tools/msprobe/mindspore/dump/jit_dump.py +++ b/debug/accuracy_tools/msprobe/mindspore/dump/jit_dump.py @@ -13,13 +13,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -from collections import defaultdict import os import types +from collections import defaultdict import mindspore from mindspore import nn from mindspore._c_expression import PyNativeExecutor_ + try: from mindspore.common.api import _MindsporeFunctionExecutor except ImportError: @@ -27,19 +28,21 @@ except ImportError: from msprobe.core.common.log import logger from msprobe.core.common.const import Const +from msprobe.core.common.utils import ThreadSafe from msprobe.core.common.runtime import Runtime from msprobe.core.data_dump.data_processor.base import ModuleForwardInputsOutputs, ModuleBackwardInputsOutputs from msprobe.mindspore.common.const import Const as MsConst from msprobe.mindspore.dump.hook_cell.api_register import get_api_register - _api_register = get_api_register() def dump_jit(name, in_feat, out_feat, is_forward): pid = os.getpid() name = name if name else "JitFunction" - if JitDump.need_dump(): + if not JitDump.need_dump(): + return + with ThreadSafe(): if is_forward: if name in JitDump.jit_count: JitDump.jit_count[name] += 1 diff --git a/debug/accuracy_tools/msprobe/mindspore/mindspore_service.py b/debug/accuracy_tools/msprobe/mindspore/mindspore_service.py index 48c6a41aa..b5ffce6a6 100644 --- a/debug/accuracy_tools/msprobe/mindspore/mindspore_service.py +++ b/debug/accuracy_tools/msprobe/mindspore/mindspore_service.py @@ -39,11 +39,11 @@ else: pijit_label = True -class MindsporeService(BaseService): +class MindsporeService(BaseService): @property def _get_framework_type(self): return Const.MT_FRAMEWORK if is_mindtorch() else Const.MS_FRAMEWORK - + @staticmethod def _get_current_rank(): return get_rank_if_initialized() diff --git a/debug/accuracy_tools/msprobe/pytorch/debugger/precision_debugger.py b/debug/accuracy_tools/msprobe/pytorch/debugger/precision_debugger.py index 8569d1474..0e784dafb 100644 --- a/debug/accuracy_tools/msprobe/pytorch/debugger/precision_debugger.py +++ b/debug/accuracy_tools/msprobe/pytorch/debugger/precision_debugger.py @@ -17,7 +17,7 @@ from torch.utils.data import dataloader from msprobe.core.common.const import Const, MsgConst from msprobe.core.common.exceptions import MsprobeException -from msprobe.core.common.utils import check_token_range +from msprobe.core.common.utils import check_token_range, ThreadSafe from msprobe.core.debugger.precision_debugger import BasePrecisionDebugger from msprobe.pytorch.common.log import logger from msprobe.pytorch.common.utils import check_save_param, is_torch_nn_module @@ -81,6 +81,7 @@ class PrecisionDebugger(BasePrecisionDebugger): return func_wrapper @classmethod + @ThreadSafe.synchronized def start(cls, model=None, token_range=None): instance = cls._get_instance() if instance is None: @@ -95,6 +96,7 @@ class PrecisionDebugger(BasePrecisionDebugger): instance.service.start(instance.model, token_range) @classmethod + @ThreadSafe.synchronized def stop(cls): instance = cls._get_instance() if instance is None: @@ -105,6 +107,7 @@ class PrecisionDebugger(BasePrecisionDebugger): instance.service.stop() @classmethod + @ThreadSafe.synchronized def step(cls): instance = cls._get_instance() if instance is None: @@ -112,6 +115,7 @@ class PrecisionDebugger(BasePrecisionDebugger): cls._instance.service.step() @classmethod + @ThreadSafe.synchronized def monitor(cls, model): if not cls._instance: raise Exception(MsgConst.NOT_CREATED_INSTANCE) @@ -120,6 +124,7 @@ class PrecisionDebugger(BasePrecisionDebugger): cls._instance.gm.monitor(model) @classmethod + @ThreadSafe.synchronized def save(cls, variable, name, save_backward=True): instance = cls._instance if not instance: @@ -143,6 +148,7 @@ class PrecisionDebugger(BasePrecisionDebugger): dataloader._BaseDataLoaderIter.__next__ = self._iter_tracer(dataloader._BaseDataLoaderIter.__next__) +@ThreadSafe.synchronized def module_dump(module, dump_name): if not is_torch_nn_module(module): raise MsprobeException( @@ -164,6 +170,7 @@ def module_dump(module, dump_name): instance.module_dumper.start_module_dump(module, dump_name) +@ThreadSafe.synchronized def module_dump_end(): instance = PrecisionDebugger._instance if not instance: diff --git a/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py b/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py index 5b273c197..6130ee50f 100644 --- a/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py +++ b/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py @@ -13,12 +13,14 @@ # See the License for the specific language governing permissions and # limitations under the License. +import threading from collections import OrderedDict import torch from torch.utils.hooks import BackwardHook, RemovableHandle from msprobe.core.common.const import Const +from msprobe.core.common.utils import ModuleQueue, ThreadSafe from msprobe.core.data_dump.scope import BaseScope, ModuleRangeScope, MixRangeScope from msprobe.pytorch.common.log import logger from msprobe.pytorch.common.utils import is_torch_nn_module, register_forward_pre_hook @@ -46,13 +48,15 @@ def wrap_megatron_deallocate(func): out.data = torch.empty((1,), device=out.device, dtype=out.dtype, ) return func(out_clone, deallocate_pipeline_outputs) return func(out, deallocate_pipeline_outputs) + return wrapper_func class ModuleProcesser: + module_queue = ModuleQueue() module_count = {} - module_stack = [] - api_parent_node = "" + module_stack = {} + api_parent_node = {} module_node = {} module_bw_hook_kernels = {} module_with_backward_hook = {} @@ -103,9 +107,10 @@ class ModuleProcesser: @classmethod def reset_module_stats(cls): + cls.module_queue = ModuleQueue() cls.module_count = {} - cls.module_stack = [] - cls.api_parent_node = "" + cls.module_stack = {} + cls.api_parent_node = {} cls.module_node = {} cls.module_bw_hook_kernels = {} cls.enable_module_dump = False @@ -144,6 +149,7 @@ class ModuleProcesser: register_forward_pre_hook(module, forward_pre_hook) def build_module_hook(self, module_name, build_data_hook): + @ThreadSafe.synchronized def forward_pre_hook(module, args, kwargs=None): if kwargs is None: kwargs = {} @@ -171,15 +177,19 @@ class ModuleProcesser: hook_set = build_data_hook(BaseScope.Module_Type_Module, full_forward_name) def get_backward_pre_hook(full_backward_name): + @ThreadSafe.synchronized def backward_pre_hook_fn(module, grad_output): self.set_construct_info_in_pre_hook(full_backward_name) + return backward_pre_hook_fn def get_backward_hook(backward_data_hook, full_backward_name): + @ThreadSafe.synchronized def backward_hook_fn(module, grad_input, grad_output): new_output = backward_data_hook(module, grad_input, grad_output) self.set_construct_info_in_hook(full_backward_name, is_forward=False) return new_output + return backward_hook_fn if not ModuleProcesser.module_with_backward_hook.get(module_name): @@ -193,6 +203,7 @@ class ModuleProcesser: args = bw_hook.setup_input_hook(args) return (args, kwargs) if torch_version_above_or_equal_2 else args + @ThreadSafe.synchronized def forward_hook(module, args, kwargs_or_output, output_or_kwargs=None): if hasattr(module, 'msprobe_module_dump') and not self.enable_module_dump: return output_or_kwargs if torch_version_above_or_equal_2 else kwargs_or_output @@ -218,23 +229,34 @@ class ModuleProcesser: return forward_pre_hook def set_construct_info_in_pre_hook(self, full_name): - if self.module_stack: - ModuleProcesser.module_node[full_name] = self.module_stack[-1] + tid = threading.get_ident() + if tid not in self.module_stack: + ModuleProcesser.module_stack[tid] = [] + + if self.module_stack[tid]: + ModuleProcesser.module_node[full_name] = self.module_stack[tid][-1] else: - ModuleProcesser.module_node[full_name] = None - ModuleProcesser.module_stack.append(full_name) - ModuleProcesser.api_parent_node = full_name + parent_name = ModuleProcesser.module_queue.find_last(full_name) + ModuleProcesser.module_node[full_name] = parent_name + + ModuleProcesser.module_queue.add_name(full_name) + ModuleProcesser.module_stack[tid].append(full_name) + ModuleProcesser.api_parent_node[tid] = full_name if self.scope: self.scope.begin_module(full_name) def set_construct_info_in_hook(self, full_name, is_forward=True): + tid = threading.get_ident() if torch_version_above_or_equal_2 or is_forward: - if self.module_stack: - ModuleProcesser.module_stack.pop() - ModuleProcesser.api_parent_node = ModuleProcesser.module_stack[-1] if self.module_stack else None + ModuleProcesser.module_queue.remove_name(full_name) + ModuleProcesser.api_parent_node[tid] = None + if self.module_stack.get(tid): + ModuleProcesser.module_stack[tid].pop() + if self.module_stack.get(tid): + ModuleProcesser.api_parent_node[tid] = ModuleProcesser.module_stack[tid][-1] if self.scope: self.scope.end_module(full_name) else: if self.scope: self.scope.begin_module(full_name) - ModuleProcesser.api_parent_node = full_name + ModuleProcesser.api_parent_node[tid] = full_name diff --git a/debug/accuracy_tools/msprobe/pytorch/hook_module/hook_module.py b/debug/accuracy_tools/msprobe/pytorch/hook_module/hook_module.py index 0a55f6a9d..5a1450a0d 100644 --- a/debug/accuracy_tools/msprobe/pytorch/hook_module/hook_module.py +++ b/debug/accuracy_tools/msprobe/pytorch/hook_module/hook_module.py @@ -22,20 +22,19 @@ import torch.nn as nn import torch.utils.hooks as full_hooks from msprobe.core.common.runtime import Runtime +from msprobe.core.common.utils import ThreadSafe from msprobe.pytorch.common.utils import is_float8_tensor, register_forward_pre_hook, register_forward_hook class HOOKModule(nn.Module): module_count = defaultdict(int) - inner_stop_hook = {} + inner_stop_hook = defaultdict(bool) def __init__(self, hook_build_func) -> None: super(HOOKModule, self).__init__() self.has_overflow = False - self.current_thread = threading.current_thread().ident - if self.current_thread not in HOOKModule.inner_stop_hook: - HOOKModule.inner_stop_hook[self.current_thread] = False - self.stop_hook = HOOKModule.inner_stop_hook.get(self.current_thread, False) + self.tid = threading.get_ident() + self.stop_hook = HOOKModule.inner_stop_hook.get(self.tid, False) if not self.stop_hook: self.forward_data_collected = False @@ -43,6 +42,7 @@ class HOOKModule(nn.Module): if not Runtime.is_running: return prefix = self.prefix_api_name if hasattr(self, "prefix_api_name") else "" + ThreadSafe.acquire() if callable(hook_build_func): hook_set = hook_build_func(prefix) register_forward_pre_hook(self, hook_set.forward_pre_hook) @@ -52,11 +52,11 @@ class HOOKModule(nn.Module): def __call__(self, *args, **kwargs): changed = False if not self.stop_hook: - HOOKModule.inner_stop_hook[self.current_thread] = True + HOOKModule.inner_stop_hook[self.tid] = True changed = True result = self._call_func(*args, **kwargs) if changed: - HOOKModule.inner_stop_hook[self.current_thread] = False + HOOKModule.inner_stop_hook[self.tid] = False return result @staticmethod diff --git a/debug/accuracy_tools/msprobe/pytorch/hook_module/pt_hook_manager.py b/debug/accuracy_tools/msprobe/pytorch/hook_module/pt_hook_manager.py index 413ad3da0..3c2a13215 100644 --- a/debug/accuracy_tools/msprobe/pytorch/hook_module/pt_hook_manager.py +++ b/debug/accuracy_tools/msprobe/pytorch/hook_module/pt_hook_manager.py @@ -23,7 +23,7 @@ from msprobe.pytorch.common.utils import is_recomputation, torch_version_above_o from msprobe.pytorch.hook_module.hook_module import HOOKModule -class PytorchHookManager(BaseHookManager): +class PytorchHookManager(BaseHookManager): @property def _is_recompute(self): return is_recomputation() @@ -41,7 +41,7 @@ class PytorchHookManager(BaseHookManager): kwargs = kwargs_or_output if torch_version_above_or_equal_2 else {} output = output_or_kwargs if torch_version_above_or_equal_2 else kwargs_or_output return kwargs, output - + def build_hook(self, hook_type, name): if hook_type == Const.API: full_forward_name = name + str(HOOKModule.get_module_count(name)) + Const.SEP + Const.FORWARD @@ -51,10 +51,10 @@ class PytorchHookManager(BaseHookManager): hookset = HookSet( forward_hook=self._build_forward_hook(hook_type, full_forward_name), forward_pre_hook=self._build_forward_pre_hook(hook_type, full_forward_name, name), - backward_hook=self._build_backward_hook(hook_type, full_backward_name) + backward_hook=self._build_backward_hook(hook_type, full_backward_name) ) return hookset - + def _need_exchange(self, module): return True @@ -62,7 +62,7 @@ class PytorchHookManager(BaseHookManager): params_dict = {} if self.config.task != Const.STRUCTURE: params_dict = { - key.split(Const.SEP)[-1]: value - for key, value in module.named_parameters(recurse=False) - } + key.split(Const.SEP)[-1]: value + for key, value in module.named_parameters(recurse=False) + } return params_dict diff --git a/debug/accuracy_tools/msprobe/test/core_ut/data_dump/test_data_collector.py b/debug/accuracy_tools/msprobe/test/core_ut/data_dump/test_data_collector.py index 6be254530..b93a122ac 100644 --- a/debug/accuracy_tools/msprobe/test/core_ut/data_dump/test_data_collector.py +++ b/debug/accuracy_tools/msprobe/test/core_ut/data_dump/test_data_collector.py @@ -14,6 +14,7 @@ # limitations under the License. import os + import unittest from unittest.mock import patch, mock_open, MagicMock @@ -253,21 +254,6 @@ class TestDataCollector(unittest.TestCase): self.data_collector.module_processor.module_node ) - def test_update_construct_without_module_prefix(self): - self.data_collector.module_processor = MagicMock() - self.data_collector.data_writer = MagicMock() - self.data_collector.config.level = "mix" - self.data_collector.optimizer_status = "other_status" - self.data_collector.module_processor.api_parent_node = "parent_node" - test_name = "api_name" - - self.data_collector.update_construct(test_name) - calls = [ - unittest.mock.call({"api_name": "parent_node"}), - unittest.mock.call(self.data_collector.module_processor.module_node) - ] - self.data_collector.data_writer.update_construct.assert_has_calls(calls) - def test_handle_data(self): with patch.object(DataCollector, "update_data") as mock_update_data, \ patch.object(DataCollector, "write_json") as mock_write_json, \ diff --git a/debug/accuracy_tools/msprobe/test/core_ut/test_hook_manager.py b/debug/accuracy_tools/msprobe/test/core_ut/test_hook_manager.py index 68239bc7f..f03a7d889 100644 --- a/debug/accuracy_tools/msprobe/test/core_ut/test_hook_manager.py +++ b/debug/accuracy_tools/msprobe/test/core_ut/test_hook_manager.py @@ -13,9 +13,13 @@ # See the License for the specific language governing permissions and # limitations under the License. +import threading + import unittest from unittest.mock import MagicMock, patch + from msprobe.core.common.const import Const +from msprobe.core.common.utils import ThreadSafe from msprobe.core.common.runtime import Runtime from msprobe.core.hook_manager import BaseHookManager @@ -25,25 +29,25 @@ class TestBaseHookManager(unittest.TestCase): @property def _is_recompute(self): return False - + @staticmethod def _no_grad_context(): return MagicMock() - + @staticmethod def _add_count(name): pass - + @staticmethod def _process_kwargs_and_output(module, hook_type, kwargs_or_output, output_or_kwargs): return {"kwargs": kwargs_or_output}, output_or_kwargs - + def build_hook(self): pass - + def _get_params_dict(self, module): return {} - + def _need_exchange(self, module): return False @@ -53,91 +57,93 @@ class TestBaseHookManager(unittest.TestCase): self.mock_config.data_mode = ["all"] self.mock_attl_manager = MagicMock() self.manager = self.MockBaseHookManager( - self.mock_data_collector, - self.mock_config, + self.mock_data_collector, + self.mock_config, self.mock_attl_manager ) - BaseHookManager.inner_switch = False + BaseHookManager.inner_switch[threading.get_ident()] = False BaseHookManager.hook_handle_dict = {} BaseHookManager.params_grad_info = {} - + def test_init(self): self.assertEqual(self.manager.data_collector, self.mock_data_collector) self.assertEqual(self.manager.config, self.mock_config) self.assertEqual(self.manager.attl_manager, self.mock_attl_manager) - + def test_should_execute_hook_conditions(self): module = MagicMock() module.forward_data_collected = True Runtime.is_running = True self.mock_data_collector.data_processor.is_terminated = False - self.assertTrue(self.manager._should_execute_hook(Const.MODULE, module, True)) - self.assertTrue(self.manager._should_execute_hook(Const.API, module, False)) - + self.assertTrue(self.manager._should_execute_hook(Const.MODULE, module, True, threading.get_ident())) + self.assertTrue(self.manager._should_execute_hook(Const.API, module, False, threading.get_ident())) + Runtime.is_running = False - self.assertFalse(self.manager._should_execute_hook(Const.MODULE, module, True)) - + self.assertFalse(self.manager._should_execute_hook(Const.MODULE, module, True, threading.get_ident())) + Runtime.is_running = True module.forward_data_collected = False - self.assertFalse(self.manager._should_execute_hook(Const.API, module, False)) - - BaseHookManager.inner_switch = True - self.assertFalse(self.manager._should_execute_hook(Const.MODULE, module, True)) - + self.assertFalse(self.manager._should_execute_hook(Const.API, module, False, threading.get_ident())) + + BaseHookManager.inner_switch[threading.get_ident()] = True + self.assertFalse(self.manager._should_execute_hook(Const.MODULE, module, True, threading.get_ident())) + self.mock_data_collector.data_processor.is_terminated = True - BaseHookManager.inner_switch = False - self.assertFalse(self.manager._should_execute_hook(Const.MODULE, module, True)) - self.assertFalse(self.manager._should_execute_hook(Const.API, module, True)) - + BaseHookManager.inner_switch[threading.get_ident()] = False + self.assertFalse(self.manager._should_execute_hook(Const.MODULE, module, True, threading.get_ident())) + self.assertFalse(self.manager._should_execute_hook(Const.API, module, True, threading.get_ident())) + def test_clear_input_kwargs(self): module = MagicMock() module.msprobe_input_kwargs = {"key": "value"} self.manager._clear_input_kwargs(module) self.assertFalse(hasattr(module, 'msprobe_input_kwargs')) - + def test_register_param_hook(self): module = MagicMock() params = {"param1": MagicMock(requires_grad=True)} full_name = "module.forward" - + with patch.object(self.manager, '_build_grad_hook') as mock_build: self.manager._register_param_hook(full_name, module, params) - + self.assertEqual(len(BaseHookManager.hook_handle_dict), 1) self.assertTrue("module.param1" in BaseHookManager.hook_handle_dict) - + self.assertEqual(module.params_grad_name, "module.parameters_grad") - + def test_init_params_grad_info(self): module = MagicMock() module.params_grad_name = "grad_name" params = {"param1": MagicMock(requires_grad=True)} - + self.manager._init_params_grad_info(module, params) self.mock_data_collector.handle_data.assert_called() self.assertTrue(BaseHookManager.params_grad_info.get("grad_name")) - + self.manager._init_params_grad_info(module, params) self.mock_data_collector.handle_data.assert_called_once() - @patch.object(BaseHookManager, "_should_execute_hook") - def test_forward_pre_hook_behavior(self, mock_should_execute_hook): + @patch.object(ThreadSafe, "release") + @patch.object(BaseHookManager, "_should_execute_hook") + def test_forward_pre_hook_behavior(self, mock_should_execute_hook, mock_release): mock_should_execute_hook.return_value = True + mock_release.return_value = None self.manager.config.online_run_ut = None hook = self.manager._build_forward_pre_hook(Const.API, "api_name", "func_name") module = MagicMock() module.msprobe_input_kwargs = {"kwarg": "value"} args = (1, 2) - + Runtime.is_running = True module.forward_data_collected = True self.mock_data_collector.data_processor.is_terminated = False - + with patch.object(self.manager, '_no_grad_context') as mock_ctx: hook(module, args) self.mock_data_collector.forward_input_data_collect.assert_called_once() self.assertEqual(module.forward_data_collected, True) - + @patch.object(BaseHookManager, "_should_execute_hook") def test_forward_hook_behavior(self, mock_should_execute_hook): mock_should_execute_hook.return_value = True @@ -146,11 +152,11 @@ class TestBaseHookManager(unittest.TestCase): args = (1, 2) kwargs = {"kwargs": []} output = MagicMock() - + self.manager.config.online_run_ut = True hook(module, args, output) self.mock_attl_manager.attl_send.assert_called_once() - + self.manager.config.online_run_ut = None self.mock_data_collector.if_return_forward_new_output.return_value = False with patch.object(self.manager, '_get_params_dict', return_value={}): @@ -158,14 +164,14 @@ class TestBaseHookManager(unittest.TestCase): self.assertEqual(result, output) self.mock_data_collector.forward_data_collect.assert_called_once() self.mock_data_collector.get_forward_new_output.assert_not_called() - + self.mock_data_collector.if_return_forward_new_output.return_value = True self.mock_data_collector.get_forward_new_output.return_value = "new_output" with patch.object(self.manager, '_get_params_dict', return_value={}): result = hook(module, args, output) self.assertEqual(result, "new_output") - @patch.object(BaseHookManager, "_should_execute_hook") + @patch.object(BaseHookManager, "_should_execute_hook") def test_backward_hook_behavior(self, mock_should_execute_hook): mock_should_execute_hook.return_value = True self.manager.config.online_run_ut = None @@ -173,11 +179,11 @@ class TestBaseHookManager(unittest.TestCase): module = MagicMock() grad_input = (MagicMock(),) grad_output = (MagicMock(),) - + module.forward_data_collected = True Runtime.is_running = True hook(module, grad_input, grad_output) - + self.mock_data_collector.backward_data_collect.assert_called_once() with patch.object(self.manager, '_need_exchange', return_value=True): diff --git a/debug/accuracy_tools/msprobe/test/mindspore_ut/hook_module/test_ms_hook_manager.py b/debug/accuracy_tools/msprobe/test/mindspore_ut/hook_module/test_ms_hook_manager.py index 2b1eaa1b8..49247535f 100644 --- a/debug/accuracy_tools/msprobe/test/mindspore_ut/hook_module/test_ms_hook_manager.py +++ b/debug/accuracy_tools/msprobe/test/mindspore_ut/hook_module/test_ms_hook_manager.py @@ -13,11 +13,14 @@ # See the License for the specific language governing permissions and # limitations under the License. +import threading + import unittest from unittest.mock import MagicMock, patch -from msprobe.mindspore.dump.hook_cell.ms_hook_manager import MindsproeHookManager + from msprobe.core.common.const import Const from msprobe.core.hook_manager import HookSet, BaseHookManager +from msprobe.mindspore.dump.hook_cell.ms_hook_manager import MindsproeHookManager class TestMindsproeHookManager(unittest.TestCase): @@ -28,14 +31,14 @@ class TestMindsproeHookManager(unittest.TestCase): self.mock_config.task = "statistics" self.mock_config.level = Const.LEVEL_L1 self.manager = MindsproeHookManager( - self.mock_data_collector, + self.mock_data_collector, self.mock_config ) - BaseHookManager.inner_switch = False + BaseHookManager.inner_switch[threading.get_ident()] = False def test_properties(self): self.assertIsNone(self.manager._is_recompute) - + with patch('msprobe.mindspore.dump.hook_cell.ms_hook_manager._no_grad') as mock_no_grad: ctx = self.manager._no_grad_context() mock_no_grad.assert_called_once() @@ -48,13 +51,13 @@ class TestMindsproeHookManager(unittest.TestCase): def test_process_kwargs_and_output(self): mock_module = MagicMock() mock_module.msprobe_input_kwargs = {"kw1": "v1"} - + kwargs, output = self.manager._process_kwargs_and_output( mock_module, Const.API, "output_value", "ignored" ) self.assertEqual(kwargs, {"kw1": "v1"}) self.assertEqual(output, "output_value") - + with patch('msprobe.mindspore.dump.hook_cell.ms_hook_manager.has_kwargs_in_forward_hook', return_value=True): kwargs, output = self.manager._process_kwargs_and_output( mock_module, Const.MODULE, "kwargs_value", "output_value" @@ -63,14 +66,14 @@ class TestMindsproeHookManager(unittest.TestCase): self.assertEqual(output, "output_value") def test_build_hook(self): - hookset = self.manager.build_hook(Const.API, "test_api") - self.assertIsInstance(hookset, HookSet) - self.assertEqual(hookset.forward_hook.__name__, "forward_hook") - self.assertEqual(hookset.forward_pre_hook.__name__, "forward_pre_hook") - self.assertEqual(hookset.backward_hook.__name__, "backward_hook") - self.assertEqual(hookset.backward_pre_hook.__name__, "backward_pre_hook") - hookset = self.manager.build_hook(Const.MODULE, "test_module") - self.assertEqual(hookset.forward_pre_hook.__name__, "forward_pre_hook") + hookset = self.manager.build_hook(Const.API, "test_api") + self.assertIsInstance(hookset, HookSet) + self.assertEqual(hookset.forward_hook.__name__, "forward_hook") + self.assertEqual(hookset.forward_pre_hook.__name__, "forward_pre_hook") + self.assertEqual(hookset.backward_hook.__name__, "backward_hook") + self.assertEqual(hookset.backward_pre_hook.__name__, "backward_pre_hook") + hookset = self.manager.build_hook(Const.MODULE, "test_module") + self.assertEqual(hookset.forward_pre_hook.__name__, "forward_pre_hook") def test_need_exchange(self): mock_module = MagicMock() @@ -89,7 +92,7 @@ class TestMindsproeHookManager(unittest.TestCase): self.mock_config.task = Const.STRUCTURE params_dict = self.manager._get_params_dict(mock_module) self.assertEqual(params_dict, {}) - + self.mock_config.task = "statistics" mock_params = { "test_module.weight": "w1", @@ -102,28 +105,28 @@ class TestMindsproeHookManager(unittest.TestCase): def test_build_backward_pre_hook(self): hook_fn = self.manager._build_backward_pre_hook(Const.MODULE, "test_module_backward") - + mock_module = MagicMock() mock_grad_input = ("grad1", "grad2") - + with patch.object(self.manager, '_should_execute_hook', return_value=False): hook_fn(mock_module, mock_grad_input) self.mock_data_collector.backward_input_data_collect.assert_not_called() - + self.mock_config.level = Const.LEVEL_L2 with patch.object(self.manager, '_should_execute_hook', return_value=True): hook_fn(mock_module, mock_grad_input) - + self.mock_data_collector.update_api_or_module_name.assert_called_with("test_module_backward") self.mock_data_collector.backward_input_data_collect.assert_called_once() call_args = self.mock_data_collector.backward_input_data_collect.call_args[0] module_input = call_args[3] self.assertEqual(module_input.grad_input, mock_grad_input) - - self.assertFalse(BaseHookManager.inner_switch) - + + self.assertFalse(BaseHookManager.inner_switch[threading.get_ident()]) + self.mock_config.level = Const.LEVEL_L1 with patch.object(self.manager, '_should_execute_hook', return_value=True): hook_fn(mock_module, mock_grad_input) - self.mock_data_collector.backward_input_data_collect.assert_called_once() + self.mock_data_collector.backward_input_data_collect.assert_called_once() diff --git a/debug/accuracy_tools/msprobe/test/mindspore_ut/test_cell_processor.py b/debug/accuracy_tools/msprobe/test/mindspore_ut/test_cell_processor.py index e9848e7e4..73f829f54 100644 --- a/debug/accuracy_tools/msprobe/test/mindspore_ut/test_cell_processor.py +++ b/debug/accuracy_tools/msprobe/test/mindspore_ut/test_cell_processor.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +import threading + import unittest from unittest.mock import MagicMock, patch @@ -85,8 +87,8 @@ class TestCellProcessor(unittest.TestCase): def test_reset_cell_stats(self): CellProcessor.cell_count['cell'] = 0 - CellProcessor.cell_stack.append('cell') - CellProcessor.api_parent_node = 'cell' + CellProcessor.cell_stack['tid'] = 'cell' + CellProcessor.api_parent_node['tid'] = 'cell' CellProcessor.module_node['cell'] = 'null' CellProcessor.cell_bw_hook_kernels['cell'] = 'bw' CellProcessor.cell_backward_pre_hook.append('backward_pre_hook') @@ -94,8 +96,8 @@ class TestCellProcessor(unittest.TestCase): CellProcessor.reset_cell_stats() self.assertEqual(CellProcessor.cell_count, {}) - self.assertEqual(CellProcessor.cell_stack, []) - self.assertIsNone(CellProcessor.api_parent_node) + self.assertEqual(CellProcessor.cell_stack, {}) + self.assertEqual(CellProcessor.api_parent_node, {}) self.assertEqual(CellProcessor.module_node, {}) self.assertEqual(CellProcessor.cell_bw_hook_kernels, {}) self.assertEqual(CellProcessor.cell_backward_pre_hook, []) @@ -182,7 +184,7 @@ class TestCellProcessor(unittest.TestCase): with patch.object(_inner_ops, 'CellBackwardHook') as mock_CellBackwardHook: forward_pre_hook = self.processor.build_cell_hook(cell_name, mock_build_data_hook) - forward_hook = forward_pre_hook.__closure__[2].cell_contents + forward_hook = forward_pre_hook.__closure__[1].cell_contents.__closure__[2].cell_contents mock_bw = mock_CellBackwardHook.return_value mock_bw.return_value = (Tensor([0.0]),) @@ -193,8 +195,8 @@ class TestCellProcessor(unittest.TestCase): # call testing function - forward_pre_hook ret = forward_pre_hook(mock_cell, args) self.assertIsNone(CellProcessor.module_node[full_forward_name]) - self.assertEqual(CellProcessor.cell_stack, [full_forward_name]) - self.assertEqual(CellProcessor.api_parent_node, full_forward_name) + self.assertEqual(CellProcessor.cell_stack[threading.get_ident()], [full_forward_name]) + self.assertEqual(CellProcessor.api_parent_node[threading.get_ident()], full_forward_name) self.scope.begin_module.assert_called_with(full_forward_name) mock_build_data_hook.assert_called_with('Module', full_forward_name) self.assertEqual(len(CellProcessor.cell_backward_hook), 1) @@ -211,8 +213,8 @@ class TestCellProcessor(unittest.TestCase): ret = backward_hook(mock_cell, grad_input, grad_output) mock_backward_data_hook.assert_called_with(mock_cell, grad_input, grad_output) self.assertFalse(mock_cell.has_pre_hook_called) - self.assertEqual(CellProcessor.cell_stack, []) - self.assertIsNone(CellProcessor.api_parent_node) + self.assertEqual(CellProcessor.cell_stack[threading.get_ident()], []) + self.assertIsNone(CellProcessor.api_parent_node[threading.get_ident()]) self.scope.end_module.assert_called_with(full_backward_name) self.assertTrue((ret[0] == target_grad_output[0]).all()) @@ -222,16 +224,16 @@ class TestCellProcessor(unittest.TestCase): # call testing function - forward_pre_hook ret = forward_pre_hook(mock_cell, args) self.assertIsNone(CellProcessor.module_node[full_forward_name]) - self.assertEqual(CellProcessor.cell_stack, [full_forward_name]) - self.assertEqual(CellProcessor.api_parent_node, full_forward_name) + self.assertEqual(CellProcessor.cell_stack[threading.get_ident()], [full_forward_name]) + self.assertEqual(CellProcessor.api_parent_node[threading.get_ident()], full_forward_name) self.scope.begin_module.assert_called_with(full_forward_name) self.assertEqual(len(CellProcessor.cell_backward_hook), 1) mock_build_data_hook.assert_not_called() full_forward_name = f'{cell_name}{Const.FORWARD}.0' CellProcessor.cell_count = {cell_name: 0} - CellProcessor.cell_stack = [full_forward_name] - CellProcessor.api_parent_node = full_forward_name + CellProcessor.cell_stack[threading.get_ident()] = [full_forward_name] + CellProcessor.api_parent_node[threading.get_ident()] = full_forward_name CellProcessor.module_node = {full_forward_name: None} self.scope.reset_mock() mock_CellBackwardHook.reset_mock() @@ -249,8 +251,8 @@ class TestCellProcessor(unittest.TestCase): # call testing function - forward_hook ret = forward_hook(mock_cell, args, output) self.assertEqual(CellProcessor.cell_count.get(cell_name), 0) - self.assertEqual(CellProcessor.cell_stack, []) - self.assertIsNone(CellProcessor.api_parent_node) + self.assertEqual(CellProcessor.cell_stack[threading.get_ident()], []) + self.assertIsNone(CellProcessor.api_parent_node[threading.get_ident()]) self.scope.end_module.assert_called_with(full_forward_name) self.assertEqual(mock_bw.call_count, 2) self.assertEqual(mock_bw.call_args_list[0][0][0], output) @@ -266,16 +268,16 @@ class TestCellProcessor(unittest.TestCase): ret = backward_pre_hook(mock_cell, grad_output) self.assertTrue(mock_cell.has_pre_hook_called) self.scope.begin_module.assert_called_with(full_backward_name) - self.assertEqual(CellProcessor.cell_stack, [full_backward_name]) - self.assertEqual(CellProcessor.api_parent_node, full_backward_name) + self.assertEqual(CellProcessor.cell_stack[threading.get_ident()], [full_backward_name]) + self.assertEqual(CellProcessor.api_parent_node[threading.get_ident()], full_backward_name) self.assertEqual(CellProcessor.module_node, {full_forward_name: None, full_backward_name: None}) self.scope.begin_module.assert_called_with(full_backward_name) mock_backward_data_hook.assert_not_called() self.assertIsNone(ret) CellProcessor.cell_count = {cell_name: 0} - CellProcessor.cell_stack = [full_forward_name] - CellProcessor.api_parent_node = full_forward_name + CellProcessor.cell_stack[threading.get_ident()] = [full_forward_name] + CellProcessor.api_parent_node[threading.get_ident()] = full_forward_name CellProcessor.module_node = {full_forward_name: None} mock_bw.reset_mock() args = (Tensor([1.0]),) @@ -290,8 +292,8 @@ class TestCellProcessor(unittest.TestCase): self.assertTrue((ret[0] == target_output[0]).all()) CellProcessor.cell_count = {cell_name: 0} - CellProcessor.cell_stack = [full_forward_name] - CellProcessor.api_parent_node = full_forward_name + CellProcessor.cell_stack[threading.get_ident()] = [full_forward_name] + CellProcessor.api_parent_node[threading.get_ident()] = full_forward_name CellProcessor.module_node = {full_forward_name: None} CellProcessor.cell_bw_hook_kernels.clear() CellProcessor.cell_backward_pre_hook.clear() @@ -313,8 +315,8 @@ class TestCellProcessor(unittest.TestCase): self.assertFalse(mock_cell.has_pre_hook_called) self.scope.begin_module.assert_called_with(full_backward_name) mock_backward_data_hook.assert_called_with(mock_cell, (), grad_output) - self.assertEqual(CellProcessor.cell_stack, []) - self.assertIsNone(CellProcessor.api_parent_node) + self.assertEqual(CellProcessor.cell_stack[threading.get_ident()], []) + self.assertIsNone(CellProcessor.api_parent_node[threading.get_ident()]) self.assertEqual(CellProcessor.module_node, {full_forward_name: None, full_backward_name: None}) self.scope.end_module.assert_called_with(full_backward_name) self.assertIsNone(ret) @@ -325,15 +327,15 @@ class TestCellProcessor(unittest.TestCase): CellProcessor.reset_cell_stats() self.processor.set_construct_info_in_pre_hook('full_name') self.assertEqual(CellProcessor.module_node['full_name'], None) - self.assertEqual(CellProcessor.cell_stack, ['full_name']) - self.assertEqual(CellProcessor.api_parent_node, 'full_name') + self.assertEqual(CellProcessor.cell_stack[threading.get_ident()], ['full_name']) + self.assertEqual(CellProcessor.api_parent_node[threading.get_ident()], 'full_name') self.scope.begin_module.assert_called_with('full_name') self.scope.begin_module.reset_mock() self.processor.set_construct_info_in_pre_hook('sub_cell_name') self.assertEqual(CellProcessor.module_node, {'full_name': None, 'sub_cell_name': 'full_name'}) - self.assertEqual(CellProcessor.cell_stack, ['full_name', 'sub_cell_name']) - self.assertEqual(CellProcessor.api_parent_node, 'sub_cell_name') + self.assertEqual(CellProcessor.cell_stack[threading.get_ident()], ['full_name', 'sub_cell_name']) + self.assertEqual(CellProcessor.api_parent_node[threading.get_ident()], 'sub_cell_name') self.scope.begin_module.assert_called_with('sub_cell_name') CellProcessor.reset_cell_stats() @@ -341,21 +343,21 @@ class TestCellProcessor(unittest.TestCase): def test_set_construct_info_in_hook(self): CellProcessor.reset_cell_stats() self.processor.set_construct_info_in_hook('full_name') - self.assertIsNone(CellProcessor.api_parent_node) + self.assertIsNone(CellProcessor.api_parent_node[threading.get_ident()]) self.scope.end_module.assert_called_with('full_name') self.scope.end_module.reset_mock() - CellProcessor.cell_stack = ['full_name'] + CellProcessor.cell_stack[threading.get_ident()] = ['full_name'] self.processor.set_construct_info_in_hook('full_name') - self.assertEqual(CellProcessor.cell_stack, []) - self.assertIsNone(CellProcessor.api_parent_node) + self.assertEqual(CellProcessor.cell_stack, {threading.get_ident(): []}) + self.assertIsNone(CellProcessor.api_parent_node[threading.get_ident()]) self.scope.end_module.assert_called_with('full_name') self.scope.end_module.reset_mock() - CellProcessor.cell_stack = ['Cell.0', 'Cell.1'] + CellProcessor.cell_stack[threading.get_ident()] = ['Cell.0', 'Cell.1'] self.processor.set_construct_info_in_hook('full_name') - self.assertEqual(CellProcessor.cell_stack, ['Cell.0']) - self.assertEqual(CellProcessor.api_parent_node, 'Cell.0') + self.assertEqual(CellProcessor.cell_stack, {threading.get_ident():['Cell.0']}) + self.assertEqual(CellProcessor.api_parent_node[threading.get_ident()], 'Cell.0') self.scope.end_module.assert_called_with('full_name') CellProcessor.reset_cell_stats() diff --git a/debug/accuracy_tools/msprobe/test/pytorch_ut/debugger/test_pt_precision_debugger.py b/debug/accuracy_tools/msprobe/test/pytorch_ut/debugger/test_pt_precision_debugger.py index 249432717..69df2c892 100644 --- a/debug/accuracy_tools/msprobe/test/pytorch_ut/debugger/test_pt_precision_debugger.py +++ b/debug/accuracy_tools/msprobe/test/pytorch_ut/debugger/test_pt_precision_debugger.py @@ -108,6 +108,7 @@ class TestPrecisionDebugger(unittest.TestCase): self.assertIsNone(checked_start) def test_start_statistics(self): + PrecisionDebugger._instance = None with patch.object(BasePrecisionDebugger, "_parse_config_path", return_value=(self.statistics_common_config, self.statistics_task_config)): debugger = PrecisionDebugger(dump_path="./dump_path") @@ -143,6 +144,7 @@ class TestPrecisionDebugger(unittest.TestCase): self.assertIsNone(checked_stop) def test_stop_statistics(self): + PrecisionDebugger._instance = None debugger = PrecisionDebugger(dump_path="./dump_path") debugger.service = MagicMock() debugger.task = '' diff --git a/debug/accuracy_tools/msprobe/test/pytorch_ut/dump/test_module_processer.py b/debug/accuracy_tools/msprobe/test/pytorch_ut/dump/test_module_processer.py index 7a1524d0c..ec89ff6f1 100644 --- a/debug/accuracy_tools/msprobe/test/pytorch_ut/dump/test_module_processer.py +++ b/debug/accuracy_tools/msprobe/test/pytorch_ut/dump/test_module_processer.py @@ -13,9 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +import threading + import unittest from unittest.mock import patch, MagicMock - import torch import msprobe.pytorch.dump.module_dump.module_processer as mp @@ -78,9 +79,9 @@ class TestWrapper(unittest.TestCase): class TestModuleProcesser(unittest.TestCase): def setUp(self): ModuleProcesser.module_count = {} - ModuleProcesser.module_stack = [] + ModuleProcesser.module_stack = {} ModuleProcesser.module_node = {} - ModuleProcesser.api_parent_node = "" + ModuleProcesser.api_parent_node = {} self.scope = ModuleRangeScope([], []) self.mock_scope = MagicMock() @@ -199,22 +200,25 @@ class TestModuleProcesser(unittest.TestCase): ModuleProcesser.reset_module_stats() self.assertEqual(ModuleProcesser.module_count, {}) - self.assertEqual(ModuleProcesser.module_stack, []) - self.assertEqual(ModuleProcesser.api_parent_node, "") + self.assertEqual(ModuleProcesser.module_stack, {}) + self.assertEqual(ModuleProcesser.api_parent_node, {}) self.assertEqual(ModuleProcesser.module_node, {}) self.assertEqual(ModuleProcesser.module_bw_hook_kernels, {}) self.assertFalse(ModuleProcesser.enable_module_dump) def test_set_construct_info_in_pre_hook_with_stack(self): processor = ModuleProcesser(self.mock_scope) - ModuleProcesser.module_stack = ["parent_module"] + ModuleProcesser.module_stack[threading.get_ident()] = ["parent_module"] processor.scope = self.mock_scope processor.set_construct_info_in_pre_hook("current_module") self.assertEqual(ModuleProcesser.module_node["current_module"], "parent_module") - self.assertEqual(ModuleProcesser.module_stack, ["parent_module", "current_module"]) - self.assertEqual(ModuleProcesser.api_parent_node, "current_module") + self.assertEqual( + ModuleProcesser.module_stack[threading.get_ident()], + ["parent_module", "current_module"] + ) + self.assertEqual(ModuleProcesser.api_parent_node[threading.get_ident()], "current_module") self.mock_scope.begin_module.assert_called_once_with("current_module") def test_set_construct_info_in_pre_hook_empty_stack(self): @@ -223,19 +227,19 @@ class TestModuleProcesser(unittest.TestCase): processor.set_construct_info_in_pre_hook("root_module") self.assertIsNone(ModuleProcesser.module_node["root_module"]) - self.assertEqual(ModuleProcesser.module_stack, ["root_module"]) - self.assertEqual(ModuleProcesser.api_parent_node, "root_module") + self.assertEqual(ModuleProcesser.module_stack[threading.get_ident()], ["root_module"]) + self.assertEqual(ModuleProcesser.api_parent_node[threading.get_ident()], "root_module") def test_set_construct_info_in_hook_with_forward(self): mp.torch_version_above_or_equal_2 = True processor = ModuleProcesser(self.mock_scope) - ModuleProcesser.module_stack = ["parent", "current"] + ModuleProcesser.module_stack = {threading.get_ident(): ["parent", "current"]} processor.scope = self.mock_scope processor.set_construct_info_in_hook("current") - self.assertEqual(ModuleProcesser.module_stack, ["parent"]) - self.assertEqual(ModuleProcesser.api_parent_node, "parent") + self.assertEqual(ModuleProcesser.module_stack[threading.get_ident()], ["parent"]) + self.assertEqual(ModuleProcesser.api_parent_node[threading.get_ident()], "parent") self.mock_scope.end_module.assert_called_once_with("current") def test_set_construct_info_in_hook_with_backward(self): @@ -245,7 +249,7 @@ class TestModuleProcesser(unittest.TestCase): processor.set_construct_info_in_hook("backward_module", is_forward=False) - self.assertEqual(ModuleProcesser.api_parent_node, "backward_module") + self.assertEqual(ModuleProcesser.api_parent_node[threading.get_ident()], "backward_module") self.mock_scope.begin_module.assert_called_once_with("backward_module") def test_set_construct_info_in_hook_empty_stack(self): @@ -254,7 +258,7 @@ class TestModuleProcesser(unittest.TestCase): processor.set_construct_info_in_hook("module") - self.assertIsNone(ModuleProcesser.api_parent_node) + self.assertEqual(ModuleProcesser.api_parent_node, {threading.get_ident(): None}) if __name__ == "__main__": diff --git a/debug/accuracy_tools/msprobe/test/pytorch_ut/hook_module/test_pt_hook_manager.py b/debug/accuracy_tools/msprobe/test/pytorch_ut/hook_module/test_pt_hook_manager.py index aa21afae7..8d99bc926 100644 --- a/debug/accuracy_tools/msprobe/test/pytorch_ut/hook_module/test_pt_hook_manager.py +++ b/debug/accuracy_tools/msprobe/test/pytorch_ut/hook_module/test_pt_hook_manager.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +import threading + import unittest from unittest.mock import MagicMock, patch from contextlib import nullcontext @@ -31,7 +33,7 @@ class TestPytorchHookManager(unittest.TestCase): self.mock_data_collector, self.mock_config ) - BaseHookManager.inner_switch = False + BaseHookManager.inner_switch[threading.get_ident()] = False def test_properties(self): with patch('msprobe.pytorch.hook_module.pt_hook_manager.is_recomputation', return_value=True): diff --git a/debug/accuracy_tools/msprobe/test/pytorch_ut/hook_module/test_pt_hook_module.py b/debug/accuracy_tools/msprobe/test/pytorch_ut/hook_module/test_pt_hook_module.py index 5b7294a2a..a2ba7365d 100644 --- a/debug/accuracy_tools/msprobe/test/pytorch_ut/hook_module/test_pt_hook_module.py +++ b/debug/accuracy_tools/msprobe/test/pytorch_ut/hook_module/test_pt_hook_module.py @@ -26,14 +26,14 @@ class TestHOOKModule(unittest.TestCase): def setUp(self): self.mock_build_hook = MagicMock(return_value=HookSet(MagicMock(), MagicMock(), MagicMock())) HOOKModule.module_count = defaultdict(int) - HOOKModule.inner_stop_hook = {} + HOOKModule.inner_stop_hook = defaultdict(bool) def test_init_with_stop_hook(self): - expected_thread = threading.current_thread().ident + expected_thread = threading.get_ident() HOOKModule.inner_stop_hook[expected_thread] = True module1 = HOOKModule(self.mock_build_hook) - current_thread = module1.current_thread + current_thread = module1.tid self.assertEqual(current_thread, expected_thread) self.assertTrue(module1.inner_stop_hook[current_thread]) @@ -42,8 +42,8 @@ class TestHOOKModule(unittest.TestCase): def test_init_with_start_hook(self): module1 = HOOKModule(self.mock_build_hook) - current_thread = module1.current_thread - expected_thread = threading.current_thread().ident + current_thread = module1.tid + expected_thread = threading.get_ident() self.assertEqual(current_thread, expected_thread) self.assertFalse(module1.inner_stop_hook[current_thread]) -- Gitee From 5ae94bb1aac323793ec8247aea08e71891b42294 Mon Sep 17 00:00:00 2001 From: Linwei-Ying Date: Tue, 24 Jun 2025 15:39:12 +0800 Subject: [PATCH 16/79] save_excel add malicious_check --- .../msprobe/core/common/file_utils.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/debug/accuracy_tools/msprobe/core/common/file_utils.py b/debug/accuracy_tools/msprobe/core/common/file_utils.py index 807f9327d..e51438147 100644 --- a/debug/accuracy_tools/msprobe/core/common/file_utils.py +++ b/debug/accuracy_tools/msprobe/core/common/file_utils.py @@ -460,7 +460,33 @@ def save_excel(path, data): return "list" raise ValueError("Data must be a DataFrame or a list of (DataFrame, sheet_name) pairs.") + def check_value_is_valid(value: str) -> bool: + if not isinstance(value, str): + return True + try: + # -1.00 or +1.00 should be considered as digit numbers + float(value) + except ValueError: + # otherwise, they will be considered as formular injections + return not bool(re.compile(FileCheckConst.CSV_BLACK_LIST).search(value)) + return True + + def malicious_check(df): + for row_name in df.index: + if not check_value_is_valid(row_name): + raise RuntimeError(f"Malicious value [{row_name}] not allowed to be written into the excel: {path}.") + + for col_name in df.columns: + if not check_value_is_valid(col_name): + raise RuntimeError(f"Malicious value [{col_name}] not allowed to be written into the excel: {path}.") + + for _, row in df.iterrows(): + for _, value in row.items(): + if not check_value_is_valid(value): + raise RuntimeError(f"Malicious value [{value}] not allowed to be written into the excel: {path}.") + def save_in_slice(df, base_name): + malicious_check(df) df_length = len(df) if df_length < CompareConst.MAX_EXCEL_LENGTH: df.to_excel(writer, sheet_name=base_name if base_name else 'Sheet1', index=False) -- Gitee From 3a4f9d9e743807cb5d24c27cf4464b579e171df4 Mon Sep 17 00:00:00 2001 From: wugengjun <451676383@qq.com> Date: Tue, 24 Jun 2025 15:59:11 +0800 Subject: [PATCH 17/79] =?UTF-8?q?cleancode=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/msprobe/core/compare/utils.py | 4 ++-- .../tensor_transport_layer/device_dispatch.py | 2 +- .../api_accuracy_checker/tensor_transport_layer/utils.py | 6 ++---- debug/accuracy_tools/msprobe/pytorch/monitor/module_hook.py | 2 +- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/debug/accuracy_tools/msprobe/core/compare/utils.py b/debug/accuracy_tools/msprobe/core/compare/utils.py index c07acf04a..691025c22 100644 --- a/debug/accuracy_tools/msprobe/core/compare/utils.py +++ b/debug/accuracy_tools/msprobe/core/compare/utils.py @@ -509,8 +509,8 @@ def get_accuracy(result, n_dict, b_dict, dump_mode): result.append(result_item) - n_num, n_num_input, n_num_output, n_num_params, n_num_params_grad = count_struct(n_dict) - b_num, b_num_input, b_num_output, b_num_params, b_num_params_grad = count_struct(b_dict) + _, n_num_input, n_num_output, n_num_params, n_num_params_grad = count_struct(n_dict) + _, b_num_input, b_num_output, b_num_params, b_num_params_grad = count_struct(b_dict) get_accuracy_core(0, n_num_input, 0, b_num_input, CompareConst.INPUT_STRUCT) get_accuracy_core(n_num_input + n_num_output, n_num_params, b_num_input + b_num_output, b_num_params, diff --git a/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py b/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py index 3edc852e6..6fc36bcde 100644 --- a/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py +++ b/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py @@ -43,9 +43,9 @@ CommonCompareConfig = namedtuple('CommonCompareConfig', ['compare', 'handle_func def get_gpu_device(): + is_gpu = False try: import torch_npu - is_gpu = False except ImportError: is_gpu = True return is_gpu diff --git a/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/utils.py b/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/utils.py index d48b1b537..05dd50a3f 100644 --- a/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/utils.py +++ b/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/utils.py @@ -111,10 +111,8 @@ def load_ssl_pem(key_file, cert_file, ca_file, crl_file): try: # your_private_key_password - passphrase = "" - if not passphrase: - import pwinput - passphrase = pwinput.pwinput("Enter your password: ") + import pwinput + passphrase = pwinput.pwinput("Enter your password: ") with FileOpen(key_file, "rb") as f: key = crypto.load_privatekey(crypto.FILETYPE_PEM, f.read(), passphrase.encode()) del passphrase diff --git a/debug/accuracy_tools/msprobe/pytorch/monitor/module_hook.py b/debug/accuracy_tools/msprobe/pytorch/monitor/module_hook.py index f3750d1c9..042ccf651 100644 --- a/debug/accuracy_tools/msprobe/pytorch/monitor/module_hook.py +++ b/debug/accuracy_tools/msprobe/pytorch/monitor/module_hook.py @@ -592,7 +592,7 @@ class TrainerMon: context.param_adam_update = mv_result.update context.param_adam_ratio = mv_result.ratio - self.generate_wgrad_metrics(grad_dict) + _, _ = self.generate_wgrad_metrics(grad_dict) self.generate_mv_metrics(context) self.generate_param_metrics(context, MonitorConst.PRE_PARAM) -- Gitee From 1819b450edddd1ad9752593329a46919b2007fd0 Mon Sep 17 00:00:00 2001 From: zhouxianqi <13165993773@163.com> Date: Tue, 24 Jun 2025 10:25:21 +0800 Subject: [PATCH 18/79] add_compare_db_st --- ...compare_tools_cmd_pytorch_db_npu_vs_npu.py | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 profiler/msprof_analyze/test/st/compare_tools/test_compare_tools_cmd_pytorch_db_npu_vs_npu.py diff --git a/profiler/msprof_analyze/test/st/compare_tools/test_compare_tools_cmd_pytorch_db_npu_vs_npu.py b/profiler/msprof_analyze/test/st/compare_tools/test_compare_tools_cmd_pytorch_db_npu_vs_npu.py new file mode 100644 index 000000000..5485f99da --- /dev/null +++ b/profiler/msprof_analyze/test/st/compare_tools/test_compare_tools_cmd_pytorch_db_npu_vs_npu.py @@ -0,0 +1,77 @@ +# Copyright (c) 2025, Huawei Technologies Co., Ltd. +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import os +from unittest import TestCase + +import pandas as pd + +from msprof_analyze.prof_common.path_manager import PathManager +from msprof_analyze.test.st.utils import execute_cmd, check_result_file +from msprof_analyze.test.st.utils import ST_DATA_PATH + + +class TestCompareToolsCmdPytorchDbNpuVsNpu(TestCase): + BASE_PROFILING_PATH = os.path.join(ST_DATA_PATH, "cluster_data_2_db", + "n122-120-121_12321_20240911113658382_ascend_pt") + COMPARISON_PROFILING_PATH = os.path.join(ST_DATA_PATH, "cluster_data_2_db", + "n122-120-121_12322_20240911113658370_ascend_pt") + OUTPUT_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)), "CompareToolsCmdPytorchDbNpuVsNpu") + COMMAND_SUCCESS = 0 + result_excel = "" + + def setup_class(self): + PathManager.make_dir_safety(self.OUTPUT_PATH) + cmd = ["msprof-analyze", "compare", "-d", self.COMPARISON_PROFILING_PATH, "-bp", self.BASE_PROFILING_PATH, "-o", + self.OUTPUT_PATH, "--force"] + if execute_cmd(cmd) != self.COMMAND_SUCCESS or not os.path.exists(self.OUTPUT_PATH): + self.assertTrue(False, msg="comparison task failed.") + if not check_result_file(self.OUTPUT_PATH): + self.assertTrue(False, msg="comparison result excel is not find.") + self.result_excel = os.path.join(self.OUTPUT_PATH, check_result_file(self.OUTPUT_PATH)) + + def teardown_class(self): + PathManager.remove_path_safety(self.OUTPUT_PATH) + + def test_overall_metrics(self): + duration_exp = [ + 14302.47, 1128.78, 1128.78, 10320.26, 10320.26, 2837.1, 445.59, 2391.52, 16.33, 50636.60, 2595.59, 11.69, + 2583.90, 117.70, 116.68, 1.03, 82.64, 0.16, 82.47, 99.71, 0.00, 99.71, 13013.70, 2032.30, 10981.41, + 17478.85, 17308.09, 170.76, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5045.58, + 5045.58, 0.00, 682.94, 682.94, 65622.00 + ] + + diff_exp = [6.48, 4.84, 4.84, -9.23, -9.23, 10.78, -0.83, 11.61, 0.09, 33.92, 94.13, 100.38, -6.26, -117.70, + -116.68, -1.03, -82.64, -0.16, -82.47, -82.30, 0.19, -82.49, -13013.70, -2032.30, + -10981.41, -17478.85, -17308.09, -170.76, 170.83, 169.81, 1.02, 81.11, 0.42, 80.69, 13836.68, + 1954.07, 11882.61, 17478.49, 17307.83, 170.67, 223.37, -5045.58, 5268.95, -48.46, -48.46, -8.05] + + df = pd.read_excel(self.result_excel, sheet_name="OverallMetrics", header=2) + for index, row in df.iterrows(): + self.assertEqual(duration_exp[index], round(row["Duration(ms)"], 2), + msg="pytorch npu vs npu compare results 'Duration(ms)" + "' column is wrong" + ) + self.assertEqual(diff_exp[index], round(row["Diff Duration(ms)"], 2), + msg="pytorch npu vs npu compare results 'Diff Duration(ms)" + "' column is wrong" + ) + + def test_kernel_compare(self): + headers = ["Order Id", "Kernel", "Input Shape", "Total Duration(us)", "Avg Duration(us)", "Max Duration(us)", + "Min Duration(us)", "Calls", "Total Duration(us).1", "Avg Duration(us).1", "Max Duration(us).1", + "Min Duration(us).1", "Calls.1", "Diff Total Ratio", "Diff Avg Ratio"] + df = pd.read_excel(self.result_excel, sheet_name="KernelCompare", header=2) + self.assertEqual(len(df), 706, msg="pytorch npu vs npu compare results quantity is wrong") + self.assertEqual(headers, df.columns.tolist(), msg="pytorch npu vs npu compare results headers is wrong") -- Gitee From 44376a767b3471f386f0a8940670dfac1f8f7220 Mon Sep 17 00:00:00 2001 From: liangchaoming Date: Tue, 24 Jun 2025 16:54:30 +0800 Subject: [PATCH 19/79] update mstx2comm rules convert mstx comm info to commop table --- .../recipes/mstx2commop/__init__.py | 14 ++ .../recipes/mstx2commop/mstx2commop.py | 178 ++++++++++++++++++ .../prof_exports/mstx2commop_export.py | 45 +++++ 3 files changed, 237 insertions(+) create mode 100644 profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/__init__.py create mode 100644 profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/mstx2commop.py create mode 100644 profiler/msprof_analyze/prof_exports/mstx2commop_export.py diff --git a/profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/__init__.py b/profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/__init__.py new file mode 100644 index 000000000..7101187a2 --- /dev/null +++ b/profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/__init__.py @@ -0,0 +1,14 @@ +# Copyright (c) 2024, Huawei Technologies Co., Ltd. +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/mstx2commop.py b/profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/mstx2commop.py new file mode 100644 index 000000000..77a7095ab --- /dev/null +++ b/profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/mstx2commop.py @@ -0,0 +1,178 @@ +# Copyright (c) 2024, Huawei Technologies Co., Ltd. +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import json +import os +import pandas as pd + +from msprof_analyze.cluster_analyse.recipes.base_recipe_analysis import BaseRecipeAnalysis +from msprof_analyze.prof_common.db_manager import DBManager +from msprof_analyze.prof_common.constant import Constant +from msprof_analyze.prof_common.logger import get_logger +from msprof_analyze.prof_exports.mstx2commop_export import Mstx2CommopExport +from msprof_analyze.prof_common.database_service import DatabaseService + +logger = get_logger() + +TABLE_COMMUNICATION_OP = "COMMUNICATION_OP" +TABLE_STRING_IDS = "STRING_IDS" + + +def double_hash(data): + uint32_bits = 32 + uint32_max = 0xFFFFFFFF # 32 位无符号整数的最大值 + prime = [29, 131] + hash_values = [0, 0] + + for d in data: + hash_values[0] = (hash_values[0] * prime[0] + ord(d)) & uint32_max + hash_values[1] = (hash_values[1] * prime[1] + ord(d)) & uint32_max + + return ((hash_values[0] << uint32_bits) | hash_values[1]) + + +class Mstx2Commop(BaseRecipeAnalysis): + + def __init__(self, params): + super().__init__(params) + logger.info("Mstx2Commop init.") + self.communication_op = None + self.string_ids_insert = None + + @property + def base_dir(self): + return os.path.basename(os.path.dirname(__file__)) + + def run(self, context): + self.mapper_func(context) + + def _mapper_func(self, data_map, analysis_class): + profiler_db_path = data_map.get(Constant.PROFILER_DB_PATH) + data_service = DatabaseService(profiler_db_path) + data_service.add_table_for_query("ENUM_HCCL_DATA_TYPE", ["id", "name"]) + data_service.add_table_for_query("STRING_IDS", ["id", "value"]) + df_dict = data_service.query_data() + + df = Mstx2CommopExport(profiler_db_path, analysis_class).read_export_db() + + if df is None or df.empty: + logger.warning(f"There is no stats data in {profiler_db_path}.") + return None + + df_hccl_dt = df_dict.get("ENUM_HCCL_DATA_TYPE") + + if df_hccl_dt is None or df_hccl_dt.empty: + logger.warning(f"There is no stats data in {profiler_db_path}.") + return None + + df_string_ids = df_dict.get("STRING_IDS") + + if df_string_ids is None or df_string_ids.empty: + logger.warning(f"There is no stats data in {profiler_db_path}.") + return None + + value_len = 4 + optype_index, op_start_index = 0, 9 + groupname_index, datatype_index, count_index = 1, 2, 3 + + # json格式数据转化 + if df.loc[0, 'value'][0] == '{': + df['value'] = df['value'].apply(lambda x: json.loads(x)) + df['opType_primal'] = df['value'].apply(lambda x: x['opName'] + '_') + df['groupName_primal'] = df['value'].apply(lambda x: x['groupName']) + df['dataType'] = df['value'].apply(lambda x: x['dataType']) + df['count'] = df['value'].apply(lambda x: x['count']) + # 非json格式数据转化 + else: + df['value_list'] = df['value'].apply(lambda x: x.split(',')) + df['value_list_len'] = df['value_list'].apply(len) + df = df[df['value_list_len'] == value_len] + df['opType_primal'] = df['value_list'].apply(lambda x: 'hcom_' + x[optype_index][op_start_index:] + '_') + df['groupName_primal'] = df['value_list'].apply(lambda x: x[groupname_index]) + df['dataType'] = df['value_list'].apply(lambda x: x[datatype_index]) + df['count'] = df['value_list'].apply(lambda x: x[count_index]) + + df['groupName_hash'] = df['groupName_primal'].apply(double_hash).apply(str) + + df['gN_oT'] = df['groupName_primal'] + df['opType_primal'] + + gnot_set = set(list(df['gN_oT'])) + + df_concat = pd.DataFrame() + for g_o in gnot_set: + df_split = df[df['gN_oT'] == g_o] + df_split = df_split.copy() + df_split['queue'] = list(range(len(df_split))) + df_concat = pd.concat([df_concat, df_split], axis=0) + + df_concat['queue'] = df_concat['queue'].apply(str) + + df_concat['groupId'] = df_concat['groupName_hash'].apply(lambda x: "_" + x[-3:]) + + df_concat['opName_primal'] = df_concat['opType_primal'] + df_concat['groupId'] + '_' + df_concat['queue'] + '_1' + + df_concat['opId'] = list(range(len(df_concat))) + df_concat['relay'] = None + df_concat['retry'] = None + df_concat['algType'] = None + + df_hccl_dt['name'] = df_hccl_dt['name'].apply(lambda x: x.lower()) + hccl_data_type_dict = dict(zip(df_hccl_dt['name'], df_hccl_dt['id'])) + + string_ids_dict = dict(zip(df_string_ids['value'], df_string_ids['id'])) + + string_ids_max = df_string_ids['id'].max() + + df_concat['dataType'] = df_concat['dataType'].apply(lambda x: hccl_data_type_dict[x]) + + df_concat['string_id_opType_primal'] = df_concat['opType_primal'].apply( + lambda x: 1 if x in string_ids_dict else 0) + df_concat['string_id_opName_primal'] = df_concat['opName_primal'].apply( + lambda x: 1 if x in string_ids_dict else 0) + df_concat['string_id_groupName_primal'] = df_concat['groupName_primal'].apply( + lambda x: 1 if x in string_ids_dict else 0) + optype_primal_list = list(set(df_concat[df_concat['string_id_opType_primal'] == 0]['opType_primal'])) + opname_primal_list = list(set(df_concat[df_concat['string_id_opName_primal'] == 0]['opName_primal'])) + groupname_primal_list = list(set(df_concat[df_concat['string_id_groupName_primal'] == 0]['groupName_primal'])) + + special_primal_list = optype_primal_list + opname_primal_list + groupname_primal_list + special_id_list = list(range(string_ids_max + 1, string_ids_max + len(special_primal_list) + 1)) + + special_id_dict = dict(zip(special_primal_list, special_id_list)) + + df_concat['opType'] = df_concat['opType_primal'].apply( + lambda x: string_ids_dict[x] if x in string_ids_dict else special_id_dict[x] + ) + df_concat['opName'] = df_concat['opName_primal'].apply( + lambda x: string_ids_dict[x] if x in string_ids_dict else special_id_dict[x] + ) + df_concat['groupName'] = df_concat['groupName_primal'].apply( + lambda x: string_ids_dict[x] if x in string_ids_dict else special_id_dict[x] + ) + + communication_op = df_concat[ + ['opName', 'startNs', 'endNs', 'connectionId', 'groupName', 'opId', 'relay', 'retry', 'dataType', 'algType', + 'count', 'opType']] + communication_op = communication_op.copy() + communication_op.sort_values('startNs', ascending=True, inplace=True) + communication_op.set_index('opId', inplace=True) + string_ids_insert = list(map(list, zip(special_id_list, special_primal_list))) + + DBManager.insert_data_into_db(data_map.get(Constant.PROFILER_DB_PATH), TABLE_STRING_IDS, string_ids_insert) + + self.dump_data(data=communication_op, file_name=data_map.get(Constant.PROFILER_DB_PATH), + table_name=TABLE_COMMUNICATION_OP, custom_db_path=data_map.get(Constant.PROFILER_DB_PATH)) + + return data_map.get(Constant.RANK_ID) diff --git a/profiler/msprof_analyze/prof_exports/mstx2commop_export.py b/profiler/msprof_analyze/prof_exports/mstx2commop_export.py new file mode 100644 index 000000000..5ed239603 --- /dev/null +++ b/profiler/msprof_analyze/prof_exports/mstx2commop_export.py @@ -0,0 +1,45 @@ +# Copyright (c) 2024, Huawei Technologies Co., Ltd. +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from msprof_analyze.prof_exports.base_stats_export import BaseStatsExport + +QUERY = """ +SELECT + ta.startNs, + ta.endNs, + ta.connectionId, + si.value +FROM + MSTX_EVENTS ms +JOIN + TASK ta + ON ms.connectionId == ta.connectionId +JOIN + STRING_IDS si + ON ms.message == si.id +WHERE + si.value LIKE '%"streamId":%' + AND si.value LIKE '%"count":%' + AND si.value LIKE '%"dataType":%' + AND si.value LIKE '%"groupName":%' + AND si.value LIKE '%"opName":%' + """ + + +class Mstx2CommopExport(BaseStatsExport): + + def __init__(self, db_path, recipe_name): + super().__init__(db_path, recipe_name) + self._query = QUERY -- Gitee From 0bcc023fe04fe372412daf0be589eabd2fe96233 Mon Sep 17 00:00:00 2001 From: liangchaoming Date: Tue, 24 Jun 2025 16:56:47 +0800 Subject: [PATCH 20/79] mstx2commop fit for output param --- .../recipes/mstx2commop/mstx2commop.py | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/mstx2commop.py b/profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/mstx2commop.py index 77a7095ab..f2b9c01b1 100644 --- a/profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/mstx2commop.py +++ b/profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/mstx2commop.py @@ -15,7 +15,10 @@ import json import os +import shutil + import pandas as pd +from msprof_analyze.prof_common.path_manager import PathManager from msprof_analyze.cluster_analyse.recipes.base_recipe_analysis import BaseRecipeAnalysis from msprof_analyze.prof_common.db_manager import DBManager @@ -50,6 +53,7 @@ class Mstx2Commop(BaseRecipeAnalysis): logger.info("Mstx2Commop init.") self.communication_op = None self.string_ids_insert = None + self.set_output = Constant.CLUSTER_ANALYSIS_OUTPUT_PATH in params # 是否设置了output_path参数 @property def base_dir(self): @@ -170,9 +174,26 @@ class Mstx2Commop(BaseRecipeAnalysis): communication_op.set_index('opId', inplace=True) string_ids_insert = list(map(list, zip(special_id_list, special_primal_list))) - DBManager.insert_data_into_db(data_map.get(Constant.PROFILER_DB_PATH), TABLE_STRING_IDS, string_ids_insert) + new_profiler_db = self._prepare_output_profiler_db(data_map.get(Constant.PROFILER_DB_PATH)) + + DBManager.insert_data_into_db(new_profiler_db, TABLE_STRING_IDS, string_ids_insert) - self.dump_data(data=communication_op, file_name=data_map.get(Constant.PROFILER_DB_PATH), - table_name=TABLE_COMMUNICATION_OP, custom_db_path=data_map.get(Constant.PROFILER_DB_PATH)) + self.dump_data(data=communication_op, file_name="", table_name=TABLE_COMMUNICATION_OP, + custom_db_path=new_profiler_db) return data_map.get(Constant.RANK_ID) + + def _prepare_output_profiler_db(self, profiler_db_path): + """ + copy profiler_db to output if not exist + """ + output_dir = os.path.join(self._cluster_analysis_output_path, self._recipe_name) + relative_db_path = os.path.relpath(profiler_db_path, start=self._collection_dir) + relative_dir = os.path.dirname(relative_db_path) + + new_path = os.path.join(output_dir, relative_dir) + new_db_path = os.path.join(output_dir, relative_db_path) + PathManager.make_dir_safety(new_path) + shutil.copyfile(profiler_db_path, new_db_path) + return new_db_path + -- Gitee From 6fd1c56c060bfc021ab21e20f2de842d324576d9 Mon Sep 17 00:00:00 2001 From: l30036321 Date: Tue, 24 Jun 2025 10:47:25 +0800 Subject: [PATCH 21/79] fix handler bug --- .../mindspore/overflow_check/overflow_check_tool_factory.py | 2 +- .../test/mindspore_ut/test_overflow_check_tool_factory.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debug/accuracy_tools/msprobe/mindspore/overflow_check/overflow_check_tool_factory.py b/debug/accuracy_tools/msprobe/mindspore/overflow_check/overflow_check_tool_factory.py index 1a31c6e65..0b3ed6221 100644 --- a/debug/accuracy_tools/msprobe/mindspore/overflow_check/overflow_check_tool_factory.py +++ b/debug/accuracy_tools/msprobe/mindspore/overflow_check/overflow_check_tool_factory.py @@ -48,4 +48,4 @@ class OverflowCheckToolFactory: logger.error(f"Overflow check is not supported in {config.execution_mode} mode " f"when level is {config.level}.") raise ValueError - return tool(config) + return (tool(config),) diff --git a/debug/accuracy_tools/msprobe/test/mindspore_ut/test_overflow_check_tool_factory.py b/debug/accuracy_tools/msprobe/test/mindspore_ut/test_overflow_check_tool_factory.py index 31fe6254a..520a688dc 100644 --- a/debug/accuracy_tools/msprobe/test/mindspore_ut/test_overflow_check_tool_factory.py +++ b/debug/accuracy_tools/msprobe/test/mindspore_ut/test_overflow_check_tool_factory.py @@ -52,5 +52,5 @@ class TestOverflowCheckToolFactory(TestCase): f"when level is {config.level}.") config.level = "kernel" - dumper = OverflowCheckToolFactory.create(config) + dumper = OverflowCheckToolFactory.create(config)[0] self.assertEqual(dumper.dump_json["common_dump_settings"]["file_format"], "npy") -- Gitee From eecc52d80b7cff2ab7c9e7473b6957aff71b7cf5 Mon Sep 17 00:00:00 2001 From: curry3 <485078529@qq.com> Date: Tue, 24 Jun 2025 16:24:26 +0800 Subject: [PATCH 22/79] =?UTF-8?q?=E3=80=90bugfix=E3=80=91=E3=80=90?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E3=80=91=E5=8A=A0=E8=BD=BD=20stack.json=20?= =?UTF-8?q?=E6=97=B6=E5=A2=9E=E5=8A=A0=E7=B1=BB=E5=9E=8B=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/msprobe/core/common/utils.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/core/common/utils.py b/debug/accuracy_tools/msprobe/core/common/utils.py index 0ac134a55..4635679c4 100644 --- a/debug/accuracy_tools/msprobe/core/common/utils.py +++ b/debug/accuracy_tools/msprobe/core/common/utils.py @@ -645,14 +645,25 @@ def replace_last_occurrence(text, old, new): def load_stack_json(stack_path): stack_dict = load_json(stack_path) + + if not isinstance(stack_dict, dict): + raise MsprobeException( + MsprobeException.INVALID_PARAM_ERROR, + "The format of the stack.json is incorrect, the outermost layer of stack.json should be a dict type." + ) + if not stack_dict.get(Const.NEW_STACK_FLAG): return stack_dict new_stack_dict = {} for stack_info in stack_dict.values(): - if len(stack_info) != 2: + if not isinstance(stack_info, list) or len(stack_info) != 2: continue + api_list, stack_str = stack_info + if not isinstance(api_list, list): + continue + for api_name in api_list: new_stack_dict.update({api_name: stack_str}) return new_stack_dict -- Gitee From 462343c8a6c570bcdfc096f99b540ba3e3f5e059 Mon Sep 17 00:00:00 2001 From: wuyulong17 <2284273586@qq.com> Date: Tue, 24 Jun 2025 20:22:58 +0800 Subject: [PATCH 23/79] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=88=86=E7=BA=A7=E5=8F=AF=E8=A7=86=E5=8C=96=E9=80=9A=E4=BF=A1?= =?UTF-8?q?=E7=9F=A9=E9=98=B5=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/tensorboard-plugins/tb_graph_ascend/README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/README.md b/plugins/tensorboard-plugins/tb_graph_ascend/README.md index fee496d87..3c92c12c2 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/README.md +++ b/plugins/tensorboard-plugins/tb_graph_ascend/README.md @@ -144,7 +144,7 @@ 满足[相关依赖](#1-相关依赖)中要求的 TensorBoard 版本皆可正常使用本插件功能,但为 TensorBoard 本身安全风险考虑,建议使用最新版本 TensorBoard 。 #### 4.1.3 远程查看数据 -如果网络浏览器与启动 TensorBoard 的机器不在同一台机器上, TensorBoard 提供了远程查看数据的指令启动方式,但此种方式会将服务器对应端口在局域网内公开,请用户自行关注安全风险。 +如果网络浏览器与启动 TensorBoard 的机器不在同一台机器上, TensorBoard 提供了远程查看数据的指令启动方式,但此种方式会将服务器对应端口在局域网内公开(全零监听),请用户自行关注安全风险。 * 在启动指令尾部加上`--bind_all`或`--host={服务器IP}`参数启用远程查看方式,如: @@ -156,6 +156,10 @@ * 在打开浏览器访问界面时,需将 URL 内主机名由`localhost`替换为主机的 ip 地址,如`http://xxx.xxx.xxx.xxx:6006` -### 4.2 公网地址说明 +### 4.2 通信矩阵 +| 序号 | 代码仓 | 功能 | 源设备 | 源IP | 源端口 | 目的设备 | 目的IP | 目的端口
    (侦听) | 协议 | 端口说明 | 端口配置| 侦听端口是否可更改 | 所属平面 | 版本 | 特殊场景 | 备注 | +|:----|:---|:--|:--|:---|:---|:---|:----|:--|:--|:---|:---|:---|:---|:-----|:-----|:---| +| 1 | tensorboard-plugins | TensorBoard底座前后端通信 | 访问TensorBoard浏览器所在机器 | 访问TensorBoard浏览器所在机器ip | | TensorBoard服务所在机器 | TensorBoard服务所在服务器的ip | 6006 | HTTP | tensorboard服务通信 | `--port` | 可修改 | 业务面 | 所有版本 | 无 | | +### 4.3 公网地址说明 [公网地址说明](./doc/公网地址说明.csv) -- Gitee From 082be195ee3b993906f4b4e2f4d992f447bbbace Mon Sep 17 00:00:00 2001 From: lcw Date: Thu, 19 Jun 2025 17:29:47 +0800 Subject: [PATCH 24/79] =?UTF-8?q?=E3=80=90bugfix=E3=80=91pytorch=E9=80=9A?= =?UTF-8?q?=E4=BF=A1=E7=AE=97=E5=AD=90wait=E6=96=B9=E5=BC=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msprobe/core/data_dump/data_collector.py | 2 +- .../msprobe/core/hook_manager.py | 2 ++ .../pytorch/hook_module/api_register.py | 32 ++++++++++++++++--- .../msprobe/pytorch/pytorch_service.py | 3 +- .../core_ut/data_dump/test_data_collector.py | 1 - .../msprobe/test/core_ut/test_hook_manager.py | 1 + .../hook_module/test_pt_api_register.py | 12 ------- 7 files changed, 33 insertions(+), 20 deletions(-) diff --git a/debug/accuracy_tools/msprobe/core/data_dump/data_collector.py b/debug/accuracy_tools/msprobe/core/data_dump/data_collector.py index 5a79ef34c..42a8d8e9c 100644 --- a/debug/accuracy_tools/msprobe/core/data_dump/data_collector.py +++ b/debug/accuracy_tools/msprobe/core/data_dump/data_collector.py @@ -118,6 +118,7 @@ class DataCollector: self.set_is_recomputable(data_info, is_recompute) if self.config.level == Const.LEVEL_L2: return + self.call_stack_collect(name) self.handle_data(name, data_info, flush=self.data_processor.is_terminated) except Exception: @@ -139,7 +140,6 @@ class DataCollector: self.set_is_recomputable(data_info, is_recompute) if self.config.level == Const.LEVEL_L2: return - self.call_stack_collect(name) self.handle_data(name, data_info, flush=self.data_processor.is_terminated) except Exception: diff --git a/debug/accuracy_tools/msprobe/core/hook_manager.py b/debug/accuracy_tools/msprobe/core/hook_manager.py index db989df0b..5e5f7a62e 100644 --- a/debug/accuracy_tools/msprobe/core/hook_manager.py +++ b/debug/accuracy_tools/msprobe/core/hook_manager.py @@ -119,6 +119,8 @@ class BaseHookManager(ABC): def _should_execute_hook(self, hook_type, module, is_forward, tid): is_module_hook = hook_type == Const.MODULE + if hasattr(module, 'async_op_dump_flag') and getattr(module, 'async_op_dump_flag'): + return False if is_module_hook and not Runtime.is_running: return False elif not is_module_hook and is_forward and not Runtime.is_running: diff --git a/debug/accuracy_tools/msprobe/pytorch/hook_module/api_register.py b/debug/accuracy_tools/msprobe/pytorch/hook_module/api_register.py index 9bb4c3c8a..552a62a7a 100644 --- a/debug/accuracy_tools/msprobe/pytorch/hook_module/api_register.py +++ b/debug/accuracy_tools/msprobe/pytorch/hook_module/api_register.py @@ -44,6 +44,8 @@ torch_version_above_2 = torch.__version__.split('+')[0] > '2.0' _inner_used_api = {} _supported_api_list_path = (os.path.join(os.path.dirname(os.path.realpath(__file__)), Const.SUPPORT_API_FILE_NAME),) _cuda_func_mapping = {"npu_fusion_attention": "gpu_fusion_attention"} +dist_data_collect_func = {} +origin_wait = getattr(dist.Work, 'wait') _api_types = { Const.PT_FRAMEWORK: { @@ -94,16 +96,35 @@ def dist_module_forward(module, *args, **kwargs): use_async_op_flag = False logger.warning(f"fail to get dist api's func signature because {e}, no wait") - if use_async_op_flag or module.api_name in ["isend", "irecv"]: - if handle and hasattr(handle, 'wait'): - handle.wait() - if module.api_name == "batch_isend_irecv": + def create_async_callback_func(catch_func): + def store_data(): + module.async_op_dump_flag = False + catch_func(module, args, kwargs, handle) + return store_data + + if len(module._forward_hooks.values()) == 0: + return handle + if use_async_op_flag or module.api_name in ['isend', 'irecv']: + module.async_op_dump_flag = True + dist_data_collect_func[handle] = create_async_callback_func(list(module._forward_hooks.values())[0]) + if module.api_name == 'batch_isend_irecv': if isinstance(handle, list): for req in handle: - req.wait() + dist_data_collect_func[req] = create_async_callback_func(list(module._forward_hooks.values())[0]) return handle +def redirect_wait(): + def wrapped_wait(work): + def wrapped_wait(*args, **kwargs): + origin_wait(*args, **kwargs) + if args[0] in dist_data_collect_func: + store_func = dist_data_collect_func.pop(args[0]) + store_func() + return wrapped_wait + dist.Work.wait = wrapped_wait(dist.Work) + + def npu_module_forward(module, *args, **kwargs): if not module.need_hook: if module.api_name not in npu_custom_functions: @@ -130,6 +151,7 @@ class ApiTemplate(HOOKModule): self.prefix_api_name = prefix + Const.SEP + str(api_name.split(Const.SEP)[-1]) + Const.SEP self.need_hook = need_hook self.device = device + self.async_op_dump_flag = False if self.need_hook: super().__init__(hook_build_func) if prefix == Const.DIST_API_TYPE_PREFIX: diff --git a/debug/accuracy_tools/msprobe/pytorch/pytorch_service.py b/debug/accuracy_tools/msprobe/pytorch/pytorch_service.py index aad49a90d..1368e4341 100644 --- a/debug/accuracy_tools/msprobe/pytorch/pytorch_service.py +++ b/debug/accuracy_tools/msprobe/pytorch/pytorch_service.py @@ -19,7 +19,7 @@ from msprobe.pytorch.attl_manager import ATTLManager from msprobe.pytorch.common.log import logger from msprobe.pytorch.common.utils import get_rank_if_initialized, torch_version_above_or_equal_2 from msprobe.pytorch.dump.module_dump.module_processer import ModuleProcesser -from msprobe.pytorch.hook_module.api_register import get_api_register, ApiTemplate +from msprobe.pytorch.hook_module.api_register import get_api_register, ApiTemplate, redirect_wait from msprobe.pytorch.hook_module.hook_module import HOOKModule from msprobe.pytorch.hook_module.jit_script_wrapper import wrap_jit_script_func from msprobe.pytorch.hook_module.pt_hook_manager import PytorchHookManager @@ -57,6 +57,7 @@ class PytorchService(BaseService): def _register_api_hook(self): super()._register_api_hook() wrap_jit_script_func() + redirect_wait() def _register_module_hook(self): ModuleProcesser.enable_module_dump = True diff --git a/debug/accuracy_tools/msprobe/test/core_ut/data_dump/test_data_collector.py b/debug/accuracy_tools/msprobe/test/core_ut/data_dump/test_data_collector.py index b93a122ac..67ea481a9 100644 --- a/debug/accuracy_tools/msprobe/test/core_ut/data_dump/test_data_collector.py +++ b/debug/accuracy_tools/msprobe/test/core_ut/data_dump/test_data_collector.py @@ -384,7 +384,6 @@ class TestForwardDataCollect(unittest.TestCase): mock_data = {"key": "value"} self.data_collector.data_processor.analyze_forward_output.return_value = mock_data self.data_collector.forward_output_data_collect("test", "module", 123, "data", True) - self.data_collector.call_stack_collect.assert_called_once_with("test") self.data_collector.handle_data.assert_called_once_with( "test", mock_data, diff --git a/debug/accuracy_tools/msprobe/test/core_ut/test_hook_manager.py b/debug/accuracy_tools/msprobe/test/core_ut/test_hook_manager.py index f03a7d889..acab05db4 100644 --- a/debug/accuracy_tools/msprobe/test/core_ut/test_hook_manager.py +++ b/debug/accuracy_tools/msprobe/test/core_ut/test_hook_manager.py @@ -73,6 +73,7 @@ class TestBaseHookManager(unittest.TestCase): def test_should_execute_hook_conditions(self): module = MagicMock() module.forward_data_collected = True + module.async_op_dump_flag = False Runtime.is_running = True self.mock_data_collector.data_processor.is_terminated = False self.assertTrue(self.manager._should_execute_hook(Const.MODULE, module, True, threading.get_ident())) diff --git a/debug/accuracy_tools/msprobe/test/pytorch_ut/hook_module/test_pt_api_register.py b/debug/accuracy_tools/msprobe/test/pytorch_ut/hook_module/test_pt_api_register.py index bb2091c34..da6e21049 100644 --- a/debug/accuracy_tools/msprobe/test/pytorch_ut/hook_module/test_pt_api_register.py +++ b/debug/accuracy_tools/msprobe/test/pytorch_ut/hook_module/test_pt_api_register.py @@ -53,18 +53,6 @@ class TestAPIRegister(unittest.TestCase): self.assertEqual(result, "test_handle") mock_logger.assert_not_called() - def test_dist_module_forward_with_batch_op(self): - mock_reqs = [MagicMock(), MagicMock()] - mock_module = MagicMock() - mock_module.api_func.return_value = mock_reqs - mock_module.api_name = "batch_isend_irecv" - - result = dist_module_forward(mock_module) - - for req in mock_reqs: - req.wait.assert_called_once() - self.assertEqual(result, mock_reqs) - @patch('msprobe.pytorch.hook_module.api_register.ApiRegistry') def test_get_api_register_with_new_obj(self, mock_api_registry): get_api_register(return_new=True) -- Gitee From 7d9ed19b510e55e03d724f5eec996ef153fbecb3 Mon Sep 17 00:00:00 2001 From: wangchao426 Date: Wed, 25 Jun 2025 10:12:23 +0800 Subject: [PATCH 25/79] =?UTF-8?q?=E5=BC=BA=E5=88=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=B7=B2=E5=AF=BC=E5=85=A5deallocate=5Foutput=5Ftensor?= =?UTF-8?q?=E7=9A=84=E6=A8=A1=E5=9D=97=E4=B8=AD=E5=87=BD=E6=95=B0=E7=9A=84?= =?UTF-8?q?=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msprobe/pytorch/dump/module_dump/module_processer.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py b/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py index 6130ee50f..6236d2cee 100644 --- a/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py +++ b/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py @@ -14,6 +14,7 @@ # limitations under the License. import threading +import sys from collections import OrderedDict import torch @@ -69,6 +70,11 @@ class ModuleProcesser: try: from megatron.core.pipeline_parallel import schedules schedules.deallocate_output_tensor = wrap_megatron_deallocate(schedules.deallocate_output_tensor) + for module in list(sys.modules.values()): + if 'deallocate_output_tensor' in module.__dict__: + if module.__name__ == 'schedules': + continue + module.func = schedules.deallocate_output_tensor logger.info_on_rank_0("Patch megatron method success.") except ImportError: logger.info_on_rank_0("No megatron find.") -- Gitee From fec1abd60e413560f4119dc55d162f80405e7d49 Mon Sep 17 00:00:00 2001 From: zhouxianqi <13165993773@163.com> Date: Wed, 25 Jun 2025 10:13:56 +0800 Subject: [PATCH 26/79] update_msprof-analyze_whl_package --- profiler/msprof_analyze/README.md | 1 + profiler/msprof_analyze/version.txt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/profiler/msprof_analyze/README.md b/profiler/msprof_analyze/README.md index 13e32a14a..290118b83 100644 --- a/profiler/msprof_analyze/README.md +++ b/profiler/msprof_analyze/README.md @@ -117,6 +117,7 @@ Successfully installed msprof-analyze-{version} | profiler版本 | 发布日期 | 下载链接 | 校验码 | |------------|------------|-------------------------------------------------------------------------------------------------------------------------------------------| ------------------------------------------------------------ | +| 2.1.0 | 2025-06-25 | [msprof_analyze-2.0.2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/2.1.0/msprof_analyze-2.1.0-py3-none-any.whl) | 5959ba8ac24a36c9a349274c773440e99cd7e50963189587ecfa0a1ddb8c8d60 | | 2.0.2 | 2025-03-31 | [msprof_analyze-2.0.2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/2.0.2/msprof_analyze-2.0.2-py3-none-any.whl) | 4227ff628187297b2f3bc14b9dd3a8765833ed25d527f750bc266a8d29f86935 | | 2.0.1 | 2025-02-28 | [msprof_analyze-2.0.1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/2.0.1/msprof_analyze-2.0.1-py3-none-any.whl) | 82dfe2c779dbab9015f61d36ea0c32d832b6d182454b3f7db68e6c0ed49c0423 | | 2.0.0 | 2025-02-08 | [msprof_analyze-2.0.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/2.0.0/msprof_analyze-2.0.0-py3-none-any.whl) | 8e44e5f3e7681c377bb2657a600ad9841d3bed11061ddd7844c30e8a97242101 | diff --git a/profiler/msprof_analyze/version.txt b/profiler/msprof_analyze/version.txt index f93ea0ca3..50aea0e7a 100644 --- a/profiler/msprof_analyze/version.txt +++ b/profiler/msprof_analyze/version.txt @@ -1 +1 @@ -2.0.2 \ No newline at end of file +2.1.0 \ No newline at end of file -- Gitee From 3bc87b9790e6381f57be3463db17f4a7153caf3f Mon Sep 17 00:00:00 2001 From: wangchao426 Date: Wed, 25 Jun 2025 10:19:06 +0800 Subject: [PATCH 27/79] =?UTF-8?q?=E5=BC=BA=E5=88=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=B7=B2=E5=AF=BC=E5=85=A5deallocate=5Foutput=5Ftensor?= =?UTF-8?q?=E7=9A=84=E6=A8=A1=E5=9D=97=E4=B8=AD=E5=87=BD=E6=95=B0=E7=9A=84?= =?UTF-8?q?=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msprobe/pytorch/dump/module_dump/module_processer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py b/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py index 6236d2cee..c0467e349 100644 --- a/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py +++ b/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py @@ -71,10 +71,10 @@ class ModuleProcesser: from megatron.core.pipeline_parallel import schedules schedules.deallocate_output_tensor = wrap_megatron_deallocate(schedules.deallocate_output_tensor) for module in list(sys.modules.values()): - if 'deallocate_output_tensor' in module.__dict__: + if hasattr(module, 'deallocate_output_tensor'): if module.__name__ == 'schedules': continue - module.func = schedules.deallocate_output_tensor + module.deallocate_output_tensor = schedules.deallocate_output_tensor logger.info_on_rank_0("Patch megatron method success.") except ImportError: logger.info_on_rank_0("No megatron find.") -- Gitee From 40ce219d0b483af6bde51c91374688c6361d21bf Mon Sep 17 00:00:00 2001 From: pxp1 <958876660@qq.com> Date: Wed, 25 Jun 2025 10:46:17 +0800 Subject: [PATCH 28/79] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BB=BB=E6=84=8F?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E5=88=A0=E9=99=A4=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msprobe/core/config_check/checkers/base_checker.py | 2 ++ .../msprobe/core/config_check/config_check_cli.py | 2 +- .../accuracy_tools/msprobe/core/config_check/config_checker.py | 3 +-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/debug/accuracy_tools/msprobe/core/config_check/checkers/base_checker.py b/debug/accuracy_tools/msprobe/core/config_check/checkers/base_checker.py index ee598c7f0..1e6e002ed 100644 --- a/debug/accuracy_tools/msprobe/core/config_check/checkers/base_checker.py +++ b/debug/accuracy_tools/msprobe/core/config_check/checkers/base_checker.py @@ -15,6 +15,7 @@ import os +from msprobe.core.common.file_utils import check_path_pattern_valid from msprobe.core.common.framework_adapter import FmkAdp from msprobe.core.common.const import FileCheckConst @@ -32,6 +33,7 @@ class PackInput: raise Exception(f"model is not torch.nn.Module/mindspore.nn.Cell or module list.") if not isinstance(self.output_zip_path, str) or not self.output_zip_path.endswith(FileCheckConst.ZIP_SUFFIX): raise Exception(f"output zip path must be a string and ends with '.zip'") + check_path_pattern_valid(self.output_zip_path) class BaseChecker: diff --git a/debug/accuracy_tools/msprobe/core/config_check/config_check_cli.py b/debug/accuracy_tools/msprobe/core/config_check/config_check_cli.py index cc2db1924..d7ea45ff0 100644 --- a/debug/accuracy_tools/msprobe/core/config_check/config_check_cli.py +++ b/debug/accuracy_tools/msprobe/core/config_check/config_check_cli.py @@ -29,7 +29,7 @@ def compare(bench_zip_path, cmp_zip_path, output_path, framework): def _config_checking_parser(parser): parser.add_argument('-d', '--dump', nargs='*', help='Collect the train config into a zip file') parser.add_argument('-c', '--compare', nargs=2, help='Compare two zip files or checkpoints') - parser.add_argument('-o', '--output', help='output path, default is current directory') + parser.add_argument('-o', '--output', help='output path, default is ./config_check_result') def _run_config_checking_command(args): diff --git a/debug/accuracy_tools/msprobe/core/config_check/config_checker.py b/debug/accuracy_tools/msprobe/core/config_check/config_checker.py index 2dc908398..537bbda1a 100644 --- a/debug/accuracy_tools/msprobe/core/config_check/config_checker.py +++ b/debug/accuracy_tools/msprobe/core/config_check/config_checker.py @@ -43,8 +43,7 @@ class ConfigChecker: @staticmethod def compare(bench_zip_path, cmp_zip_path, output_path, fmk=Const.PT_FRAMEWORK): - if os.path.exists(output_path): - shutil.rmtree(output_path) + create_directory(output_path) bench_dir = os.path.join(output_path, "bench") cmp_dir = os.path.join(output_path, "cmp") extract_zip(bench_zip_path, bench_dir) -- Gitee From d82911635fc19ea75af557dbb5ee36c815b7f48b Mon Sep 17 00:00:00 2001 From: Linwei-Ying Date: Wed, 25 Jun 2025 10:39:53 +0800 Subject: [PATCH 29/79] =?UTF-8?q?msprobe=E5=91=BD=E4=BB=A4=E8=A1=8C?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit msprobe命令行参数补充 --- .../docs/07.accuracy_checker_PyTorch.md | 25 ++++--- .../docs/09.accuracy_checker_MindSpore.md | 22 +++--- .../docs/10.accuracy_compare_PyTorch.md | 4 +- .../docs/11.accuracy_compare_MindSpore.md | 6 +- .../msprobe/docs/12.overflow_check_PyTorch.md | 5 +- .../msprobe/docs/14.data_parse_PyTorch.md | 67 ++++++++++--------- .../msprobe/docs/21.visualization_PyTorch.md | 17 ++--- .../docs/22.visualization_MindSpore.md | 1 + .../msprobe/docs/24.code_mapping_Mindspore.md | 11 +-- .../msprobe/docs/31.config_check.md | 8 +-- .../msprobe/docs/35.nan_analyze.md | 7 +- 11 files changed, 95 insertions(+), 78 deletions(-) diff --git a/debug/accuracy_tools/msprobe/docs/07.accuracy_checker_PyTorch.md b/debug/accuracy_tools/msprobe/docs/07.accuracy_checker_PyTorch.md index 0979dfe53..08e982592 100644 --- a/debug/accuracy_tools/msprobe/docs/07.accuracy_checker_PyTorch.md +++ b/debug/accuracy_tools/msprobe/docs/07.accuracy_checker_PyTorch.md @@ -34,16 +34,17 @@ run_ut 预检操作包括以下两种方式: msprobe -f pytorch run_ut -api_info ./dump_path/step{step_number}/rank{rank_number}/dump.json ``` - | 参数名称 | 解释 | 是否必选 | - | ---------------------------- | ------------------------------------------------------------ | ---------------------------------- | - | -api_info 或 --api_info_file | 指定 API 信息文件 dump.json。 | 是 | - | -save_error_data | 保存精度未达标的 API 输入输出数据。 | 否 | - | -o 或 --out_path | 指定 run_ut 执行结果存盘路径,默认“./”。 | 否 | - | -j 或 --jit_compile | 开启 jit 编译。 | 否 | - | -d 或 --device | 指定 Device ID,选择 UT 代码运行所在的卡,默认值为 0。 | 否 | + | 参数名称 | 解释 | 是否必选 | + |-------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ---------------------------------- | + | -f 或 --framework | 指定训练框架。pytorch。 | 是 | + | -api_info 或 --api_info_file | 指定 API 信息文件 dump.json。 | 是 | + | -save_error_data | 保存精度未达标的 API 输入输出数据。 | 否 | + | -o 或 --out_path | 指定 run_ut 执行结果存盘路径,默认“./”。 | 否 | + | -j 或 --jit_compile | 开启 jit 编译。 | 否 | + | -d 或 --device | 指定 Device ID,选择 UT 代码运行所在的卡,默认值为 0。 | 否 | | -csv_path 或 --result_csv_path | 指定本次运行中断时生成的 `accuracy_checking_result_{timestamp}.csv` 文件路径,执行 run_ut 中断时,若想从中断处继续执行,配置此参数即可。需要指定为上次中断的 `accuracy_checking_result_{timestamp}.csv` 文件。详见 [3.3 断点续检](#33-断点续检)。 | run_ut 操作中断后继续执行场景下必须配置 | - | -f 或 --filter_api | 过滤模型中除最大值和最小值以外其他参数和结构相同的 API。适用于模型较大且重复 API 较多的场景。 | 否 | - | -config 或 --config_path | 指定离线预检操作过程中额外配置(包括黑名单、白名单等)的 [config.json](../config.json) 文件,默认未配置。config.json 文件的配置可参考[配置文件介绍](./02.config_introduction.md)。 | 否 | + | -f 或 --filter_api | 过滤模型中除最大值和最小值以外其他参数和结构相同的 API。适用于模型较大且重复 API 较多的场景。 | 否 | + | -config 或 --config_path | 指定离线预检操作过程中额外配置(包括黑名单、白名单等)的 [config.json](../config.json) 文件,默认未配置。config.json 文件的配置可参考[配置文件介绍](./02.config_introduction.md)。 | 否 | run_ut 执行结果包括 `accuracy_checking_result_{timestamp}.csv` 和 `accuracy_checking_details_{timestamp}.csv` 两个文件。`accuracy_checking_result_{timestamp}.csv` 属于 API 级,标明每个 API 是否通过测试。建议用户先查看 `accuracy_checking_result_{timestamp}.csv` 文件,对于其中没有通过测试的或者特定感兴趣的 API,根据其 API name 字段在 `accuracy_checking_details_{timestamp}.csv` 中查询其各个输出的达标情况以及比较指标。详细介绍请参见[ 4 预检结果](#4-预检结果)。 @@ -103,6 +104,7 @@ msprobe -f pytorch multi_run_ut -api_info ./dump_path/step{step_number}/rank{ran | 参数名称 | 解释 | 是否必选 | | ---------------------------- | ------------------------------------------------------------ | ---------------------------------- | +| -f 或 --framework | 指定训练框架。pytorch。 | 是 | | -api_info 或 --api_info_file | 指定 API 信息文件 dump.json。 | 是 | | -save_error_data | 保存精度未达标的 API 输入输出数据。 | 否 | | -o 或 --out_path | 指定 run_ut 执行结果存盘路径,默认“./”。 | 否 | @@ -212,8 +214,9 @@ Forward Test Success 和 Backward Test Success 是否通过测试是由 `accurac msprobe -f pytorch api_precision_compare -npu /home/xxx/npu/accuracy_checking_details_{timestamp}.csv -gpu /home/xxx/gpu/accuracy_checking_details_{timestamp}.csv -o /home/xxx/ ``` -| 参数名称 | 说明 | 是否必选 | -| -------------------- | ------------- | -------- | +| 参数名称 | 说明 | 是否必选 | +|-----------------------| ------------- | -------- | +| -f 或 --framework | 指定训练框架。pytorch。 | 是 | | -npu 或 --npu_csv_path | NPU 预检结果 `accuracy_checking_details_{timestamp}.csv` 文件路径。默认从当前目录下识别该文件。 | 是 | | -gpu 或 --gpu_csv_path | GPU 预检结果 `accuracy_checking_details_{timestamp}.csv` 文件路径。默认从当前目录下识别该文件。 | 是 | | -o 或 --out_path | 指定 api_precision_compare.py 执行结果存盘路径,默认为当前目录。 | 否 | diff --git a/debug/accuracy_tools/msprobe/docs/09.accuracy_checker_MindSpore.md b/debug/accuracy_tools/msprobe/docs/09.accuracy_checker_MindSpore.md index d2f938459..f4efe1ebd 100644 --- a/debug/accuracy_tools/msprobe/docs/09.accuracy_checker_MindSpore.md +++ b/debug/accuracy_tools/msprobe/docs/09.accuracy_checker_MindSpore.md @@ -29,12 +29,13 @@ c. 在预检时可以由工具构造随机数据或者获取真实dump数据进 msprobe -f mindspore run_ut -api_info ./dump.json -o ./checker_result ``` -| 参数名称 | 说明 |参数类型 | 是否必选 | -| ---------------------------- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------- | ---------------------------------- | -| -api_info 或 --api_info_file | 指定 API 信息文件 dump.json。对其中的mint api以及部分Tensor api进行预检,预检支持的Tensor api列表详见 [ 预检支持列表](../mindspore/api_accuracy_checker/checker_support_api.yaml)。 | str | 是 | -| -o 或 --out_path | 指定预检结果存盘路径,默认“./”。 | str | 否 | -| -csv_path 或 --result_csv_path | 指定本次运行中断时生成的 `accuracy_checking_result_{timestamp}.csv` 文件路径,执行 run_ut 中断时,若想从中断处继续执行,配置此参数即可。需要指定为上次中断的 `accuracy_checking_result_{timestamp}.csv` 文件。详见 [3.3 断点续检](#33-断点续检)。 | str | 否 | -| -save_error_data | 保存(随机数据模式)精度未达标的 API 输入输出数据。 | 空 | 否 | +| 参数名称 | 说明 | 参数类型 | 是否必选 | +| ---------------------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------| ---------------------------------- | +| -f 或 --framework | 指定训练框架。mindspore。 | str | 是 | +| -api_info 或 --api_info_file | 指定 API 信息文件 dump.json。对其中的mint api以及部分Tensor api进行预检,预检支持的Tensor api列表详见 [ 预检支持列表](../mindspore/api_accuracy_checker/checker_support_api.yaml)。 | str | 是 | +| -o 或 --out_path | 指定预检结果存盘路径,默认“./”。 | str | 否 | +| -csv_path 或 --result_csv_path | 指定本次运行中断时生成的 `accuracy_checking_result_{timestamp}.csv` 文件路径,执行 run_ut 中断时,若想从中断处继续执行,配置此参数即可。需要指定为上次中断的 `accuracy_checking_result_{timestamp}.csv` 文件。详见 [3.3 断点续检](#33-断点续检)。 | str | 否 | +| -save_error_data | 保存(随机数据模式)精度未达标的 API 输入输出数据。 | 空 | 否 | 预检执行结果包括 `accuracy_checking_result_{timestamp}.csv` 和 `accuracy_checking_details_{timestamp}.csv` 两个文件。`accuracy_checking_result_{timestamp}.csv` 属于 API 级,标明每个 API 是否通过测试。建议用户先查看 `accuracy_checking_result_{timestamp}.csv` 文件,对于其中没有通过测试的或者特定感兴趣的 API,根据其 API Name 字段在 `accuracy_checking_details_{timestamp}.csv` 中查询其各个输出的达标情况以及比较指标。详细介绍请参见 [4 预检结果](#4-预检结果)。 @@ -54,13 +55,14 @@ multi_run_ut 脚本,可以并行在多个Device执行 run_ut 操作,从而 msprobe -f mindspore multi_run_ut -api_info ./dump.json -d 0 1 2 3 ``` -| 参数名称 | 说明 | 参数类型 | 是否必选 | -| ---------------------------- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------| ---------------------------------- | +| 参数名称 | 说明 | 参数类型 | 是否必选 | +|-------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------| ---------------------------------- | +| -f 或 --framework | 指定训练框架。mindspore。 | str | 是 | | -api_info 或 --api_info_file | 指定 API 信息文件 dump.json。对其中的mint api以及部分Tensor api进行预检,预检支持的Tensor api列表详见 [ 预检支持列表](../mindspore/api_accuracy_checker/checker_support_api.yaml)。 | str | 是 | -| -o 或 --out_path | 指定预检结果存盘路径,默认“./”。 | str | 否 | +| -o 或 --out_path | 指定预检结果存盘路径,默认“./”。 | str | 否 | | -csv_path 或 --result_csv_path | 指定本次运行中断时生成的 `accuracy_checking_result_{timestamp}.csv` 文件路径,执行 run_ut 中断时,若想从中断处继续执行,配置此参数即可。需要指定为上次中断的 `accuracy_checking_result_{timestamp}.csv` 文件。详见 [3.3 断点续检](#33-断点续检)。 | str | 否 | | -d 或 --device | 指定 Device ID,选择 UT 代码运行所在的卡,默认值为 0,支持同时指定 0 ~ Device数量 - 1 ,例如 0 1 2 3 4。 | List[int] | 否 | -| -save_error_data | 保存(随机数据模式)精度未达标的 API 输入输出数据。 | 空 | 否 | +| -save_error_data | 保存(随机数据模式)精度未达标的 API 输入输出数据。 | 空 | 否 | 在不同卡数下,使用38B语言大模型的预检耗时基线参考 [multi_run_ut耗时基线](accuracy_checker_MindSpore/accuracy_checker_MindSpore_baseline.md) diff --git a/debug/accuracy_tools/msprobe/docs/10.accuracy_compare_PyTorch.md b/debug/accuracy_tools/msprobe/docs/10.accuracy_compare_PyTorch.md index 2dd206b0e..6727e01fe 100644 --- a/debug/accuracy_tools/msprobe/docs/10.accuracy_compare_PyTorch.md +++ b/debug/accuracy_tools/msprobe/docs/10.accuracy_compare_PyTorch.md @@ -53,6 +53,7 @@ msprobe -f pytorch compare -i ./compare.json -o ./output -s | 参数名 | 说明 | 是否必选 | |-------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -------- | +| -f 或 --framework | 指定训练框架。pytorch。 | 是 | | -i 或 --input_path | 指定[比对文件](#51-比对文件),str 类型。 | 是 | | -o 或 --output_path | 配置比对结果文件存盘目录,str 类型,默认在当前目录创建output目录。文件名称基于时间戳自动生成,格式为:`compare_result_{timestamp}.xlsx`。
    提示:output目录下与结果件同名文件将被删除覆盖。 | 否 | | -s 或 --stack_mode | 比对结果展示调用栈信息(NPU_Stack_Info)的开关,bool 类型。单卡场景开启时,根据[比对文件](#51-比对文件)的参数说明配置stack_path;多卡场景开启时,自动识别npu_dump目录下stack.json文件,如存在生成详细调用栈信息,否则不生成,此参数不生效。通过直接配置该参数开启,默认未配置,表示关闭。 | 否 | @@ -314,7 +315,8 @@ msprobe -f pytorch merge_result -i ./input_dir -o ./output_dir -config ./config. **完整参数说明** | 参数名 | 说明 | 是否必选 | -| ---------------------- |-------------------------------------------------------------------------------------------------------------------| -------- | +| --------------------- |-------------------------------------------------------------------------------------------------------------------| -------- | +| -f 或 --framework | 指定训练框架。pytorch。 | 是 | | -i 或 --input_dir | 多卡比对结果存盘目录,即使用compare比对的结果输出目录,str类型。所有比对结果应全部为真实数据比对结果或统计数据比对结果,否则可能导致汇总数据不完整。 | 是 | | -o 或 --output_dir | 数据提取汇总结果存盘目录,str类型。文件名称基于时间戳自动生成,格式为:`multi_ranks_compare_merge_{timestamp}.xlsx`。
    提示:output目录下与结果件同名文件将被删除覆盖。 | 是 | | -config或--config-path | 指定需要汇总数据的API和比对指标的yaml文件路径,str类型。
    yaml文件详细介绍见下文“**yaml文件说明**”。 | 是 | diff --git a/debug/accuracy_tools/msprobe/docs/11.accuracy_compare_MindSpore.md b/debug/accuracy_tools/msprobe/docs/11.accuracy_compare_MindSpore.md index a7194f293..55a148058 100644 --- a/debug/accuracy_tools/msprobe/docs/11.accuracy_compare_MindSpore.md +++ b/debug/accuracy_tools/msprobe/docs/11.accuracy_compare_MindSpore.md @@ -37,6 +37,7 @@ msprobe -f mindspore compare -i ./compare.json -o ./output -s | 参数名 | 说明 | 是否必选 | | -------------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -------- | +| -f 或 --framework | 指定训练框架。mindspore。 | 是 | | -i或--input_path | 指定比对文件。比对文件内容及示例请参见[比对文件](#41-比对文件)或[比对文件(kernel)](#42-比对文件kernel)(比对文件(kernel)仅[不同版本下的全量kernel比对](#23-不同版本下的全量kernel比对)场景支持)。 | 是 | | -o或--output_path | 配置比对结果文件存盘目录,默认会在当前目录创建output目录。文件名称基于时间戳自动生成,格式为:
    `compare_result_{timestamp}.xlsx`
    `compare_result_{rank_id}_{step_id}_{timestamp}.xlsx`(仅[不同版本下的全量kernel比对](#23-不同版本下的全量kernel比对)场景支持)。
    提示:output目录下与结果件同名文件将被删除覆盖。 | 否 | | -s或--stack_mode | 比对结果展示调用栈信息(NPU_Stack_Info)的开关,bool 类型。单卡场景开启时,需要使用[比对文件](#41-比对文件)的单卡场景配置stack_path指定stack.json文件,才能生成详细调用栈信息,否则在比对时会报错;暂不支持多卡场景。通过直接配置该参数开启,默认未配置,表示关闭。 | 否 | @@ -222,8 +223,9 @@ msprobe -f mindspore merge_result -i ./input_dir -o ./output_dir -config ./confi **完整参数说明** -| 参数名 | 说明 | 是否必选 | -| ---------------------- |-------------------------------------------------------------------------------------------------------------------| -------- | +| 参数名 | 说明 | 是否必选 | +|-----------------------|-------------------------------------------------------------------------------------------------------------------| -------- | +| -f 或 --framework | 指定训练框架。mindspore。 | 是 | | -i 或 --input_dir | 多卡比对结果存盘目录,即使用compare比对的结果输出目录,str类型。所有比对结果应全部为真实数据比对结果或统计数据比对结果,否则可能导致汇总数据不完整。 | 是 | | -o 或 --output_dir | 数据提取汇总结果存盘目录,str类型。文件名称基于时间戳自动生成,格式为:`multi_ranks_compare_merge_{timestamp}.xlsx`。
    提示:output目录下与结果件同名文件将被删除覆盖。 | 是 | | -config或--config-path | 指定需要汇总数据的API和比对指标的yaml文件路径,str类型。
    yaml文件详细介绍见下文“**yaml文件说明**”。 | 是 | diff --git a/debug/accuracy_tools/msprobe/docs/12.overflow_check_PyTorch.md b/debug/accuracy_tools/msprobe/docs/12.overflow_check_PyTorch.md index a1cd8db8f..ea41bcdc1 100644 --- a/debug/accuracy_tools/msprobe/docs/12.overflow_check_PyTorch.md +++ b/debug/accuracy_tools/msprobe/docs/12.overflow_check_PyTorch.md @@ -58,8 +58,9 @@ export INF_NAN_MODE_ENABLE=1 msprobe -f pytorch run_overflow_check -api_info ./dump_path/step{step_number}/rank{rank_number}/dump.json ``` -| 参数名称 | 说明 | 是否必选 | -| -------------------------- |------------------------------------| -------- | +| 参数名称 | 说明 | 是否必选 | +|---------------------------|------------------------------------| -------- | +| -f 或 --framework | 指定训练框架。pytorch。 | 是 | | -api_info或--api_info_file | 指定采集下来的 API 信息文件 dump.json。 | 是 | | -j或--jit_compile | 开启 jit 编译。 | 否 | | -d或--device | 指定 Device ID,选择 UT 代码运行所在的卡,默认值为0。 | 否 | diff --git a/debug/accuracy_tools/msprobe/docs/14.data_parse_PyTorch.md b/debug/accuracy_tools/msprobe/docs/14.data_parse_PyTorch.md index 7efc6af74..931e74a6d 100644 --- a/debug/accuracy_tools/msprobe/docs/14.data_parse_PyTorch.md +++ b/debug/accuracy_tools/msprobe/docs/14.data_parse_PyTorch.md @@ -18,6 +18,9 @@ msprobe -f pytorch parse Parse >>> ``` +| 参数名称 | 说明 | 是否必选 | +|---------------------------|------------------------------------| -------- | +| -f 或 --framework | 指定训练框架。pytorch。 | 是 | 可在 parse 的界面中执行 Shell 命令,以及如下场景的相关解析命令(详细介绍请参见以下章节。): @@ -38,11 +41,11 @@ Ctrl+C 可以退出 parse 交互式界面。 cad -m my_dump_path [-out output_path] [-asc msaccucmp_path] ``` -| 参数名称 | 说明 | 是否必选 | -| -------- | ------------------------------------------------------------ | -------- | -| -m | 待转换 kernel dump 数据目录。需要指定到 kernel dump 数据的 deviceid 级目录。 | 是 | -| -out | 结果输出目录,须指定已存在的目录,默认为 ./parse_data/acl_batch_convert。未指定时保存在默认路径下,比对结束后会打印 log 提示输出结果存放路径。 | 否 | -| -asc | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py。 | 否 | +| 参数名称 | 说明 | 是否必选 | +|-------------------------| ------------------------------------------------------------ | -------- | +| -m 或 --my_dump_path | 待转换 kernel dump 数据目录。需要指定到 kernel dump 数据的 deviceid 级目录。 | 是 | +| -out 或 --output_path | 结果输出目录,须指定已存在的目录,默认为 ./parse_data/acl_batch_convert。未指定时保存在默认路径下,比对结束后会打印 log 提示输出结果存放路径。 | 否 | +| -asc 或 --msaccucmp_path | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py。 | 否 | **示例代码**: @@ -99,12 +102,12 @@ Parse >>> cad -m /home/xxx/my_dump_path/20000124003856/0 vc -m my_dump_path -g golden_dump_path [-out output_path] [-cmp_path msaccucmp_path] ``` -| 参数名称 | 说明 | 是否必选 | -| --------- | ------------------------------------------------------------ | -------- | -| -m | 待比对 kernel dump 数据目录。如果比对单个算子,需要指定到 kernel dump 数据的 model_id 级目录;如果批量比对,则指定到 cad 转换后的 timestamp 级目录。 | 是 | -| -g | 标杆 kernel dump 数据目录。如果比对单个算子,需要指定到 kernel dump 数据的 model_id 级目录;如果批量比对,则指定到 cad 转换后的 timestamp 级目录。 | 是 | -| -out | 结果输出目录,须指定已存在的目录,默认为 ./parse_data/acl_batch_compare。未指定时保存在默认路径下,比对结束后会打印 log 提示输出结果存放路径。 | 否 | -| -cmp_path | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py | 否 | +| 参数名称 | 说明 | 是否必选 | +|------------------------------| ------------------------------------------------------------ | -------- | +| -m 或 --my_dump_path | 待比对 kernel dump 数据目录。如果比对单个算子,需要指定到 kernel dump 数据的 model_id 级目录;如果批量比对,则指定到 cad 转换后的 timestamp 级目录。 | 是 | +| -g 或 --golden_dump_path | 标杆 kernel dump 数据目录。如果比对单个算子,需要指定到 kernel dump 数据的 model_id 级目录;如果批量比对,则指定到 cad 转换后的 timestamp 级目录。 | 是 | +| -out 或 --output_path | 结果输出目录,须指定已存在的目录,默认为 ./parse_data/acl_batch_compare。未指定时保存在默认路径下,比对结束后会打印 log 提示输出结果存放路径。 | 否 | +| -cmp_path 或 --msaccucmp_path | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py | 否 | 输出结果:`batch_compare_{timestamp}.csv` 文件。 @@ -124,12 +127,12 @@ Parse >>> vc -m ./my_dump_path -g ./golden_data_path dc -n file_name/file_path [-f format] [-out output_path] ``` -| 参数名称 | 说明 | 是否必选 | -| --------- | ------------------------------------------------------------ | -------- | -| -n | 需转换的 dump 数据文件或 dump 数据文件目录。 | 是 | -| -f | 开启 format 转换,指定该参数时需要配置 format 格式。当前内置的 Format 转换支持如下类型:
    FRACTAL_NZ 转换 NCHW;
    FRACTAL_NZ 转换成 NHWC;
    FRACTAL_NZ 转换 ND;
    HWCN 转换 FRACTAL_Z;
    HWCN 转换成 NCHW;
    HWCN 转换成 NHWC;
    NC1HWC0 转换成 HWCN;
    NC1HWC0 转换成 NCHW;
    NC1HWC0 转换成 NHWC;
    NCHW 转换成 FRACTAL_Z;
    NCHW转换成NHWC;
    NHWC转换成FRACTAL_Z;
    NHWC转换成HWCN;
    NHWC转换成NCHW;
    NDC1HWC0转换成NCDHW。 | 否 | -| -out | 结果输出目录。 | 否 | -| -cmp_path | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py | 否 | +| 参数名称 | 说明 | 是否必选 | +|-------------------------| ------------------------------------------------------------ | -------- | +| -n 或 --name | 需转换的 dump 数据文件或 dump 数据文件目录。 | 是 | +| -f 或 --format | 开启 format 转换,指定该参数时需要配置 format 格式。当前内置的 Format 转换支持如下类型:
    FRACTAL_NZ 转换 NCHW;
    FRACTAL_NZ 转换成 NHWC;
    FRACTAL_NZ 转换 ND;
    HWCN 转换 FRACTAL_Z;
    HWCN 转换成 NCHW;
    HWCN 转换成 NHWC;
    NC1HWC0 转换成 HWCN;
    NC1HWC0 转换成 NCHW;
    NC1HWC0 转换成 NHWC;
    NCHW 转换成 FRACTAL_Z;
    NCHW转换成NHWC;
    NHWC转换成FRACTAL_Z;
    NHWC转换成HWCN;
    NHWC转换成NCHW;
    NDC1HWC0转换成NCDHW。 | 否 | +| -out 或 --output_path | 结果输出目录。 | 否 | +| -cmp_path 或 --msaccucmp | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py | 否 | - 输出结果:npy 文件。 @@ -143,9 +146,9 @@ dc -n file_name/file_path [-f format] [-out output_path] pt -n file_path ``` - | 参数名称 | 说明 | 是否必选 | - | -------- | ------------- | -------- | - | -n | npy 文件路径。 | 是 | + | 参数名称 | 说明 | 是否必选 | + |-------------| ------------- | -------- | + | -n 或 --name | npy 文件路径。 | 是 | 打印统计信息:shape, dtype, max, min 和 mean。默认在 npy 文件路径下将该数据保存为 txt 文件。 @@ -191,10 +194,10 @@ TextFile:./parse_data/dump_convert/Add.fp32_vars_add_1fp32_vars_Relu_6.24.5.1636 pk -f pkl_path -n api_name ``` -| 参数名称 | 说明 | 是否必选 | -| -------- | ----------------------- | -------- | -| -f | 指定 dump.json 文件路径。 | 是 | -| -n | 指定 API 名称。 | 是 | +| 参数名称 | 说明 | 是否必选 | +|-------------| ----------------------- | -------- | +| -f 或 --file | 指定 dump.json 文件路径。 | 是 | +| -n 或 --name | 指定 API 名称。 | 是 | - 输出结果:打印统计信息(shape, dtype, max和min mean)。 - 若 pkl 文件中存在相应的堆栈信息,则会打印堆栈信息。 @@ -225,14 +228,14 @@ cn -m my_data*.npy -g golden*.npy [-p num] [-al atol] [-rl rtol] - 统计级比对:对 tensor 整体进行余弦值及相对误差的计算。 - 像素级比对:对输入的两个 npy 文件进行逐元素比对。若两个 tensor 对应元素的相对误差或绝对误差大于**误差阈值**(-al 和 -rl 配置)则被标记为错误数据。 -| 参数名称 | 说明 | 是否必选 | -| -------- | ----------------------------------------------- | -------- | -| -m | 待比对数据。 | 是 | -| -g | 标杆数据。 | 是 | -| -p | 设置比对结束后打印错误元素的个数,默认值 20。 | 否 | -| -al | 判定数据存在精度问题的绝对误差阈值,默认 0.001。 | 否 | -| -rl | 判定数据存在精度问题的相对误差阈值,默认 0.001。 | 否 | -| -s | 将 npy 文件保存成 txt 文件,用于查看,默认开启。 | 否 | +| 参数名称 | 说明 | 是否必选 | +|-------------------------| ----------------------------------------------- | -------- | +| -m 或 --my_dump_path | 待比对数据。 | 是 | +| -g 或 --golden_dump_path | 标杆数据。 | 是 | +| -p 或 --print | 设置比对结束后打印错误元素的个数,默认值 20。 | 否 | +| -al 或 --atol | 判定数据存在精度问题的绝对误差阈值,默认 0.001。 | 否 | +| -rl 或 --rtol | 判定数据存在精度问题的相对误差阈值,默认 0.001。 | 否 | +| -s 或 --save | 将 npy 文件保存成 txt 文件,用于查看,默认开启。 | 否 | 输出结果: diff --git a/debug/accuracy_tools/msprobe/docs/21.visualization_PyTorch.md b/debug/accuracy_tools/msprobe/docs/21.visualization_PyTorch.md index daf81c004..945033f40 100644 --- a/debug/accuracy_tools/msprobe/docs/21.visualization_PyTorch.md +++ b/debug/accuracy_tools/msprobe/docs/21.visualization_PyTorch.md @@ -57,14 +57,15 @@ msprobe -f pytorch graph -i ./compare.json -o ./output ``` **命令行参数说明**: -| 参数名 | 说明 | 是否必选 | -|------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------| -| -i 或 --input_path | 指定比对文件,参考[比对文件说明](#313-比对文件说明) | 是 | -| -o 或 --output_path | 配置比对结果文件存盘目录,str 类型。文件名称基于时间戳自动生成,格式为:`compare_{timestamp}.vis或build_{timestamp}.vis`。 | 是 | -| -lm 或 --layer_mapping | 跨套件比对,例如同一个模型分别使用了DeepSpeed和Megatron套件的比对场景。配置该参数时表示开启跨套件Layer层的比对功能,指定模型代码中的Layer层后,可以识别对应dump数据中的模块或API。需要指定自定义映射文件*.yaml。自定义映射文件的格式请参见[自定义映射文件(Layer)](#71-自定义映射文件layer),如何配置自定义映射文件请参考[模型分级可视化如何配置layer mapping映射文件](./visualization/layer_mapping_example.md)。 配置该参数后,将仅按节点名称进行比对,忽略节点的 type 和 shape。如果调试侧和标杆侧有名称不同的节点,则需要配置自定义映射文件,-lm参数传入自定义映射文件路径;如果调试侧和标杆侧节点名称相同,则仅指定-lm即可。| 否 | -| -oc 或 --overflow_check | 是否开启溢出检测模式,开启后会在输出vis文件中(`compare_{timestamp}.vis或build_{timestamp}.vis`)对每个溢出节点进行标记溢出等级,溢出等级说明参考[溢出等级说明](#312-溢出等级说明) | 否 | -| -f 或 --fuzzy_match | 是否开启模糊匹配,bool类型。模糊匹配说明参考[匹配说明](#311-匹配说明) | 否 | -| -cs 或 --complete_stack | 是否使用完整的堆栈信息,bool类型。默认使用精简的堆栈信息,数据量小有助于增加流畅度。完整堆栈和精简堆栈信息参考[堆栈信息说明](#72-堆栈信息说明) | 否 | +| 参数名 | 说明 | 是否必选 | +|------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------| +| -f 或 --framework | 指定训练框架。pytorch。 | 是 | +| -i 或 --input_path | 指定比对文件,参考[比对文件说明](#313-比对文件说明) | 是 | +| -o 或 --output_path | 配置比对结果文件存盘目录,str 类型。文件名称基于时间戳自动生成,格式为:`compare_{timestamp}.vis或build_{timestamp}.vis`。 | 是 | +| -lm 或 --layer_mapping | 跨套件比对,例如同一个模型分别使用了DeepSpeed和Megatron套件的比对场景。配置该参数时表示开启跨套件Layer层的比对功能,指定模型代码中的Layer层后,可以识别对应dump数据中的模块或API。需要指定自定义映射文件*.yaml。自定义映射文件的格式请参见[自定义映射文件(Layer)](#71-自定义映射文件layer),如何配置自定义映射文件请参考[模型分级可视化如何配置layer mapping映射文件](./visualization/layer_mapping_example.md)。 配置该参数后,将仅按节点名称进行比对,忽略节点的 type 和 shape。如果调试侧和标杆侧有名称不同的节点,则需要配置自定义映射文件,-lm参数传入自定义映射文件路径;如果调试侧和标杆侧节点名称相同,则仅指定-lm即可。 | 否 | +| -oc 或 --overflow_check | 是否开启溢出检测模式,开启后会在输出vis文件中(`compare_{timestamp}.vis或build_{timestamp}.vis`)对每个溢出节点进行标记溢出等级,溢出等级说明参考[溢出等级说明](#312-溢出等级说明) | 否 | +| -f 或 --fuzzy_match | 是否开启模糊匹配,bool类型。模糊匹配说明参考[匹配说明](#311-匹配说明) | 否 | +| -cs 或 --complete_stack | 是否使用完整的堆栈信息,bool类型。默认使用精简的堆栈信息,数据量小有助于增加流畅度。完整堆栈和精简堆栈信息参考[堆栈信息说明](#72-堆栈信息说明) | 否 | #### 3.1.1 匹配说明 diff --git a/debug/accuracy_tools/msprobe/docs/22.visualization_MindSpore.md b/debug/accuracy_tools/msprobe/docs/22.visualization_MindSpore.md index 57bf3e27e..2e5c17764 100644 --- a/debug/accuracy_tools/msprobe/docs/22.visualization_MindSpore.md +++ b/debug/accuracy_tools/msprobe/docs/22.visualization_MindSpore.md @@ -59,6 +59,7 @@ msprobe -f mindspore graph -i ./compare.json -o ./output | 参数名 | 说明 | 是否必选 | |-------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -------- | +| -f 或 --framework | 指定训练框架。mindspore。 | 是 | | -i 或 --input_path | 指定比对文件,参考[比对文件说明](#313-比对文件说明) | 是 | | -o 或 --output_path | 配置比对结果文件存盘目录,str 类型。文件名称基于时间戳自动生成,格式为:`compare_{timestamp}.vis或build_{timestamp}.vis`。 | 是 | | -lm 或 --layer_mapping| 跨框架比对,MindSpore和PyTorch的比对场景。配置该参数时表示开启跨框架Layer层的比对功能,指定模型代码中的Layer层后,可以识别对应dump数据中的模块或API。需要指定自定义映射文件*.yaml。自定义映射文件的格式请参见[自定义映射文件(Layer)](#71-自定义映射文件layer), 如何配置自定义映射文件请参考[模型分级可视化如何配置layer mapping映射文件](./visualization/layer_mapping_example.md)。配置该参数后,将仅按节点名称进行比对,忽略节点的 type 和 shape。如果调试侧和标杆侧有名称不同的节点,则需要配置自定义映射文件,-lm参数传入自定义映射文件路径;如果调试侧和标杆侧节点名称相同,则仅指定-lm即可。 | 否 | diff --git a/debug/accuracy_tools/msprobe/docs/24.code_mapping_Mindspore.md b/debug/accuracy_tools/msprobe/docs/24.code_mapping_Mindspore.md index 05e3900d2..9e7413053 100644 --- a/debug/accuracy_tools/msprobe/docs/24.code_mapping_Mindspore.md +++ b/debug/accuracy_tools/msprobe/docs/24.code_mapping_Mindspore.md @@ -20,9 +20,10 @@ msprobe -f mindspore code_mapping --ir --dump_data [--outp ``` -| 参数名称 | 说明 |参数类型 | 是否必选 | -| ---------------------------- |-------------------------------------------------------------------------------------------------------------------------------------------|---------------------- | ---------------------------------- | -| --ir | 指定 MindSpore 静态图运行时生成的IR图文件。 | str | 是 | -| --dump_data | 指定dump数据文件(支持tensor或statistic模式的dump数据)。可指定单个dump数据 文件或dump数据文件的父目录,指定父目录表示关联目录下的所有dump数据文件。 | str | 是 | -| --output | 关联结果输出目录,默认为"./",只在tensor模式时生效,会把数据文件路径和代码调用栈的关联关系存到output路径下的code_mapping_{时间戳}.csv中。如果关联的是statistic模式,则会把statistic.csv中每个条目加上该条目对应的代码栈。 | str | 否 | +| 参数名称 | 说明 | 参数类型 | 是否必选 | +| ---------------------------- |-------------------------------------------------------------------------------------------------------------------------------------------|------| ---------------------------------- | +| -f 或 --framework | 指定训练框架。mindspore。 | str | 是 | +| --ir | 指定 MindSpore 静态图运行时生成的IR图文件。 | str | 是 | +| --dump_data | 指定dump数据文件(支持tensor或statistic模式的dump数据)。可指定单个dump数据 文件或dump数据文件的父目录,指定父目录表示关联目录下的所有dump数据文件。 | str | 是 | +| --output | 关联结果输出目录,默认为"./",只在tensor模式时生效,会把数据文件路径和代码调用栈的关联关系存到output路径下的code_mapping_{时间戳}.csv中。如果关联的是statistic模式,则会把statistic.csv中每个条目加上该条目对应的代码栈。 | str | 否 | diff --git a/debug/accuracy_tools/msprobe/docs/31.config_check.md b/debug/accuracy_tools/msprobe/docs/31.config_check.md index 673ee81c7..2f531fc17 100644 --- a/debug/accuracy_tools/msprobe/docs/31.config_check.md +++ b/debug/accuracy_tools/msprobe/docs/31.config_check.md @@ -31,11 +31,11 @@ ```shell msprobe -f pytorch/mindspore config_check -d **.sh **.yaml -o output_path ``` --f 代表训练框架,传入pytorch或mindspore,必选。 +-f或--framework 代表训练框架,传入pytorch或mindspore,必选。 --d 代表数据采集模式,可传入启动训练的 shell 脚本路径或 yaml 配置文件路径,可选,不传入代表不采集。 +-d或--dump 代表数据采集模式,可传入启动训练的 shell 脚本路径或 yaml 配置文件路径,可选,不传入代表不采集。 --o 代表输出路径,可选,默认为 config_check_pack.zip。 +-o或--output 代表输出路径,可选,默认为 config_check_pack.zip。 #### 动态数据采集 @@ -79,7 +79,7 @@ ConfigChecker:对模型挂上数据采集所需的hook,会在每次模型前 msprobe -f pytorch config_check -c bench_zip_path cmp_zip_path -o output_path ``` --c 表示compare,数据对比,有两个参数。其中**bench_zip_path** 为标杆侧采集到的数据, **cmp_zip_path** 为待对比侧采集到的数据。 +-c或--compare 表示compare,数据对比,有两个参数。其中**bench_zip_path** 为标杆侧采集到的数据, **cmp_zip_path** 为待对比侧采集到的数据。 **output_path 会被删掉再新建**,不传默认为"./config_check_result", 在 **output_path** 里会生成2个目录和1个文件: - bench:bench_zip_path里打包的数据。 diff --git a/debug/accuracy_tools/msprobe/docs/35.nan_analyze.md b/debug/accuracy_tools/msprobe/docs/35.nan_analyze.md index 8fed6cca1..37b0be8bb 100644 --- a/debug/accuracy_tools/msprobe/docs/35.nan_analyze.md +++ b/debug/accuracy_tools/msprobe/docs/35.nan_analyze.md @@ -23,10 +23,11 @@ msprobe -f pytorch nan_analyze -i dump_step_path -o output_dir_path ``` -| 参数 | 说明 | -|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数 | 说明 | +|--------------------|---------------------------------------------| +| -f 或 --framework | 指定训练框架。pytorch。必选。 | | -i 或 --input_path | dump数据的目录。需指定到step层级,如`-i /xxx/dump/step0/` | -| -o 或 --output_path | 输出文件的目录,可选,不填时默认在当前目录下创建 \"./output/" 目录。 | +| -o 或 --output_path | 输出文件的目录,可选,不填时默认在当前目录下创建 \"./output/" 目录。 | ### 输出文件介绍 -- Gitee From 990c9952ff174731c9f791324f0290615b133411 Mon Sep 17 00:00:00 2001 From: yu-liang-bin Date: Tue, 24 Jun 2025 18:07:55 +0800 Subject: [PATCH 30/79] fix hccl bug --- msmonitor/README.md | 16 ++-- msmonitor/dynolog_npu/cli/src/main.rs | 2 +- .../dynolog/src/tracing/IPCMonitor.cpp | 2 - msmonitor/plugin/ipc_monitor/InputParser.cpp | 3 +- .../ipc_monitor/metric/MetricApiProcess.cpp | 2 +- .../metric/MetricCommunicationProcess.cpp | 95 +++++++++++++++++++ .../metric/MetricCommunicationProcess.h | 52 ++++++++++ .../ipc_monitor/metric/MetricHcclProcess.cpp | 2 +- .../metric/MetricKernelProcess.cpp | 2 +- .../ipc_monitor/metric/MetricManager.cpp | 2 + .../ipc_monitor/metric/MetricMarkProcess.cpp | 2 +- .../metric/MetricMemCpyProcess.cpp | 2 +- .../ipc_monitor/metric/MetricMemProcess.cpp | 2 +- .../metric/MetricMemSetProcess.cpp | 2 +- .../plugin/ipc_monitor/mspti_monitor/mspti.h | 34 +++++++ 15 files changed, 202 insertions(+), 18 deletions(-) create mode 100644 msmonitor/plugin/ipc_monitor/metric/MetricCommunicationProcess.cpp create mode 100644 msmonitor/plugin/ipc_monitor/metric/MetricCommunicationProcess.h diff --git a/msmonitor/README.md b/msmonitor/README.md index b4d6e1530..53ed7c33d 100644 --- a/msmonitor/README.md +++ b/msmonitor/README.md @@ -114,7 +114,9 @@ msmonitor-plugin wheel包提供IPCMonitor,MsptiMonitor等公共能力,使用 ## 使用方式 -- **说明**:**NPU Monitor**功能和**Profiler trace dump** 功能不能**同时开启。 +- **说明**: +- 1. **NPU Monitor**功能和**Profiler trace dump** 功能不能**同时开启。 +- 2. **NPU Monitor**功能暂不支持图模式场景 ### NPU Monitor功能 NPU Monitor基于MSPTI/MSTX能力开发,实现了轻量级在线监控能力,能够用于性能问题的初步定位。 @@ -133,12 +135,12 @@ dyno --certs-dir npu-monitor [SUBCOMMANDS] npu-monitor的SUBCOMMANDS(子命令)选项如下: -| 子命令 | 参数类型 | 说明 | PyTorch支持 | MindSpore支持 | 是否必选 | -|-----------------------|-------|----------------------------------------------------------------------------------------------------------------------------------|:---------:|:-----------:|:-----------:| -| --npu-monitor-start | action | 开启性能监控,设置参数后生效,默认不生效 | Y | Y | N | -| --npu-monitor-stop | action | 停止性能监控,设置参数后生效,默认不生效 | Y | Y | N | -| --report-interval-s | int | 性能监控数据上报周期,单位s,需要在启动时设置。默认值60 | Y | Y | N | -| --mspti-activity-kind | String | 性能监控数据上报数据类型,可以设置单个或多个,多个类型以逗号分隔,每次设置时刷新全局上报类型。可选值范围[`Marker`, `Kernel`, `API`, `Hccl`, `Memory`, `MemSet`, `MemCpy`] , 默认值`Marker` | Y | Y | N | +| 子命令 | 参数类型 | 说明 | PyTorch支持 | MindSpore支持 | 是否必选 | +|-----------------------|-------|------------------------------------------------------------------------------------------------------------------------------------------------------|:---------:|:-----------:|:-----------:| +| --npu-monitor-start | action | 开启性能监控,设置参数后生效,默认不生效 | Y | Y | N | +| --npu-monitor-stop | action | 停止性能监控,设置参数后生效,默认不生效 | Y | Y | N | +| --report-interval-s | int | 性能监控数据上报周期,单位s,需要在启动时设置。默认值60 | Y | Y | N | +| --mspti-activity-kind | String | 性能监控数据上报数据类型,可以设置单个或多个,多个类型以逗号分隔,每次设置时刷新全局上报类型。可选值范围[`Marker`, `Kernel`, `API`, `Hccl`, `Memory`, `MemSet`, `MemCpy`, 'Communication'] , 默认值`Marker` | Y | Y | N | - npu-monitor使用方法 diff --git a/msmonitor/dynolog_npu/cli/src/main.rs b/msmonitor/dynolog_npu/cli/src/main.rs index 6df6dfb19..d1dd1dd49 100644 --- a/msmonitor/dynolog_npu/cli/src/main.rs +++ b/msmonitor/dynolog_npu/cli/src/main.rs @@ -66,7 +66,7 @@ struct Opts { cmd: Command, } -const ALLOWED_VALUES: &[&str] = &["Marker", "Kernel", "API", "Hccl", "Memory", "MemSet", "MemCpy"]; +const ALLOWED_VALUES: &[&str] = &["Marker", "Kernel", "API", "Hccl", "Memory", "MemSet", "MemCpy", "Communication"]; fn parse_mspti_activity_kinds(src: &str) -> Result{ let allowed_values: HashSet<&str> = ALLOWED_VALUES.iter().cloned().collect(); diff --git a/msmonitor/dynolog_npu/dynolog/src/tracing/IPCMonitor.cpp b/msmonitor/dynolog_npu/dynolog/src/tracing/IPCMonitor.cpp index 2f419d379..85a71d957 100644 --- a/msmonitor/dynolog_npu/dynolog/src/tracing/IPCMonitor.cpp +++ b/msmonitor/dynolog_npu/dynolog/src/tracing/IPCMonitor.cpp @@ -147,8 +147,6 @@ void IPCMonitor::getLibkinetoOnDemandRequest( try { ret_config = LibkinetoConfigManager::getInstance()->obtainOnDemandConfig( std::to_string(req->jobid), pids, req->type); - VLOG(0) << "getLibkinetoOnDemandRequest() : job id " << req->jobid - << " pids = " << pids[0]; } catch (const std::runtime_error& ex) { LOG(ERROR) << "Kineto config manager exception : " << ex.what(); } diff --git a/msmonitor/plugin/ipc_monitor/InputParser.cpp b/msmonitor/plugin/ipc_monitor/InputParser.cpp index 9dd9f4bb4..c18ffa72e 100644 --- a/msmonitor/plugin/ipc_monitor/InputParser.cpp +++ b/msmonitor/plugin/ipc_monitor/InputParser.cpp @@ -41,7 +41,8 @@ const std::unordered_map kindStrMap { {"Hccl", MSPTI_ACTIVITY_KIND_HCCL}, {"Memory", MSPTI_ACTIVITY_KIND_MEMORY}, {"MemSet", MSPTI_ACTIVITY_KIND_MEMSET}, - {"MemCpy", MSPTI_ACTIVITY_KIND_MEMCPY} + {"MemCpy", MSPTI_ACTIVITY_KIND_MEMCPY}, + {"Communication", MSPTI_ACTIVITY_KIND_COMMUNICATION}, }; std::set str2Kinds(const std::string& kindStrs) diff --git a/msmonitor/plugin/ipc_monitor/metric/MetricApiProcess.cpp b/msmonitor/plugin/ipc_monitor/metric/MetricApiProcess.cpp index 41850426c..fea6c99e4 100644 --- a/msmonitor/plugin/ipc_monitor/metric/MetricApiProcess.cpp +++ b/msmonitor/plugin/ipc_monitor/metric/MetricApiProcess.cpp @@ -38,7 +38,7 @@ void MetricApiProcess::ConsumeMsptiData(msptiActivity *record) { msptiActivityApi* apiData = ReinterpretConvert(record); msptiActivityApi* tmp = ReinterpretConvert(MsptiMalloc(sizeof(msptiActivityApi), ALIGN_SIZE)); - if (memcpy_s(tmp, sizeof(msptiActivityApi), apiData, sizeof(msptiActivityApi)) != EOK) { + if (tmp == nullptr || memcpy_s(tmp, sizeof(msptiActivityApi), apiData, sizeof(msptiActivityApi)) != EOK) { MsptiFree(ReinterpretConvert(tmp)); LOG(ERROR) << "memcpy_s failed" << IPC_ERROR(ErrCode::MEMORY); return; diff --git a/msmonitor/plugin/ipc_monitor/metric/MetricCommunicationProcess.cpp b/msmonitor/plugin/ipc_monitor/metric/MetricCommunicationProcess.cpp new file mode 100644 index 000000000..f9f806809 --- /dev/null +++ b/msmonitor/plugin/ipc_monitor/metric/MetricCommunicationProcess.cpp @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2025-2025. Huawei Technologies Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "MetricCommunicationProcess.h" +#include +#include +#include "utils.h" + +namespace dynolog_npu { +namespace ipc_monitor { +namespace metric { + +std::string CommunicationMetric::seriesToJson() +{ + nlohmann::json jsonMsg; + jsonMsg["kind"] = "Communication"; + jsonMsg["deviceId"] = deviceId; + jsonMsg["duration"] = duration; + jsonMsg["timestamp"] = timestamp; + return jsonMsg.dump(); +} + +void MetricCommunicationProcess::ConsumeMsptiData(msptiActivity *record) +{ + msptiActivityCommunication* communicationData = ReinterpretConvert(record); + msptiActivityCommunication* tmp = ReinterpretConvert(MsptiMalloc(sizeof(msptiActivityCommunication), ALIGN_SIZE)); + if (tmp == nullptr || memcpy_s(tmp, sizeof(msptiActivityCommunication), communicationData, sizeof(msptiActivityCommunication)) != EOK) { + MsptiFree(ReinterpretConvert(tmp)); + LOG(ERROR) << "memcpy_s failed" << IPC_ERROR(ErrCode::MEMORY); + return; + } + { + std::unique_lock lock(dataMutex); + records.emplace_back(tmp); + } +} + +std::vector MetricCommunicationProcess::AggregatedData() +{ + std::vector> copyRecords; + { + std::unique_lock lock(dataMutex); + copyRecords = std::move(records); + records.clear(); + } + if (copyRecords.empty()) { + return {}; + } + std::unordered_map>> deviceId2CommunicationData = + groupby(copyRecords, [](const std::shared_ptr& data) -> std::uint32_t { + return data->ds.deviceId; + }); + std::vector ans; + auto curTimestamp = getCurrentTimestamp64(); + for (auto& pair: deviceId2CommunicationData) { + CommunicationMetric communicationMetric{}; + auto& communicationDatas = pair.second; + communicationMetric.duration = std::accumulate(communicationDatas.begin(), communicationDatas.end(), 0ULL, + [](uint64_t acc, std::shared_ptr communication) { + return acc + communication->end - communication->start; + }); + communicationMetric.deviceId = pair.first; + communicationMetric.timestamp = curTimestamp; + ans.emplace_back(communicationMetric); + } + return ans; +} + +void MetricCommunicationProcess::SendProcessMessage() +{ + auto afterAggregated = AggregatedData(); + for (auto& metric: afterAggregated) { + SendMessage(metric.seriesToJson()); + } +} + +void MetricCommunicationProcess::Clear() +{ + records.clear(); +} +} +} +} diff --git a/msmonitor/plugin/ipc_monitor/metric/MetricCommunicationProcess.h b/msmonitor/plugin/ipc_monitor/metric/MetricCommunicationProcess.h new file mode 100644 index 000000000..745652f8e --- /dev/null +++ b/msmonitor/plugin/ipc_monitor/metric/MetricCommunicationProcess.h @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2025-2025. Huawei Technologies Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef METRIC_COMMUNICATION_PROCESS_H +#define METRIC_COMMUNICATION_PROCESS_H + +#include +#include +#include "MetricProcessBase.h" + + +namespace dynolog_npu { +namespace ipc_monitor { +namespace metric { + +struct CommunicationMetric { + std::string kindName; + uint64_t duration; + uint64_t timestamp; + uint32_t deviceId; +public: + std::string seriesToJson(); +}; + +class MetricCommunicationProcess : public MetricProcessBase { +public: + MetricCommunicationProcess() = default; + void ConsumeMsptiData(msptiActivity *record) override; + std::vector AggregatedData(); + void SendProcessMessage() override; + void Clear() override; +private: + std::mutex dataMutex; + std::vector> records; +}; +} +} +} + +#endif \ No newline at end of file diff --git a/msmonitor/plugin/ipc_monitor/metric/MetricHcclProcess.cpp b/msmonitor/plugin/ipc_monitor/metric/MetricHcclProcess.cpp index b28e4e7d5..9f19c602c 100644 --- a/msmonitor/plugin/ipc_monitor/metric/MetricHcclProcess.cpp +++ b/msmonitor/plugin/ipc_monitor/metric/MetricHcclProcess.cpp @@ -36,7 +36,7 @@ void MetricHcclProcess::ConsumeMsptiData(msptiActivity *record) { msptiActivityHccl* hcclData = ReinterpretConvert(record); msptiActivityHccl* tmp = ReinterpretConvert(MsptiMalloc(sizeof(msptiActivityHccl), ALIGN_SIZE)); - if (memcpy_s(tmp, sizeof(msptiActivityHccl), hcclData, sizeof(msptiActivityHccl)) != EOK) { + if (tmp == nullptr || memcpy_s(tmp, sizeof(msptiActivityHccl), hcclData, sizeof(msptiActivityHccl)) != EOK) { MsptiFree(ReinterpretConvert(tmp)); LOG(ERROR) << "memcpy_s failed" << IPC_ERROR(ErrCode::MEMORY); return; diff --git a/msmonitor/plugin/ipc_monitor/metric/MetricKernelProcess.cpp b/msmonitor/plugin/ipc_monitor/metric/MetricKernelProcess.cpp index f0d31e99f..359931ca9 100644 --- a/msmonitor/plugin/ipc_monitor/metric/MetricKernelProcess.cpp +++ b/msmonitor/plugin/ipc_monitor/metric/MetricKernelProcess.cpp @@ -35,7 +35,7 @@ void MetricKernelProcess::ConsumeMsptiData(msptiActivity *record) { msptiActivityKernel* kernel = ReinterpretConvert(record); msptiActivityKernel* ptr = ReinterpretConvert(MsptiMalloc(sizeof(msptiActivityKernel), ALIGN_SIZE)); - if (memcpy_s(ptr, sizeof(msptiActivityKernel), kernel, sizeof(msptiActivityKernel)) != EOK) { + if (ptr == nullptr || memcpy_s(ptr, sizeof(msptiActivityKernel), kernel, sizeof(msptiActivityKernel)) != EOK) { MsptiFree(ReinterpretConvert(ptr)); LOG(ERROR) << "memcpy_s failed" << IPC_ERROR(ErrCode::MEMORY); return; diff --git a/msmonitor/plugin/ipc_monitor/metric/MetricManager.cpp b/msmonitor/plugin/ipc_monitor/metric/MetricManager.cpp index 36029313c..b5661ffa8 100644 --- a/msmonitor/plugin/ipc_monitor/metric/MetricManager.cpp +++ b/msmonitor/plugin/ipc_monitor/metric/MetricManager.cpp @@ -21,6 +21,7 @@ #include "MetricMarkProcess.h" #include "MetricMemSetProcess.h" #include "MetricMemProcess.h" +#include "MetricCommunicationProcess.h" #include "utils.h" namespace dynolog_npu { @@ -37,6 +38,7 @@ MetricManager::MetricManager(): TimerTask("MetricManager", DEFAULT_FLUSH_INTERVA metrics[MSPTI_ACTIVITY_KIND_MEMSET] = std::make_shared(); metrics[MSPTI_ACTIVITY_KIND_HCCL] = std::make_shared(); metrics[MSPTI_ACTIVITY_KIND_MEMORY] = std::make_shared(); + metrics[MSPTI_ACTIVITY_KIND_COMMUNICATION] = std::make_shared(); } void MetricManager::ReleaseResource() diff --git a/msmonitor/plugin/ipc_monitor/metric/MetricMarkProcess.cpp b/msmonitor/plugin/ipc_monitor/metric/MetricMarkProcess.cpp index 14a414519..ac83a3fd0 100644 --- a/msmonitor/plugin/ipc_monitor/metric/MetricMarkProcess.cpp +++ b/msmonitor/plugin/ipc_monitor/metric/MetricMarkProcess.cpp @@ -79,7 +79,7 @@ void MetricMarkProcess::ConsumeMsptiData(msptiActivity *record) { msptiActivityMarker* markerData = ReinterpretConvert(record); msptiActivityMarker* tmp = ReinterpretConvert(MsptiMalloc(sizeof(msptiActivityMarker), ALIGN_SIZE)); - if (memcpy_s(tmp, sizeof(msptiActivityMarker), markerData, sizeof(msptiActivityMarker)) != EOK) { + if (tmp == nullptr || memcpy_s(tmp, sizeof(msptiActivityMarker), markerData, sizeof(msptiActivityMarker)) != EOK) { MsptiFree(ReinterpretConvert(tmp)); LOG(ERROR) << "memcpy_s failed" << IPC_ERROR(ErrCode::MEMORY); return; diff --git a/msmonitor/plugin/ipc_monitor/metric/MetricMemCpyProcess.cpp b/msmonitor/plugin/ipc_monitor/metric/MetricMemCpyProcess.cpp index c53f17412..ea2e3cff2 100644 --- a/msmonitor/plugin/ipc_monitor/metric/MetricMemCpyProcess.cpp +++ b/msmonitor/plugin/ipc_monitor/metric/MetricMemCpyProcess.cpp @@ -35,7 +35,7 @@ void MetricMemCpyProcess::ConsumeMsptiData(msptiActivity *record) { msptiActivityMemcpy* kernel = ReinterpretConvert(record); msptiActivityMemcpy* ptr = ReinterpretConvert(MsptiMalloc(sizeof(msptiActivityMemcpy), ALIGN_SIZE)); - if (memcpy_s(ptr, sizeof(msptiActivityMemcpy), kernel, sizeof(msptiActivityMemcpy)) != EOK) { + if (ptr == nullptr || memcpy_s(ptr, sizeof(msptiActivityMemcpy), kernel, sizeof(msptiActivityMemcpy)) != EOK) { MsptiFree(ReinterpretConvert(ptr)); LOG(ERROR) << "memcpy_s failed" << IPC_ERROR(ErrCode::MEMORY); return; diff --git a/msmonitor/plugin/ipc_monitor/metric/MetricMemProcess.cpp b/msmonitor/plugin/ipc_monitor/metric/MetricMemProcess.cpp index e7422de52..71f81c451 100644 --- a/msmonitor/plugin/ipc_monitor/metric/MetricMemProcess.cpp +++ b/msmonitor/plugin/ipc_monitor/metric/MetricMemProcess.cpp @@ -35,7 +35,7 @@ void MetricMemProcess::ConsumeMsptiData(msptiActivity *record) { msptiActivityMemory* mem = ReinterpretConvert(record); msptiActivityMemory* ptr = ReinterpretConvert(MsptiMalloc(sizeof(msptiActivityMemory), ALIGN_SIZE)); - if (memcpy_s(ptr, sizeof(msptiActivityMemory), mem, sizeof(msptiActivityMemory)) != EOK) { + if (ptr == nullptr || memcpy_s(ptr, sizeof(msptiActivityMemory), mem, sizeof(msptiActivityMemory)) != EOK) { MsptiFree(ReinterpretConvert(ptr)); LOG(ERROR) << "memcpy_s failed" << IPC_ERROR(ErrCode::MEMORY); return; diff --git a/msmonitor/plugin/ipc_monitor/metric/MetricMemSetProcess.cpp b/msmonitor/plugin/ipc_monitor/metric/MetricMemSetProcess.cpp index 1b5870cd3..34a1e5289 100644 --- a/msmonitor/plugin/ipc_monitor/metric/MetricMemSetProcess.cpp +++ b/msmonitor/plugin/ipc_monitor/metric/MetricMemSetProcess.cpp @@ -35,7 +35,7 @@ void MetricMemSetProcess::ConsumeMsptiData(msptiActivity *record) { msptiActivityMemset* memSet = ReinterpretConvert(record); msptiActivityMemset* ptr = ReinterpretConvert(MsptiMalloc(sizeof(msptiActivityMemset), ALIGN_SIZE)); - if (memcpy_s(ptr, sizeof(msptiActivityMemset), memSet, sizeof(msptiActivityMemset)) != EOK) { + if (ptr == nullptr || memcpy_s(ptr, sizeof(msptiActivityMemset), memSet, sizeof(msptiActivityMemset)) != EOK) { MsptiFree(ReinterpretConvert(ptr)); LOG(ERROR) << "memcpy_s failed" << IPC_ERROR(ErrCode::MEMORY); return; diff --git a/msmonitor/plugin/ipc_monitor/mspti_monitor/mspti.h b/msmonitor/plugin/ipc_monitor/mspti_monitor/mspti.h index 3ff0d2b8d..17831575c 100644 --- a/msmonitor/plugin/ipc_monitor/mspti_monitor/mspti.h +++ b/msmonitor/plugin/ipc_monitor/mspti_monitor/mspti.h @@ -90,6 +90,7 @@ typedef enum { MSPTI_ACTIVITY_KIND_MEMSET = 6, MSPTI_ACTIVITY_KIND_MEMCPY = 7, MSPTI_ACTIVITY_KIND_EXTERNAL_CORRELATION = 8, + MSPTI_ACTIVITY_KIND_COMMUNICATION = 9, MSPTI_ACTIVITY_KIND_COUNT, MSPTI_ACTIVITY_KIND_FORCE_INT = 0x7fffffff } msptiActivityKind; @@ -128,6 +129,23 @@ typedef enum { MSPTI_ACTIVITY_MEMCPY_KIND_DEFAULT = 5 } msptiActivityMemcpyKind; +typedef enum { + MSPTI_ACTIVITY_COMMUNICATION_INT8 = 0, + MSPTI_ACTIVITY_COMMUNICATION_INT16 = 1, + MSPTI_ACTIVITY_COMMUNICATION_INT32 = 2, + MSPTI_ACTIVITY_COMMUNICATION_FP16 = 3, + MSPTI_ACTIVITY_COMMUNICATION_FP32 = 4, + MSPTI_ACTIVITY_COMMUNICATION_INT64 = 5, + MSPTI_ACTIVITY_COMMUNICATION_UINT64 = 6, + MSPTI_ACTIVITY_COMMUNICATION_UINT8 = 7, + MSPTI_ACTIVITY_COMMUNICATION_UINT16 = 8, + MSPTI_ACTIVITY_COMMUNICATION_UINT32 = 9, + MSPTI_ACTIVITY_COMMUNICATION_FP64 = 10, + MSPTI_ACTIVITY_COMMUNICATION_BFP16 = 11, + MSPTI_ACTIVITY_COMMUNICATION_INT128 = 12, + MSPTI_ACTIVITY_COMMUNICATION_INVALID_TYPE = 0x0000FFFF +} msptiCommunicationDataType; + START_PACKED_ALIGNMENT typedef union PACKED_ALIGNMENT { @@ -232,6 +250,22 @@ typedef struct PACKED_ALIGNMENT { uint8_t isAsync; } msptiActivityMemcpy; +typedef struct PACKED_ALIGNMENT { + msptiActivityKind kind; + msptiCommunicationDataType dataType; + uint64_t count; + struct { + uint32_t deviceId; + uint32_t streamId; + } ds; + uint64_t start; + uint64_t end; + const char* algType; + const char* name; + const char* commName; + uint64_t correlationId; +} msptiActivityCommunication; + END_PACKED_ALIGNMENT typedef void(*msptiCallbackFunc)(void* userdata, msptiCallbackDomain domain, msptiCallbackId cbid, const msptiCallbackData *cbdata); -- Gitee From c776cf3741ebae5c3f5e9669076e26213b36ed41 Mon Sep 17 00:00:00 2001 From: wangchao426 Date: Wed, 25 Jun 2025 14:08:49 +0800 Subject: [PATCH 31/79] =?UTF-8?q?=E5=BC=BA=E5=88=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=B7=B2=E5=AF=BC=E5=85=A5deallocate=5Foutput=5Ftensor?= =?UTF-8?q?=E7=9A=84=E6=A8=A1=E5=9D=97=E4=B8=AD=E5=87=BD=E6=95=B0=E7=9A=84?= =?UTF-8?q?=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pytorch/dump/module_dump/module_processer.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py b/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py index c0467e349..c65c91d63 100644 --- a/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py +++ b/debug/accuracy_tools/msprobe/pytorch/dump/module_dump/module_processer.py @@ -69,12 +69,15 @@ class ModuleProcesser: replace_checkpoint() try: from megatron.core.pipeline_parallel import schedules + origin_func_id = id(schedules.deallocate_output_tensor) schedules.deallocate_output_tensor = wrap_megatron_deallocate(schedules.deallocate_output_tensor) for module in list(sys.modules.values()): - if hasattr(module, 'deallocate_output_tensor'): - if module.__name__ == 'schedules': - continue - module.deallocate_output_tensor = schedules.deallocate_output_tensor + if module.__name__ == 'schedules': + continue + for func in module.__dict__: + if id(module.__dict__[func]) == origin_func_id: + module.__setattr__(func, schedules.deallocate_output_tensor) + logger.debug(f'patch {module.__name__}.{func}.') logger.info_on_rank_0("Patch megatron method success.") except ImportError: logger.info_on_rank_0("No megatron find.") -- Gitee From 0e364d9d5b040087f5c64b2c9ce67b5b37af4b56 Mon Sep 17 00:00:00 2001 From: jiandaobao Date: Wed, 25 Jun 2025 14:16:18 +0800 Subject: [PATCH 32/79] threshold zero --- .../pytorch/free_benchmark/result_handlers/base_handler.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debug/accuracy_tools/msprobe/pytorch/free_benchmark/result_handlers/base_handler.py b/debug/accuracy_tools/msprobe/pytorch/free_benchmark/result_handlers/base_handler.py index 47f93ab7b..e0d583dd0 100644 --- a/debug/accuracy_tools/msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +++ b/debug/accuracy_tools/msprobe/pytorch/free_benchmark/result_handlers/base_handler.py @@ -186,6 +186,8 @@ class FuzzHandler(ABC): ratio = self.ratio_calculate( origin_output, perturbed_output, norm_type=NormType.ENDLESS_NORM ) + if threshold == 0: + raise ValueError("Threshold cannot be zero. Check `get_threshold` implementation.") if ratio == ThresholdConfig.SYMBOL_FLIPPING: is_consistent = False else: -- Gitee From fbc7f6a546e2b5e7e521098402dd67978239f4ef Mon Sep 17 00:00:00 2001 From: qiangge Date: Wed, 25 Jun 2025 14:19:04 +0800 Subject: [PATCH 33/79] avoid divide zero --- debug/accuracy_tools/msprobe/pytorch/monitor/features.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/debug/accuracy_tools/msprobe/pytorch/monitor/features.py b/debug/accuracy_tools/msprobe/pytorch/monitor/features.py index 81c029d40..cfd0c1615 100644 --- a/debug/accuracy_tools/msprobe/pytorch/monitor/features.py +++ b/debug/accuracy_tools/msprobe/pytorch/monitor/features.py @@ -45,13 +45,18 @@ def get_max(x: torch.tensor): @torch.no_grad() def get_zeros(x: torch.tensor, eps: float): + if x.numel() == 0: + return torch.tensor(float('nan')) return torch.sum(torch.abs(x) < eps) / x.numel() @torch.no_grad() def get_sign_matches(x: torch.tensor, y: torch.tensor): + if y.numel() == 0: + return torch.tensor(1.) xs = x.sign() ys = y.sign() + try: same_direction_ratio = ((xs * ys).sum() / ys.numel() + 1) / 2 except RuntimeError as e: -- Gitee From 692c5205404faaf06b6645e1e4158a699dd9a41c Mon Sep 17 00:00:00 2001 From: pxp1 <958876660@qq.com> Date: Wed, 25 Jun 2025 11:11:35 +0800 Subject: [PATCH 34/79] =?UTF-8?q?=E5=A2=9E=E5=8A=A0zip=E5=8C=85=E5=AE=89?= =?UTF-8?q?=E5=85=A8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msprobe/core/common/file_utils.py | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/debug/accuracy_tools/msprobe/core/common/file_utils.py b/debug/accuracy_tools/msprobe/core/common/file_utils.py index e51438147..424e3d08c 100644 --- a/debug/accuracy_tools/msprobe/core/common/file_utils.py +++ b/debug/accuracy_tools/msprobe/core/common/file_utils.py @@ -771,6 +771,13 @@ def create_file_with_content(data, filepath): change_mode(filepath, FileCheckConst.DATA_FILE_AUTHORITY) +def check_file_whether_exist_or_not(filepath): + if os.path.exists(filepath): + check_file_or_directory_path(filepath) + else: + check_path_before_create(filepath) + + def add_file_to_zip(zip_file_path, file_path, arc_path=None): """ Add a file to a ZIP archive, if zip does not exist, create one. @@ -779,12 +786,13 @@ def add_file_to_zip(zip_file_path, file_path, arc_path=None): :param file_path: Path to the file to add :param arc_path: Optional path inside the ZIP archive where the file should be added """ + check_file_or_directory_path(file_path) check_file_suffix(zip_file_path, FileCheckConst.ZIP_SUFFIX) + check_file_whether_exist_or_not(zip_file_path) check_file_size(file_path, FileCheckConst.MAX_FILE_IN_ZIP_SIZE) zip_size = os.path.getsize(zip_file_path) if os.path.exists(zip_file_path) else 0 if zip_size + os.path.getsize(file_path) > FileCheckConst.MAX_ZIP_SIZE: raise RuntimeError(f"ZIP file size exceeds the limit of {FileCheckConst.MAX_ZIP_SIZE} bytes") - check_path_before_create(zip_file_path) try: proc_lock.acquire() with zipfile.ZipFile(zip_file_path, 'a') as zip_file: @@ -806,7 +814,7 @@ def create_file_in_zip(zip_file_path, file_name, content): :param content: Content to write to the file """ check_file_suffix(zip_file_path, FileCheckConst.ZIP_SUFFIX) - check_path_before_create(zip_file_path) + check_file_whether_exist_or_not(zip_file_path) zip_size = os.path.getsize(zip_file_path) if os.path.exists(zip_file_path) else 0 if zip_size + sys.getsizeof(content) > FileCheckConst.MAX_ZIP_SIZE: raise RuntimeError(f"ZIP file size exceeds the limit of {FileCheckConst.MAX_ZIP_SIZE} bytes") @@ -833,6 +841,8 @@ def extract_zip(zip_file_path, extract_dir): :param extract_dir: Directory to extract the contents to """ check_file_suffix(zip_file_path, FileCheckConst.ZIP_SUFFIX) + check_file_or_directory_path(zip_file_path) + create_directory(extract_dir) try: proc_lock.acquire() check_zip_file(zip_file_path) @@ -841,8 +851,12 @@ def extract_zip(zip_file_path, extract_dir): raise RuntimeError(f"Save content to file {os.path.basename(zip_file_path)} failed.") from e finally: proc_lock.release() - with zipfile.ZipFile(zip_file_path, 'r') as zip_file: - zip_file.extractall(extract_dir) + try: + with zipfile.ZipFile(zip_file_path, 'r') as zip_file: + zip_file.extractall(extract_dir) + except Exception as e: + raise RuntimeError(f"extract zip file {os.path.basename(zip_file_path)} failed") from e + recursive_chmod(extract_dir) def split_zip_file_path(zip_file_path): -- Gitee From d87ec038f68a13fa25852e5b36108cd1034a0679 Mon Sep 17 00:00:00 2001 From: lichangwei Date: Wed, 25 Jun 2025 15:45:41 +0800 Subject: [PATCH 35/79] =?UTF-8?q?=E3=80=90bugfix=E3=80=91pytorch=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=87=87=E9=9B=86=E5=9C=BA=E6=99=AF=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/msprobe/docs/FAQ.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debug/accuracy_tools/msprobe/docs/FAQ.md b/debug/accuracy_tools/msprobe/docs/FAQ.md index 252fc94e9..bc34e9b36 100644 --- a/debug/accuracy_tools/msprobe/docs/FAQ.md +++ b/debug/accuracy_tools/msprobe/docs/FAQ.md @@ -36,6 +36,9 @@ 该信息说明 module 挂载了被 PyTorch 框架废弃的 register_backward_hook,这与工具使用的 register_full_backward_hook 接口会产生冲突,故工具会跳过该 module 的反向数据采集。 - 如果您希望所有 module 数据都能采集下来,可以将模型中使用的 register_backward_hook 接口改为 PyTorch 框架推荐的 register_full_backward_pre_hook 或 register_full_backward_hook 接口。 + +5. 在使用 msprobe 进行 Pytorch 框架的数据采集功能时,请注意确认环境变量 NPU_ASD_ENABLE=0 ,即关闭特征值检测功能。 由于工具冲突, 在该功能开启的情况下可能导致某些 api 数据采集的缺失。 + # 2 精度预检(PyTorch) 1. 预检工具在 dump 和 run_ut 的过程中,是否需要同时开启或关闭 jit 编译(jit_compile)? -- Gitee From 3cfad3f3e1d1d75c4f4fb3a70835208fd0984d0d Mon Sep 17 00:00:00 2001 From: zhouxianqi <13165993773@163.com> Date: Wed, 25 Jun 2025 11:20:29 +0800 Subject: [PATCH 36/79] update_mstx2commop_readme --- .../msprof_analyze/cluster_analyse/README.md | 73 +++++++++++++++---- 1 file changed, 57 insertions(+), 16 deletions(-) diff --git a/profiler/msprof_analyze/cluster_analyse/README.md b/profiler/msprof_analyze/cluster_analyse/README.md index 7e881d94d..2ab5cf646 100644 --- a/profiler/msprof_analyze/cluster_analyse/README.md +++ b/profiler/msprof_analyze/cluster_analyse/README.md @@ -91,22 +91,23 @@ experimental_config = torch_npu.profiler._ExperimentalConfig( --mode参数设置不同的数据解析模式,可分析生成cluster_analysis.db交付件,交付件详细内容请参见[cluster_analysis.db交付件表结构说明](#cluster_analysisdb交付件表结构说明)。 - | 参数名 | 说明 | 是否必选 | - |--------------------------| ------------------------------------------------------------ | -------- | - | communication_matrix | 解析通信矩阵数据。 | 否 | - | communication_time | 解析通信耗时数据。 | 否 | - | all | 解析内容包括:
    通信矩阵communication_matrix
    通信耗时数据communication_time
    汇总集群内的节点信息(基于ascend_pytorch_profiler_{rank_id}.db生成)
    --mode参数默认值为all。 | 否 | - | cann_api_sum | 集群API性能数据汇总分析,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。--export_type为db时,输出交付件cluster_analysis.db;--export_type为notebook时,在cluster_analysis_output/CannApiSum目录下输出交付件stats.ipynb。 | 否 | - | compute_op_sum | 集群场景性能数据的device运行算子信息汇总分析,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。--export_type为db时,输出交付件cluster_analysis.db;--export_type为notebook时,在cluster_analysis_output/ComputeOpSum目录下输出交付件stats.ipynb;可根据实际情况决定是否打开--exclude_op_name。 | 否 | - | hccl_sum | 集合通信算子耗时分析,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。--export_type为db时,输出交付件cluster_analysis.db;--export_type为notebook时,在cluster_analysis_output/HcclSum目录下输出交付件stats.ipynb。 | 否 | - | mstx_sum | 集群场景mstx打点信息汇总分析,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。--export_type为db时,输出交付件cluster_analysis.db;--export_type为notebook时,在cluster_analysis_output/MstxSum目录下输出交付件stats.ipynb。 | 否 | - | communication_group_map | 集群场景通信域与并行策略呈现,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件和analysis.db。--export_type为db时,输出交付件cluster_analysis.db。 | 否 | - | communication_time_sum | 集群场景通信时间和带宽汇总分析,输入性能数据需要基于analysis.db。--export_type为db时,输出交付件cluster_analysis.db。| 否 | - | communication_matrix_sum | 集群场景通信矩阵汇总分析,输入性能数据需要基于analysis.db。--export_type为db时,输出交付件cluster_analysis.db。| 否 | - | freq_analysis | 集群场景aicore frequency信息汇总分析,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。打印输出是否aicore存在空闲(频率为800MHz)、异常(频率不为1800MHz或800MHz)的现象。如果有,则在输出交付件cluster_analysis.db增加对应的卡和频率信息。 | 否 | - | ep_load_balance | 集群场景moe负载信息汇总分析,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。输出交付件cluster_analysis.db增加EPTokensSummary, TopEPTokensInfo分析表格。 | 否 | - | slow_rank | 集群场景通信算子快慢卡汇总分析,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。输出交付件cluster_analysis.db中展示各个rank按照当前的快慢卡统计算法得出的快慢卡影响次数。|| - | 自定义分析参数 | 与cann_api_sum、compute_op_sum、hccl_sum等参数功能类似,用户可自定义一套性能数据的分析规则,要求用户开发者详细了解性能分析规则,具体开发指导请参见“[自定义分析规则开发指导](#自定义分析规则开发指导)”。 | 否 | +| 参数名 | 说明 | 是否必选 | +|--------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------| +| communication_matrix | 解析通信矩阵数据。 | 否 | +| communication_time | 解析通信耗时数据。 | 否 | +| all | 解析内容包括:
    通信矩阵communication_matrix
    通信耗时数据communication_time
    汇总集群内的节点信息(基于ascend_pytorch_profiler_{rank_id}.db生成)
    --mode参数默认值为all。 | 否 | +| cann_api_sum | 集群API性能数据汇总分析,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。--export_type为db时,输出交付件cluster_analysis.db;--export_type为notebook时,在cluster_analysis_output/CannApiSum目录下输出交付件stats.ipynb。 | 否 | +| compute_op_sum | 集群场景性能数据的device运行算子信息汇总分析,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。--export_type为db时,输出交付件cluster_analysis.db;--export_type为notebook时,在cluster_analysis_output/ComputeOpSum目录下输出交付件stats.ipynb;可根据实际情况决定是否打开--exclude_op_name。 | 否 | +| hccl_sum | 集合通信算子耗时分析,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。--export_type为db时,输出交付件cluster_analysis.db;--export_type为notebook时,在cluster_analysis_output/HcclSum目录下输出交付件stats.ipynb。 | 否 | +| mstx_sum | 集群场景mstx打点信息汇总分析,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。--export_type为db时,输出交付件cluster_analysis.db;--export_type为notebook时,在cluster_analysis_output/MstxSum目录下输出交付件stats.ipynb。 | 否 | +| communication_group_map | 集群场景通信域与并行策略呈现,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件和analysis.db。--export_type为db时,输出交付件cluster_analysis.db。 | 否 | +| communication_time_sum | 集群场景通信时间和带宽汇总分析,输入性能数据需要基于analysis.db。--export_type为db时,输出交付件cluster_analysis.db。 | 否 | +| communication_matrix_sum | 集群场景通信矩阵汇总分析,输入性能数据需要基于analysis.db。--export_type为db时,输出交付件cluster_analysis.db。 | 否 | +| freq_analysis | 集群场景aicore frequency信息汇总分析,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。打印输出是否aicore存在空闲(频率为800MHz)、异常(频率不为1800MHz或800MHz)的现象。如果有,则在输出交付件cluster_analysis.db增加对应的卡和频率信息。 | 否 | +| ep_load_balance | 集群场景moe负载信息汇总分析,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。输出交付件cluster_analysis.db增加EPTokensSummary, TopEPTokensInfo分析表格。 | 否 | +| slow_rank | 集群场景通信算子快慢卡汇总分析,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。输出交付件cluster_analysis.db中展示各个rank按照当前的快慢卡统计算法得出的快慢卡影响次数。 | 否 | +| mstx2commop | 集群场景基于mstx打点信息生成通信算子信息,输入性能数据需要基于ascend_pytorch_profiler_{rank_id}.db文件。输出交付件ascend_pytorch_profiler_{rank_id}.db增加COMMUNICATION_OP, STRING_IDS分析表格。 | 否 | +| 自定义分析参数 | 与cann_api_sum、compute_op_sum、hccl_sum等参数功能类似,用户可自定义一套性能数据的分析规则,要求用户开发者详细了解性能分析规则,具体开发指导请参见“[自定义分析规则开发指导](#自定义分析规则开发指导)”。 | 否 | ### 交付件 @@ -699,6 +700,46 @@ msprof-analyze配置--mode参数时可分析并输出cluster_analysis.db交付 | rankId | INTEGER | 慢卡 | | slowAffectCount | INTEGER | 该rank影响了多少次通信 | +### mstx2commop + +设置-m mstx2commop时,会生成以下表。 + +#### COMMUNICATION_OP + +说明: + +基于db格式的集群通信算子数据。 + +格式: + +| 字段名 | 类型 | 含义 | +|--------------|---------|----------------------------------------------------------------------------| +| opName | INTEGER | 算子名,STRING_IDS(opName),例:hcom_allReduce__428_0_1 | +| startNs | INTEGER | 通信大算子的开始时间,单位ns | +| endNs | INTEGER | 通信大算子的结束时间,单位ns | +| connectionId | INTEGER | 生成host-device连线 | +| groupName | INTEGER | 通信域,STRING_IDS(groupName),例:10.170.22.98%enp67s0f5_60000_0_1708156014257149 | +| opId | INTEGER | 索引,通信大算子Id,用于关联COMMUNICATION_TASK_INFO表 | +| relay | INTEGER | 借轨通信标识 | +| retry | INTEGER | 重传标识 | +| dataType | INTEGER | 大算子传输的数据类型,如(INT8,FP32),ENUM_HCCL_DATA_TYPE(dataType) | +| algType | INTEGER | 通信算子使用的算法,可分为多个阶段,STRING_IDS(algType),如(HD-MESH) | +| count | NUMERIC | 算子传输的dataType类型的数据量 | +| opType | INTEGER | 算子类型,STRING_IDS(opType),例:hcom_broadcast_ | + +#### STRING_IDS + +说明: + +字符串映射表,COMMUNICATION_OP表opName字段可通过关联STRING_IDS表得到value。 + +格式: + +| 字段名 | 类型 | 含义 | +|-------|---------|--------------| +| id | INTEGER | 索引,string id | +| value | TEXT | string value | + ## 附录 ### 自定义分析规则开发指导 -- Gitee From c1a1ef85c6cd42f1b8e6ea96a0fc094ba698271e Mon Sep 17 00:00:00 2001 From: sunchao <1299792067@qq.com> Date: Thu, 26 Jun 2025 09:29:10 +0800 Subject: [PATCH 37/79] =?UTF-8?q?=F0=9F=90=9E=20fix:=20=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E6=9D=A1=E4=BB=B6=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/app/controllers/match_nodes_controller.py | 12 ++++-------- plugins/tensorboard-plugins/tb_graph_ascend/setup.py | 2 +- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/match_nodes_controller.py b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/match_nodes_controller.py index e2e500c13..8704a93e9 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/match_nodes_controller.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/match_nodes_controller.py @@ -270,10 +270,8 @@ class MatchNodesController: @staticmethod def process_md5_task_delete(graph_data, npu_node_name, bench_node_name): config_data = GraphState.get_global_value("config_data") - npu_match_nodes_list = config_data.get('npuMatchNodes', {}) - bench_match_nodes_list = config_data.get('benchMatchNodes', {}) - if npu_match_nodes_list.get(npu_node_name) != bench_node_name or bench_match_nodes_list.get( - bench_node_name) != npu_node_name: + manual_match_nodes = config_data.get('manualMatchNodes', {}) + if manual_match_nodes.get(npu_node_name) != bench_node_name: return { 'success': False, 'error': "操作失败:节点未匹配,请先匹配节点", @@ -294,10 +292,8 @@ class MatchNodesController: @staticmethod def process_summary_task_delete(graph_data, npu_node_name, bench_node_name): config_data = GraphState.get_global_value("config_data") - npu_match_nodes_list = config_data.get('npuMatchNodes', {}) - bench_match_nodes_list = config_data.get('benchMatchNodes', {}) - if npu_match_nodes_list.get(npu_node_name) != bench_node_name or bench_match_nodes_list.get( - bench_node_name) != npu_node_name: + manual_match_nodes = config_data.get('manualMatchNodes', {}) + if manual_match_nodes.get(npu_node_name) != bench_node_name: return { 'success': False, 'error': "操作失败:节点未匹配,请先匹配节点", diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/setup.py b/plugins/tensorboard-plugins/tb_graph_ascend/setup.py index dd1b98bef..5c5cf240f 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/setup.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/setup.py @@ -16,7 +16,7 @@ # --------------------------------------------------------------------------------------------# import setuptools -VERSION = '2.0.0' +VERSION = '8.1.0' INSTALL_REQUIRED = ["tensorboard >= 2.11.2"] setuptools.setup( -- Gitee From 86ae66c567c90d5a5240179c7808c592256903ea Mon Sep 17 00:00:00 2001 From: zhouxianqi <13165993773@163.com> Date: Thu, 26 Jun 2025 09:48:35 +0800 Subject: [PATCH 38/79] fix_for_mstx2commop --- profiler/msprof_analyze/README.md | 42 +++++++++---------- .../recipes/mstx2commop/mstx2commop.py | 5 ++- .../prof_exports/mstx2commop_export.py | 8 ++-- profiler/msprof_analyze/version.txt | 2 +- 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/profiler/msprof_analyze/README.md b/profiler/msprof_analyze/README.md index 290118b83..208fe4e29 100644 --- a/profiler/msprof_analyze/README.md +++ b/profiler/msprof_analyze/README.md @@ -115,27 +115,27 @@ Successfully installed msprof-analyze-{version} 请通过下表链接下载profiler工具whl包。 -| profiler版本 | 发布日期 | 下载链接 | 校验码 | -|------------|------------|-------------------------------------------------------------------------------------------------------------------------------------------| ------------------------------------------------------------ | -| 2.1.0 | 2025-06-25 | [msprof_analyze-2.0.2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/2.1.0/msprof_analyze-2.1.0-py3-none-any.whl) | 5959ba8ac24a36c9a349274c773440e99cd7e50963189587ecfa0a1ddb8c8d60 | -| 2.0.2 | 2025-03-31 | [msprof_analyze-2.0.2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/2.0.2/msprof_analyze-2.0.2-py3-none-any.whl) | 4227ff628187297b2f3bc14b9dd3a8765833ed25d527f750bc266a8d29f86935 | -| 2.0.1 | 2025-02-28 | [msprof_analyze-2.0.1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/2.0.1/msprof_analyze-2.0.1-py3-none-any.whl) | 82dfe2c779dbab9015f61d36ea0c32d832b6d182454b3f7db68e6c0ed49c0423 | -| 2.0.0 | 2025-02-08 | [msprof_analyze-2.0.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/2.0.0/msprof_analyze-2.0.0-py3-none-any.whl) | 8e44e5f3e7681c377bb2657a600ad9841d3bed11061ddd7844c30e8a97242101 | -| 1.3.4 | 2025-01-20 | [msprof_analyze-1.3.4-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.3.4/msprof_analyze-1.3.4-py3-none-any.whl) | 8de92188d1a97105fb14cadcb0875ccd5f66629ee3bb25f37178da1906f4cce2 | -| 1.3.3 | 2024-12-26 | [msprof_analyze-1.3.3-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.3.3/msprof_analyze-1.3.3-py3-none-any.whl) | 27676f2eee636bd0c65243f81e292c7f9d30d7f985c772ac9cbaf10b54d3584e | -| 1.3.2 | 2024-12-20 | [msprof_analyze-1.3.2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.3.2/msprof_analyze-1.3.2-py3-none-any.whl) | ceb227e751ec3a204135be13801f1deee6a66c347f1bb3cdaef596872874df06 | -| 1.3.1 | 2024-12-04 | [msprof_analyze-1.3.1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.3.1/msprof_analyze-1.3.1-py3-none-any.whl) | eae5548804314110a649caae537f2c63320fc70ec41ce1167f67c1d674d8798e | -| 1.3.0 | 2024-10-12 | [msprof_analyze-1.3.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.3.0/msprof_analyze-1.3.0-py3-none-any.whl) | 8b09758c6b5181bb656a95857c32852f898c370e7f1041e5a08e4f10d5004d48 | -| 1.2.5 | 2024-09-25 | [msprof_analyze-1.2.5-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.2.5/msprof_analyze-1.2.5-py3-none-any.whl) | aea8ae8deac07b5b4980bd2240da27d0eec93b9ace9ea9eb2e3a05ae9072018b | -| 1.2.4 | 2024-09-19 | [msprof_analyze-1.2.4-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.2.4/msprof_analyze-1.2.4-py3-none-any.whl) | 7c392e72c3347c4034fd3fdfcccb1f7936c24d9c3eb217e2cc05bae1347e5ab7 | -| 1.2.3 | 2024-08-29 | [msprof_analyze-1.2.3-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.2.3/msprof_analyze-1.2.3-py3-none-any.whl) | 354a55747f64ba1ec6ee6fe0f05a53e84e1b403ee0341ec40cc216dd25fda14c | -| 1.2.2 | 2024-08-23 | [msprof_analyze-1.2.2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.2.2/msprof_analyze-1.2.2-py3-none-any.whl) | ed92a8e4eaf5ada8a2b4079072ec0cc42501b1b1f2eb00c8fdcb077fecb4ae02 | -| 1.2.1 | 2024-08-14 | [msprof_analyze-1.2.1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.2.1/msprof_analyze-1.2.1-py3-none-any.whl) | 7acd477417bfb3ea29029dadf175d019ad3212403b7e11dc1f87e84c2412c078 | -| 1.2.0 | 2024-07-25 | [msprof_analyze-1.2.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.2.0/msprof_analyze-1.2.0-py3-none-any.whl) | 6a4366e3beca40b4a8305080e6e441d6ecafb5c05489e5905ac0265787555f37 | -| 1.1.2 | 2024-07-12 | [msprof_analyze-1.1.2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.1.2/msprof_analyze-1.1.2-py3-none-any.whl) | af62125b1f9348bf491364e03af712fc6d0282ccee3fb07458bc9bbef82dacc6 | -| 1.1.1 | 2024-06-20 | [msprof_analyze-1.1.1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.1.1/msprof_analyze-1.1.1-py3-none-any.whl) | 76aad967a3823151421153d368d4d2f8e5cfbcb356033575e0b8ec5acea8e5e4 | -| 1.1.0 | 2024-05-28 | [msprof_analyze-1.1.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.1.0/msprof_analyze-1.1.0-py3-none-any.whl) | b339f70e7d1e45e81f289332ca64990a744d0e7ce6fdd84a8d82e814fa400698 | -| 1.0 | 2024-05-10 | [msprof_analyze-1.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.0/msprof_analyze-1.0-py3-none-any.whl) | 95b2f41c8c8e8afe4887b738c8cababcb4f412e1874483b6adae4a025fcbb7d4 | +| profiler版本 | 发布日期 | 下载链接 | 校验码 | +|------------|------------|-------------------------------------------------------------------------------------------------------------------------------------------------| ------------------------------------------------------------ | +| 8.1.0a1 | 2025-06-26 | [msprof_analyze-8.1.0a1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/8.1.0a1/msprof_analyze-8.1.0a1-py3-none-any.whl) | d694b8e1318f346b647f13e9185d3fdefb88a124f9b0e07b74b769a292001886 | +| 2.0.2 | 2025-03-31 | [msprof_analyze-2.0.2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/2.0.2/msprof_analyze-2.0.2-py3-none-any.whl) | 4227ff628187297b2f3bc14b9dd3a8765833ed25d527f750bc266a8d29f86935 | +| 2.0.1 | 2025-02-28 | [msprof_analyze-2.0.1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/2.0.1/msprof_analyze-2.0.1-py3-none-any.whl) | 82dfe2c779dbab9015f61d36ea0c32d832b6d182454b3f7db68e6c0ed49c0423 | +| 2.0.0 | 2025-02-08 | [msprof_analyze-2.0.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/2.0.0/msprof_analyze-2.0.0-py3-none-any.whl) | 8e44e5f3e7681c377bb2657a600ad9841d3bed11061ddd7844c30e8a97242101 | +| 1.3.4 | 2025-01-20 | [msprof_analyze-1.3.4-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.3.4/msprof_analyze-1.3.4-py3-none-any.whl) | 8de92188d1a97105fb14cadcb0875ccd5f66629ee3bb25f37178da1906f4cce2 | +| 1.3.3 | 2024-12-26 | [msprof_analyze-1.3.3-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.3.3/msprof_analyze-1.3.3-py3-none-any.whl) | 27676f2eee636bd0c65243f81e292c7f9d30d7f985c772ac9cbaf10b54d3584e | +| 1.3.2 | 2024-12-20 | [msprof_analyze-1.3.2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.3.2/msprof_analyze-1.3.2-py3-none-any.whl) | ceb227e751ec3a204135be13801f1deee6a66c347f1bb3cdaef596872874df06 | +| 1.3.1 | 2024-12-04 | [msprof_analyze-1.3.1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.3.1/msprof_analyze-1.3.1-py3-none-any.whl) | eae5548804314110a649caae537f2c63320fc70ec41ce1167f67c1d674d8798e | +| 1.3.0 | 2024-10-12 | [msprof_analyze-1.3.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.3.0/msprof_analyze-1.3.0-py3-none-any.whl) | 8b09758c6b5181bb656a95857c32852f898c370e7f1041e5a08e4f10d5004d48 | +| 1.2.5 | 2024-09-25 | [msprof_analyze-1.2.5-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.2.5/msprof_analyze-1.2.5-py3-none-any.whl) | aea8ae8deac07b5b4980bd2240da27d0eec93b9ace9ea9eb2e3a05ae9072018b | +| 1.2.4 | 2024-09-19 | [msprof_analyze-1.2.4-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.2.4/msprof_analyze-1.2.4-py3-none-any.whl) | 7c392e72c3347c4034fd3fdfcccb1f7936c24d9c3eb217e2cc05bae1347e5ab7 | +| 1.2.3 | 2024-08-29 | [msprof_analyze-1.2.3-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.2.3/msprof_analyze-1.2.3-py3-none-any.whl) | 354a55747f64ba1ec6ee6fe0f05a53e84e1b403ee0341ec40cc216dd25fda14c | +| 1.2.2 | 2024-08-23 | [msprof_analyze-1.2.2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.2.2/msprof_analyze-1.2.2-py3-none-any.whl) | ed92a8e4eaf5ada8a2b4079072ec0cc42501b1b1f2eb00c8fdcb077fecb4ae02 | +| 1.2.1 | 2024-08-14 | [msprof_analyze-1.2.1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.2.1/msprof_analyze-1.2.1-py3-none-any.whl) | 7acd477417bfb3ea29029dadf175d019ad3212403b7e11dc1f87e84c2412c078 | +| 1.2.0 | 2024-07-25 | [msprof_analyze-1.2.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.2.0/msprof_analyze-1.2.0-py3-none-any.whl) | 6a4366e3beca40b4a8305080e6e441d6ecafb5c05489e5905ac0265787555f37 | +| 1.1.2 | 2024-07-12 | [msprof_analyze-1.1.2-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.1.2/msprof_analyze-1.1.2-py3-none-any.whl) | af62125b1f9348bf491364e03af712fc6d0282ccee3fb07458bc9bbef82dacc6 | +| 1.1.1 | 2024-06-20 | [msprof_analyze-1.1.1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.1.1/msprof_analyze-1.1.1-py3-none-any.whl) | 76aad967a3823151421153d368d4d2f8e5cfbcb356033575e0b8ec5acea8e5e4 | +| 1.1.0 | 2024-05-28 | [msprof_analyze-1.1.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.1.0/msprof_analyze-1.1.0-py3-none-any.whl) | b339f70e7d1e45e81f289332ca64990a744d0e7ce6fdd84a8d82e814fa400698 | +| 1.0 | 2024-05-10 | [msprof_analyze-1.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/profiler/package/1.0/msprof_analyze-1.0-py3-none-any.whl) | 95b2f41c8c8e8afe4887b738c8cababcb4f412e1874483b6adae4a025fcbb7d4 | 2. whl包校验。 diff --git a/profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/mstx2commop.py b/profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/mstx2commop.py index f2b9c01b1..0b53798f5 100644 --- a/profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/mstx2commop.py +++ b/profiler/msprof_analyze/cluster_analyse/recipes/mstx2commop/mstx2commop.py @@ -64,12 +64,13 @@ class Mstx2Commop(BaseRecipeAnalysis): def _mapper_func(self, data_map, analysis_class): profiler_db_path = data_map.get(Constant.PROFILER_DB_PATH) - data_service = DatabaseService(profiler_db_path) + step_range = data_map.get(Constant.STEP_RANGE) + data_service = DatabaseService(profiler_db_path, step_range) data_service.add_table_for_query("ENUM_HCCL_DATA_TYPE", ["id", "name"]) data_service.add_table_for_query("STRING_IDS", ["id", "value"]) df_dict = data_service.query_data() - df = Mstx2CommopExport(profiler_db_path, analysis_class).read_export_db() + df = Mstx2CommopExport(profiler_db_path, analysis_class, step_range).read_export_db() if df is None or df.empty: logger.warning(f"There is no stats data in {profiler_db_path}.") diff --git a/profiler/msprof_analyze/prof_exports/mstx2commop_export.py b/profiler/msprof_analyze/prof_exports/mstx2commop_export.py index 5ed239603..f84b5e714 100644 --- a/profiler/msprof_analyze/prof_exports/mstx2commop_export.py +++ b/profiler/msprof_analyze/prof_exports/mstx2commop_export.py @@ -35,11 +35,13 @@ WHERE AND si.value LIKE '%"dataType":%' AND si.value LIKE '%"groupName":%' AND si.value LIKE '%"opName":%' + {} """ class Mstx2CommopExport(BaseStatsExport): - def __init__(self, db_path, recipe_name): - super().__init__(db_path, recipe_name) - self._query = QUERY + def __init__(self, db_path, recipe_name, step_range): + super().__init__(db_path, recipe_name, step_range) + filter_stat = "AND ta.startNs >= ? and ta.startNs <= ?" if step_range else "" + self._query = QUERY.format(filter_stat) diff --git a/profiler/msprof_analyze/version.txt b/profiler/msprof_analyze/version.txt index 50aea0e7a..c069720a9 100644 --- a/profiler/msprof_analyze/version.txt +++ b/profiler/msprof_analyze/version.txt @@ -1 +1 @@ -2.1.0 \ No newline at end of file +8.1.0.alpha1 \ No newline at end of file -- Gitee From d009e3b39f0c047d174080f1dcb9d842fda69bcd Mon Sep 17 00:00:00 2001 From: sunchao <1299792067@qq.com> Date: Thu, 26 Jun 2025 11:15:32 +0800 Subject: [PATCH 39/79] =?UTF-8?q?=F0=9F=90=9E=20fix:=20stackInfo=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E7=A7=80=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tb_graph_ascend/fe/src/graph_info_board/useNodeInfo.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_info_board/useNodeInfo.ts b/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_info_board/useNodeInfo.ts index 4d1b74901..9ea8877b2 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_info_board/useNodeInfo.ts +++ b/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_info_board/useNodeInfo.ts @@ -158,10 +158,10 @@ const useNodeInfo = (): UseNodeInfoType => { const benchstackInfo = benchNode?.stackData; const title = 'title'; if (!isEmpty(npustackInfo)) { - stackInfo[nodeName] = safeJSONParse(npustackInfo.replace(/'/g, '"'))?.join('\n'); + stackInfo[nodeName] = safeJSONParse(npustackInfo)?.join('\n'); } if (!isEmpty(benchstackInfo)) { - stackInfo[benchNodeName] = safeJSONParse(benchstackInfo.replace(/'/g, '"')).join('\n'); + stackInfo[benchNodeName] = safeJSONParse(benchstackInfo).join('\n'); } if (!isEmpty(stackInfo)) { stackInfo[title] = 'stackInfo'; -- Gitee From 666eb89fb62c429776039456e3567f9d0d62401c Mon Sep 17 00:00:00 2001 From: gitee Date: Thu, 26 Jun 2025 19:42:35 +0800 Subject: [PATCH 40/79] remove temp file when save json failed --- .../api_accuracy_checker/run_ut/multi_run_ut.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py b/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py index 56f5dd7ac..6fb0b00aa 100644 --- a/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +++ b/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py @@ -76,8 +76,17 @@ def split_json_file(input_file, num_splits, filter_api): } } split_filename = os.path.join(input_dir, f"temp_part{i}.json") - save_json(split_filename, temp_data) split_files.append(split_filename) + try: + save_json(split_filename, temp_data) + except Exception as e: + logger.error(f"An error occurred while saving split file: {e}") + for file in split_files: + check_link(file) + try: + remove_path(file) + except FileNotFoundError: + logger.error(f"File not found and could not be deleted: {file}") return split_files, total_items -- Gitee From 68dc8974666715a965e048352edd4446c03a87c4 Mon Sep 17 00:00:00 2001 From: gitee Date: Thu, 26 Jun 2025 20:10:39 +0800 Subject: [PATCH 41/79] add ] --- .../accuracy_tools/msprobe/pytorch/online_dispatch/dispatch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dispatch.py b/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dispatch.py index 916a68aec..4615f4554 100644 --- a/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dispatch.py +++ b/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dispatch.py @@ -104,7 +104,7 @@ class PtdbgDispatch(TorchDispatchMode): if not is_npu: return - logger.info(f'start write compare csv: Rank[{self.device_id}], Pid[{os.getpid()}') + logger.info(f'start write compare csv: Rank[{self.device_id}], Pid[{os.getpid()}]') if self.process_num > 0: self.pool.close() -- Gitee From ba121af733040b48381b7a7f13a211dfd8fcc78d Mon Sep 17 00:00:00 2001 From: pxp1 <958876660@qq.com> Date: Thu, 26 Jun 2025 20:17:53 +0800 Subject: [PATCH 42/79] =?UTF-8?q?=E5=A4=96=E9=83=A8=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E5=8A=A0=E5=9B=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/msprobe/core/common/const.py | 3 +++ debug/accuracy_tools/msprobe/core/common/utils.py | 15 +++++++++++++++ .../checkers/hyperparameter_checker.py | 9 +++++---- .../config_check/ckpt_compare/ckpt_comparator.py | 5 ++++- .../msprobe/core/single_save/single_comparator.py | 2 ++ .../msprobe/pytorch/monitor/csv2tb.py | 10 +--------- 6 files changed, 30 insertions(+), 14 deletions(-) diff --git a/debug/accuracy_tools/msprobe/core/common/const.py b/debug/accuracy_tools/msprobe/core/common/const.py index 4af7b5a85..59c3a354f 100644 --- a/debug/accuracy_tools/msprobe/core/common/const.py +++ b/debug/accuracy_tools/msprobe/core/common/const.py @@ -56,6 +56,9 @@ class Const: CPU_QUARTER = 4 DUMP_MAX_DEPTH = 50 + EXTERN_INPUT_LIST_MAX_LEN = 100 + MAX_PROCESS_NUM = 128 + # dump mode ALL = "all" LIST = "list" diff --git a/debug/accuracy_tools/msprobe/core/common/utils.py b/debug/accuracy_tools/msprobe/core/common/utils.py index 4635679c4..e65a707d4 100644 --- a/debug/accuracy_tools/msprobe/core/common/utils.py +++ b/debug/accuracy_tools/msprobe/core/common/utils.py @@ -685,3 +685,18 @@ def analyze_api_call_stack(name): else: stack_str.append(Const.WITHOUT_CALL_STACK) return "".join(stack_str) + + +def check_extern_input_list(input_list): + if not isinstance(input_list, list): + raise Exception("input is not a list") + if len(input_list) > Const.EXTERN_INPUT_LIST_MAX_LEN: + raise Exception(f"input list exceed max length {Const.EXTERN_INPUT_LIST_MAX_LEN}") + + +def check_process_num(process_num): + if not is_int(process_num) or process_num <= 0: + raise ValueError(f"process_num({process_num}) is not a positive integer") + if process_num > Const.MAX_PROCESS_NUM: + raise ValueError(f"The maximum supported process_num is {Const.MAX_PROCESS_NUM}, current value: {process_num}.") + diff --git a/debug/accuracy_tools/msprobe/core/config_check/checkers/hyperparameter_checker.py b/debug/accuracy_tools/msprobe/core/config_check/checkers/hyperparameter_checker.py index 774abef48..bd23f326b 100644 --- a/debug/accuracy_tools/msprobe/core/config_check/checkers/hyperparameter_checker.py +++ b/debug/accuracy_tools/msprobe/core/config_check/checkers/hyperparameter_checker.py @@ -20,12 +20,13 @@ from difflib import SequenceMatcher from typing import Union, List, Dict, Any import pandas as pd +from msprobe.core.common.utils import check_extern_input_list from msprobe.core.config_check.checkers.base_checker import BaseChecker from msprobe.core.config_check.config_checker import register_checker_item from msprobe.core.config_check.utils.utils import compare_dict, config_checking_print, update_dict from msprobe.core.config_check.utils.hyperparameter_parser import ParserFactory -from msprobe.core.common.file_utils import (os_walk_for_files, create_file_in_zip, load_json, create_file_with_list, - FileOpen, load_yaml) +from msprobe.core.common.file_utils import (check_file_or_directory_path, create_file_in_zip, load_json, + load_yaml) from msprobe.core.common.const import Const @@ -47,13 +48,13 @@ class HyperparameterChecker(BaseChecker): output_zip_path = pack_input.output_zip_path if shell_path: - if not isinstance(shell_path, list): - raise TypeError("shell_path should be a list of file paths.") + check_extern_input_list(shell_path) hyperparameters = {} parser_factory = ParserFactory() for script_path in shell_path: if os.path.isfile(script_path): + check_file_or_directory_path(script_path) parser = parser_factory.get_parser(os.path.splitext(script_path)[1]) update_dict(hyperparameters, parser.run(os.path.realpath(script_path))) else: diff --git a/debug/accuracy_tools/msprobe/core/config_check/ckpt_compare/ckpt_comparator.py b/debug/accuracy_tools/msprobe/core/config_check/ckpt_compare/ckpt_comparator.py index 3c088c249..42e2dcd53 100644 --- a/debug/accuracy_tools/msprobe/core/config_check/ckpt_compare/ckpt_comparator.py +++ b/debug/accuracy_tools/msprobe/core/config_check/ckpt_compare/ckpt_comparator.py @@ -16,7 +16,8 @@ from typing import Dict from tqdm import tqdm -from msprobe.core.common.file_utils import save_json, check_path_before_create, check_path_not_exists +from msprobe.core.common.file_utils import save_json, check_path_before_create, check_path_not_exists, \ + check_file_or_directory_path from msprobe.core.common.log import logger from msprobe.core.config_check.ckpt_compare.megatron_loader import load_megatron_weights from msprobe.core.config_check.ckpt_compare.metrics import METRIC_FUNC @@ -44,6 +45,8 @@ def compare_checkpoints(ckpt_path1, ckpt_path2, output_path) -> Dict: """ # Load both checkpoints + check_file_or_directory_path(ckpt_path1, isdir=True) + check_file_or_directory_path(ckpt_path2, isdir=True) check_path_before_create(output_path) check_path_not_exists(output_path) weights1 = load_megatron_weights(ckpt_path1) diff --git a/debug/accuracy_tools/msprobe/core/single_save/single_comparator.py b/debug/accuracy_tools/msprobe/core/single_save/single_comparator.py index 5aae155bf..e1cf68dfe 100644 --- a/debug/accuracy_tools/msprobe/core/single_save/single_comparator.py +++ b/debug/accuracy_tools/msprobe/core/single_save/single_comparator.py @@ -23,6 +23,7 @@ from tqdm import tqdm from msprobe.core.common.file_utils import check_file_or_directory_path, create_directory, save_excel from msprobe.core.common.log import logger +from msprobe.core.common.utils import check_process_num @dataclass @@ -57,6 +58,7 @@ class SingleComparator: data_dir2 = os.path.join(dir2, "data") check_file_or_directory_path(data_dir1, isdir=True) check_file_or_directory_path(data_dir2, isdir=True) + check_process_num(num_processes) # 确保输出目录存在,如果不存在则创建 if not os.path.exists(output_path): create_directory(output_path) diff --git a/debug/accuracy_tools/msprobe/pytorch/monitor/csv2tb.py b/debug/accuracy_tools/msprobe/pytorch/monitor/csv2tb.py index ebedae69d..d2a6d95cb 100644 --- a/debug/accuracy_tools/msprobe/pytorch/monitor/csv2tb.py +++ b/debug/accuracy_tools/msprobe/pytorch/monitor/csv2tb.py @@ -23,7 +23,7 @@ from tqdm import tqdm from msprobe.core.common.const import MonitorConst from msprobe.core.common.file_utils import read_csv, create_directory, remove_path, recursive_chmod -from msprobe.core.common.utils import is_int +from msprobe.core.common.utils import check_process_num from msprobe.core.common.decorator import recursion_depth_decorator from msprobe.pytorch.common.log import logger from msprobe.pytorch.monitor.utils import get_target_output_dir @@ -33,7 +33,6 @@ all_data_type_list = [ "grad_unreduced", "grad_reduced", "param_origin", "param_updated" ] CSV_FILE_SUFFIX = r"_\d+-\d+\.csv" -MAX_PROCESS_NUM = 128 def parse_step_line(line, ops): @@ -119,13 +118,6 @@ def csv2tb_by_step_work(target_output_dirs, output_dirpath, data_type_list): write_step(output_dirpath, all_step_result, rank, data_type) -def check_process_num(process_num): - if not is_int(process_num) or process_num <= 0: - raise ValueError(f"process_num({process_num}) is not a positive integer") - if process_num > MAX_PROCESS_NUM: - raise ValueError(f"The maximum supported process_num is {MAX_PROCESS_NUM}, current value: {process_num}.") - - def check_data_type_list(data_type_list): if data_type_list is None: logger.info(f"data_type_list is None, use default all_data_type_list: {all_data_type_list}") -- Gitee From ff8a65908baeb2dcd332063cfbcb769b6c43c443 Mon Sep 17 00:00:00 2001 From: pxp1 <958876660@qq.com> Date: Thu, 26 Jun 2025 20:41:38 +0800 Subject: [PATCH 43/79] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=B8=AD=E5=AD=98=E5=9C=A8int64=E5=AF=BC=E8=87=B4json=E5=BA=8F?= =?UTF-8?q?=E5=88=97=E5=8C=96=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msprobe/core/data_dump/data_processor/pytorch_processor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/core/data_dump/data_processor/pytorch_processor.py b/debug/accuracy_tools/msprobe/core/data_dump/data_processor/pytorch_processor.py index 2cd93b3ca..c06aabc85 100644 --- a/debug/accuracy_tools/msprobe/core/data_dump/data_processor/pytorch_processor.py +++ b/debug/accuracy_tools/msprobe/core/data_dump/data_processor/pytorch_processor.py @@ -181,7 +181,7 @@ class PytorchDataProcessor(BaseDataProcessor): @staticmethod def _analyze_torch_size(arg): - return {"type": "torch.Size", "value": list(arg)} + return {"type": "torch.Size", "value": [int(x) for x in list(arg)]} @staticmethod def _analyze_memory_format(arg): -- Gitee From a1ceef7cd10a83c93bdf6ea6a1c38e8da1a44ae1 Mon Sep 17 00:00:00 2001 From: yangchen <947098055@qq.com> Date: Thu, 26 Jun 2025 12:49:43 +0000 Subject: [PATCH 44/79] =?UTF-8?q?cleancode=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yangchen <947098055@qq.com> --- debug/accuracy_tools/msprobe/ccsrc/utils/FileUtils.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debug/accuracy_tools/msprobe/ccsrc/utils/FileUtils.cpp b/debug/accuracy_tools/msprobe/ccsrc/utils/FileUtils.cpp index 112462e86..9b1cdb75d 100644 --- a/debug/accuracy_tools/msprobe/ccsrc/utils/FileUtils.cpp +++ b/debug/accuracy_tools/msprobe/ccsrc/utils/FileUtils.cpp @@ -465,8 +465,8 @@ DebuggerErrno OpenFile(const std::string& path, std::ofstream& ofs, std::ios::op } } - if (!IsPathExist(path)) { - int fd = open(path.c_str(), O_CREAT | O_WRONLY, permission); + if (!IsPathExist(realPath)) { + int fd = open(realPath.c_str(), O_CREAT | O_WRONLY, permission); if (fd < 0) { return DebuggerErrno::ERROR_FAILED_TO_OPEN_FILE; } -- Gitee From 4e199c899971843b7238e00353cc5cbb6a4d499c Mon Sep 17 00:00:00 2001 From: Linwei-Ying Date: Fri, 27 Jun 2025 09:04:04 +0800 Subject: [PATCH 45/79] compare log bugfix --- debug/accuracy_tools/msprobe/core/common/file_utils.py | 2 +- debug/accuracy_tools/msprobe/core/common/utils.py | 5 +++-- .../accuracy_tools/msprobe/test/core_ut/common/test_utils.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/debug/accuracy_tools/msprobe/core/common/file_utils.py b/debug/accuracy_tools/msprobe/core/common/file_utils.py index 424e3d08c..1b848791f 100644 --- a/debug/accuracy_tools/msprobe/core/common/file_utils.py +++ b/debug/accuracy_tools/msprobe/core/common/file_utils.py @@ -384,7 +384,7 @@ def check_file_type(path): elif os.path.isfile(path): return FileCheckConst.FILE else: - logger.error(f'{path} does not exist, please check!') + logger.error(f'path does not exist, please check!') raise FileCheckException(FileCheckException.INVALID_FILE_ERROR) diff --git a/debug/accuracy_tools/msprobe/core/common/utils.py b/debug/accuracy_tools/msprobe/core/common/utils.py index 4635679c4..82311b2cb 100644 --- a/debug/accuracy_tools/msprobe/core/common/utils.py +++ b/debug/accuracy_tools/msprobe/core/common/utils.py @@ -233,9 +233,10 @@ def check_compare_param(input_param, output_path, dump_mode, stack_mode): def check_configuration_param(stack_mode=False, auto_analyze=True, fuzzy_match=False, is_print_compare_log=True): arg_list = [stack_mode, auto_analyze, fuzzy_match, is_print_compare_log] - for arg in arg_list: + arg_names = ['stack_mode', 'auto_analyze', 'fuzzy_match', 'is_print_compare_log'] + for arg, name in zip(arg_list, arg_names): if not isinstance(arg, bool): - logger.error(f"Invalid input parameter, {arg} which should be only bool type.") + logger.error(f"Invalid input parameter, {name} which should be only bool type.") raise CompareException(CompareException.INVALID_PARAM_ERROR) diff --git a/debug/accuracy_tools/msprobe/test/core_ut/common/test_utils.py b/debug/accuracy_tools/msprobe/test/core_ut/common/test_utils.py index 2c9d1dd86..7a62d9f02 100644 --- a/debug/accuracy_tools/msprobe/test/core_ut/common/test_utils.py +++ b/debug/accuracy_tools/msprobe/test/core_ut/common/test_utils.py @@ -140,7 +140,7 @@ class TestUtils(TestCase): check_configuration_param(stack_mode="False", auto_analyze=True, fuzzy_match=False, is_print_compare_log=True) self.assertEqual(context.exception.code, CompareException.INVALID_PARAM_ERROR) - mock_error.assert_called_with("Invalid input parameter, False which should be only bool type.") + mock_error.assert_called_with("Invalid input parameter, stack_mode which should be only bool type.") @patch.object(logger, "error") def test__check_json(self, mock_error): -- Gitee From e792135c5c96e93e49f53762084f674d89542201 Mon Sep 17 00:00:00 2001 From: RanZheng <364167184@qq.com> Date: Fri, 27 Jun 2025 10:27:22 +0800 Subject: [PATCH 46/79] =?UTF-8?q?=E3=80=90=E5=AE=89=E5=85=A8=E3=80=91parse?= =?UTF-8?q?=5Ftool=E5=8E=BB=E9=99=A4=E5=A4=96=E9=83=A8=E4=BC=A0=E5=85=A5?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py b/debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py index 2cdfe6f51..ff294ad67 100644 --- a/debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py +++ b/debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py @@ -226,7 +226,7 @@ class Util: def check_path_valid(self, path): path = self.path_strip(path) if not path or not os.path.exists(path): - self.log.error("The path %s does not exist." % path) + self.log.error("The path does not exist.") raise ParseException(ParseException.PARSE_INVALID_PATH_ERROR) isdir = check_file_type(path) == FileCheckConst.DIR check_file_or_directory_path(path, isdir=isdir) @@ -234,7 +234,7 @@ class Util: def check_files_in_path(self, path): if os.path.isdir(path) and len(os.listdir(path)) == 0: - self.log.error("No files in %s." % path) + self.log.error("No files found in path dir.") raise ParseException(ParseException.PARSE_INVALID_PATH_ERROR) def npy_info(self, source_data): -- Gitee From 276465470e2f12cbea5c3dc03bad9caa119b89e7 Mon Sep 17 00:00:00 2001 From: RanZheng <364167184@qq.com> Date: Fri, 27 Jun 2025 10:39:05 +0800 Subject: [PATCH 47/79] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py b/debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py index ff294ad67..a3886641e 100644 --- a/debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py +++ b/debug/accuracy_tools/msprobe/pytorch/parse_tool/lib/utils.py @@ -234,7 +234,7 @@ class Util: def check_files_in_path(self, path): if os.path.isdir(path) and len(os.listdir(path)) == 0: - self.log.error("No files found in path dir.") + self.log.error("No files found in path.") raise ParseException(ParseException.PARSE_INVALID_PATH_ERROR) def npy_info(self, source_data): -- Gitee From 93667491d07358ea5bbb631d8a37a44e41a79610 Mon Sep 17 00:00:00 2001 From: gitee Date: Fri, 27 Jun 2025 11:11:55 +0800 Subject: [PATCH 48/79] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msprobe/pytorch/online_dispatch/dump_compare.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py b/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py index dbf7626a2..adc0c3a82 100644 --- a/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py +++ b/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py @@ -21,7 +21,7 @@ from datetime import datetime, timezone import torch from msprobe.core.common.const import Const from msprobe.core.common.decorator import recursion_depth_decorator -from msprobe.core.common.file_utils import FileOpen, save_npy, save_json +from msprobe.core.common.file_utils import FileOpen, save_npy, save_json, remove_path, check_link from msprobe.pytorch.common.log import logger @@ -113,6 +113,13 @@ def save_temp_summary(api_index, single_api_summary, path, lock): try: data = [api_index, single_api_summary] save_json(summary_path, data, mode='a') + except Exception as e: + logger.error(f'save temp summary error:{e}') + check_link(summary_path) + try: + remove_path(summary_path) + except Exception as e: + logger.error(f'remove temp summary error:{e}') finally: lock.release() -- Gitee From 56610acd50bd17df5a1b43079eb0f55cfd9ce023 Mon Sep 17 00:00:00 2001 From: fanglanyue Date: Fri, 27 Jun 2025 10:23:41 +0800 Subject: [PATCH 49/79] delete urllib3 requirement --- profiler/msprof_analyze/requirements/build.txt | 2 -- profiler/msprof_analyze/requirements/tests.txt | 2 -- 2 files changed, 4 deletions(-) diff --git a/profiler/msprof_analyze/requirements/build.txt b/profiler/msprof_analyze/requirements/build.txt index 3ef20e787..7c05f4dab 100644 --- a/profiler/msprof_analyze/requirements/build.txt +++ b/profiler/msprof_analyze/requirements/build.txt @@ -6,10 +6,8 @@ PyYaml tqdm prettytable ijson -requests xlsxwriter>=3.0.6 sqlalchemy -urllib3<2.0 numpy<=1.26.4 pandas psutil \ No newline at end of file diff --git a/profiler/msprof_analyze/requirements/tests.txt b/profiler/msprof_analyze/requirements/tests.txt index 6ef8754a2..bdaea7bb5 100644 --- a/profiler/msprof_analyze/requirements/tests.txt +++ b/profiler/msprof_analyze/requirements/tests.txt @@ -11,9 +11,7 @@ PyYaml tqdm prettytable ijson -requests xlsxwriter sqlalchemy -urllib3<2.0 beautifulsoup4 openpyxl \ No newline at end of file -- Gitee From de6fe64bd04abf03ab2310952af23812e8ae5ab8 Mon Sep 17 00:00:00 2001 From: l30036321 Date: Thu, 26 Jun 2025 16:10:42 +0800 Subject: [PATCH 50/79] save doc --- .../msprobe/docs/05.data_dump_PyTorch.md | 2 + .../msprobe/docs/06.data_dump_MindSpore.md | 1 + .../docs/28.debugger_save_instruction.md | 68 +++++++++++++++++-- 3 files changed, 67 insertions(+), 4 deletions(-) diff --git a/debug/accuracy_tools/msprobe/docs/05.data_dump_PyTorch.md b/debug/accuracy_tools/msprobe/docs/05.data_dump_PyTorch.md index db745f420..e152710ca 100644 --- a/debug/accuracy_tools/msprobe/docs/05.data_dump_PyTorch.md +++ b/debug/accuracy_tools/msprobe/docs/05.data_dump_PyTorch.md @@ -238,6 +238,8 @@ save(variable, name, save_backward=True) | name | 指定的名称 | str | 是 | | save_backward | 是否保存反向数据 | boolean | 否 | +具体使用样例可参考:[单点保存工具使用介绍](./28.debugger_save_instruction.md)。 + ### 1.10 set_init_step **功能说明**:设置起始step数,step数默认从0开始计数,使用该接口后step从指定值开始计数。该函数需要写在训练迭代的循环开始前,不能写在循环内。 diff --git a/debug/accuracy_tools/msprobe/docs/06.data_dump_MindSpore.md b/debug/accuracy_tools/msprobe/docs/06.data_dump_MindSpore.md index 4019c87ac..fa0a3e891 100644 --- a/debug/accuracy_tools/msprobe/docs/06.data_dump_MindSpore.md +++ b/debug/accuracy_tools/msprobe/docs/06.data_dump_MindSpore.md @@ -153,6 +153,7 @@ save(variable, name, save_backward=True) | name | 指定的名称 | str | 是 | | save_backward | 是否保存反向数据 | boolean | 否 | +具体使用样例可参考:[单点保存工具使用介绍](./28.debugger_save_instruction.md)。 #### 6.1.6 set_init_step diff --git a/debug/accuracy_tools/msprobe/docs/28.debugger_save_instruction.md b/debug/accuracy_tools/msprobe/docs/28.debugger_save_instruction.md index db4b20d24..3b85320fa 100644 --- a/debug/accuracy_tools/msprobe/docs/28.debugger_save_instruction.md +++ b/debug/accuracy_tools/msprobe/docs/28.debugger_save_instruction.md @@ -79,12 +79,72 @@ for data, label in data_loader: ``` -调用保存接口 +调用保存接口示例(以PyTorch代码为例,MindSpore使用方法相同) ```python -# 训练过程中被调用py文件 +import torch +import torch.nn as nn +import torch.nn.functional as F + +from msprobe.pytorch import PrecisionDebugger, seed_all +# 在模型训练开始前实例化PrecisionDebugger +debugger = PrecisionDebugger(dump_path="dump_path", level="debug") + +# 定义网络 +class ModuleOP(nn.Module): + def __init__(self) -> None: + super().__init__() + self.linear_1 = nn.Linear(in_features=8, out_features=4) + self.linear_2 = nn.Linear(in_features=4, out_features=2) + + def forward(self, x): + x1 = self.linear_1(x) + x2 = self.linear_2(x1) + debugger.save(x2, "x2", save_backward=True) # 调用save接口 + r1 = F.relu(x2) + return r1 + +if __name__ == "__main__": + module = ModuleOP() + + x = torch.randn(10, 8) + out = module(x) + loss = out.sum() + loss.backward() +``` + +分step保存数据(以PyTorch代码为例,MindSpore使用方法相同) +```python +import torch +import torch.nn as nn +import torch.nn.functional as F + from msprobe.pytorch import PrecisionDebugger -dict_variable = {"key1": "value1", "key2": [1, 2]} -PrecisionDebugger.save(dict_variable, "dict_variable", save_backward=False) +# 在模型训练开始前实例化PrecisionDebugger +debugger = PrecisionDebugger(dump_path="dump_path", level="debug") + +# 定义网络 +class ModuleOP(nn.Module): + def __init__(self) -> None: + super().__init__() + self.linear_1 = nn.Linear(in_features=8, out_features=4) + self.linear_2 = nn.Linear(in_features=4, out_features=2) + + def forward(self, x): + x1 = self.linear_1(x) + x2 = self.linear_2(x1) + debugger.save(x2, "x2", save_backward=True) # 调用save接口 + r1 = F.relu(x2) + return r1 + +if __name__ == "__main__": + module = ModuleOP() + train_iter = 10 + for i in range(train_iter): + x = torch.randn(10, 8) + out = module(x) + loss = out.sum() + loss.backward() + debugger.step() # 调用debugger.step用于区分step保存 ``` -- Gitee From 3dd42b380d44949c0890b64a06c6e04ac9c71381 Mon Sep 17 00:00:00 2001 From: gitee Date: Fri, 27 Jun 2025 14:11:10 +0800 Subject: [PATCH 51/79] fix cleancode --- .../msprobe/pytorch/online_dispatch/dump_compare.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py b/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py index adc0c3a82..8d6c1f7ac 100644 --- a/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py +++ b/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py @@ -118,8 +118,8 @@ def save_temp_summary(api_index, single_api_summary, path, lock): check_link(summary_path) try: remove_path(summary_path) - except Exception as e: - logger.error(f'remove temp summary error:{e}') + except FileNotFoundError: + logger.error(f'file not found:{summary_path}') finally: lock.release() -- Gitee From 985cc614c2f5efc4749066294d0ebb0a5576668a Mon Sep 17 00:00:00 2001 From: l30036321 Date: Thu, 26 Jun 2025 15:44:49 +0800 Subject: [PATCH 52/79] fix model list out of range --- debug/accuracy_tools/msprobe/core/service.py | 3 ++- .../mindspore/debugger/debugger_config.py | 14 +++++++++----- .../msprobe/pytorch/debugger/debugger_config.py | 17 ++++++++++++----- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/debug/accuracy_tools/msprobe/core/service.py b/debug/accuracy_tools/msprobe/core/service.py index 5f0fb49b0..f435549d1 100644 --- a/debug/accuracy_tools/msprobe/core/service.py +++ b/debug/accuracy_tools/msprobe/core/service.py @@ -303,7 +303,8 @@ class BaseService(ABC): self.logger.info( f"Current token id: {self.cur_token_id}, exceed token_range, early stop dump infer token.") self.cur_token_id += 1 - if isinstance(root_model, list): + # 此处root_model可以保证为 Module/Cell类型 或 [Module/Cell]类型 + if root_model and isinstance(root_model, list): root_model = root_model[0] self.logger.warning("Infer model can only input one to support token_range, choose the first one.") if self._is_online_run_ut: diff --git a/debug/accuracy_tools/msprobe/mindspore/debugger/debugger_config.py b/debug/accuracy_tools/msprobe/mindspore/debugger/debugger_config.py index b56273160..90b84c900 100644 --- a/debug/accuracy_tools/msprobe/mindspore/debugger/debugger_config.py +++ b/debug/accuracy_tools/msprobe/mindspore/debugger/debugger_config.py @@ -81,18 +81,22 @@ class DebuggerConfig: target_module_type = (torch.nn.Module, "torch.nn.Module") if is_mindtorch() else (nn.Cell, "mindspore.nn.Cell") if models is None or isinstance(models, target_module_type[0]): return models - error_model = None if isinstance(models, (list, tuple)): + error_model = None for model in models: if not isinstance(model, target_module_type[0]): error_model = model break - else: - error_model = models + if error_model is not None: + error_info = ( + f"The 'model' parameter must be a {target_module_type[1]} or list[{target_module_type[1]}] " + f"type, currently there is a {type(error_model)} type.") + raise MsprobeException( + MsprobeException.INVALID_PARAM_ERROR, error_info) - if error_model is not None: + else: error_info = (f"The 'model' parameter must be a {target_module_type[1]} or list[{target_module_type[1]}] " - f"type, currently there is a {type(error_model)} type.") + f"type, currently there is a {type(models)} type.") raise MsprobeException( MsprobeException.INVALID_PARAM_ERROR, error_info) return models diff --git a/debug/accuracy_tools/msprobe/pytorch/debugger/debugger_config.py b/debug/accuracy_tools/msprobe/pytorch/debugger/debugger_config.py index 2ed2b3a08..ed5204c0d 100644 --- a/debug/accuracy_tools/msprobe/pytorch/debugger/debugger_config.py +++ b/debug/accuracy_tools/msprobe/pytorch/debugger/debugger_config.py @@ -98,6 +98,11 @@ class DebuggerConfig: def check_model(self, instance, start_model, token_range=None): instance.model = start_model if start_model is not None else instance.model + + if token_range and not instance.model: + error_info = "The 'model' parameter must be provided when token_range is not None" + raise MsprobeException(MsprobeException.INVALID_PARAM_ERROR, error_info) + if self.level not in [Const.LEVEL_L0, Const.LEVEL_MIX] and token_range is None: return @@ -110,18 +115,20 @@ class DebuggerConfig: if is_torch_nn_module(instance.model): return - error_model = None if isinstance(instance.model, (list, tuple)): + error_model = None for model in instance.model: if not is_torch_nn_module(model): error_model = model break + if error_model is not None: + error_info = (f"The 'model' parameter must be a torch.nn.Module or list[torch.nn.Module] " + f"type, currently there is an unsupported {type(error_model)} type.") + raise MsprobeException( + MsprobeException.INVALID_PARAM_ERROR, error_info) else: - error_model = instance.model - - if error_model is not None: error_info = (f"The 'model' parameter must be a torch.nn.Module or list[torch.nn.Module] " - f"type, currently there is an unsupported {type(error_model)} type.") + f"type, currently there is an unsupported {type(instance.model)} type.") raise MsprobeException( MsprobeException.INVALID_PARAM_ERROR, error_info) -- Gitee From fab2a5a139e854211a80b7795efc4ddc4d790577 Mon Sep 17 00:00:00 2001 From: gitee Date: Fri, 27 Jun 2025 15:25:46 +0800 Subject: [PATCH 53/79] fix review --- .../pytorch/api_accuracy_checker/run_ut/multi_run_ut.py | 5 +++-- .../msprobe/pytorch/online_dispatch/dump_compare.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py b/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py index 6fb0b00aa..bfda1daf5 100644 --- a/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +++ b/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py @@ -82,12 +82,13 @@ def split_json_file(input_file, num_splits, filter_api): except Exception as e: logger.error(f"An error occurred while saving split file: {e}") for file in split_files: - check_link(file) try: + check_link(file) remove_path(file) except FileNotFoundError: logger.error(f"File not found and could not be deleted: {file}") - + msg = 'ERROR: Split json file failed, please check the input file and try again.' + raise CompareException(CompareException.PARSE_FILE_ERROR, msg) return split_files, total_items diff --git a/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py b/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py index 8d6c1f7ac..2568ff69c 100644 --- a/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py +++ b/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py @@ -115,8 +115,8 @@ def save_temp_summary(api_index, single_api_summary, path, lock): save_json(summary_path, data, mode='a') except Exception as e: logger.error(f'save temp summary error:{e}') - check_link(summary_path) try: + check_link(summary_path) remove_path(summary_path) except FileNotFoundError: logger.error(f'file not found:{summary_path}') -- Gitee From 06c3d96ee42f983b39d0e377c7b90a74ae974f86 Mon Sep 17 00:00:00 2001 From: gitee Date: Fri, 27 Jun 2025 15:52:01 +0800 Subject: [PATCH 54/79] fix bug --- .../pytorch/api_accuracy_checker/run_ut/multi_run_ut.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py b/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py index bfda1daf5..c99ebbdec 100644 --- a/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +++ b/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py @@ -87,8 +87,8 @@ def split_json_file(input_file, num_splits, filter_api): remove_path(file) except FileNotFoundError: logger.error(f"File not found and could not be deleted: {file}") - msg = 'ERROR: Split json file failed, please check the input file and try again.' - raise CompareException(CompareException.PARSE_FILE_ERROR, msg) + msg = 'ERROR: Split json file failed, please check the input file and try again.' + raise CompareException(CompareException.PARSE_FILE_ERROR, msg) from e return split_files, total_items -- Gitee From cd516f9f35e0607fae3a8fe57ed4dea2f3a23df1 Mon Sep 17 00:00:00 2001 From: gitee Date: Fri, 27 Jun 2025 16:16:01 +0800 Subject: [PATCH 55/79] fix review --- .../msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py | 1 - .../msprobe/pytorch/online_dispatch/dump_compare.py | 1 - 2 files changed, 2 deletions(-) diff --git a/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py b/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py index c99ebbdec..15e18fe85 100644 --- a/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +++ b/debug/accuracy_tools/msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py @@ -83,7 +83,6 @@ def split_json_file(input_file, num_splits, filter_api): logger.error(f"An error occurred while saving split file: {e}") for file in split_files: try: - check_link(file) remove_path(file) except FileNotFoundError: logger.error(f"File not found and could not be deleted: {file}") diff --git a/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py b/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py index 2568ff69c..a254599f6 100644 --- a/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py +++ b/debug/accuracy_tools/msprobe/pytorch/online_dispatch/dump_compare.py @@ -116,7 +116,6 @@ def save_temp_summary(api_index, single_api_summary, path, lock): except Exception as e: logger.error(f'save temp summary error:{e}') try: - check_link(summary_path) remove_path(summary_path) except FileNotFoundError: logger.error(f'file not found:{summary_path}') -- Gitee From 76621817b05402361f02ac96dc626771f0324534 Mon Sep 17 00:00:00 2001 From: Linwei-Ying Date: Wed, 25 Jun 2025 09:42:40 +0800 Subject: [PATCH 56/79] add transfer_to_npu quick main.py add transfer_to_npu quick main.py add transfer_to_npu quick main.py add transfer_to_npu quick main.py add transfer_to_npu quick main.py --- sample/transfer_to_npu/main.py | 533 +++++++++++++++++++++++++++++++++ 1 file changed, 533 insertions(+) create mode 100644 sample/transfer_to_npu/main.py diff --git a/sample/transfer_to_npu/main.py b/sample/transfer_to_npu/main.py new file mode 100644 index 000000000..00c2a0c2d --- /dev/null +++ b/sample/transfer_to_npu/main.py @@ -0,0 +1,533 @@ +# BSD 3-Clause License +# +# Copyright (c) 2017, +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +#* Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +#* Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +#* Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. + +import argparse +import os +import random +import shutil +import time +import warnings +from enum import Enum + +import torch +import torch.backends.cudnn as cudnn +import torch.distributed as dist +import torch.multiprocessing as mp +import torch.nn as nn +import torch.nn.parallel +import torch.optim +import torch.utils.data +import torch.utils.data.distributed +import torchvision.datasets as datasets +import torchvision.models as models +import torchvision.transforms as transforms +from torch.optim.lr_scheduler import StepLR +from torch.utils.data import Subset + +model_names = sorted(name for name in models.__dict__ + if name.islower() and not name.startswith("__") + and callable(models.__dict__[name])) + +parser = argparse.ArgumentParser(description='PyTorch ImageNet Training') +parser.add_argument('data', metavar='DIR', nargs='?', default='imagenet', + help='path to dataset (default: imagenet)') +parser.add_argument('-a', '--arch', metavar='ARCH', default='resnet18', + choices=model_names, + help='model architecture: ' + + ' | '.join(model_names) + + ' (default: resnet18)') +parser.add_argument('-j', '--workers', default=4, type=int, metavar='N', + help='number of data loading workers (default: 4)') +parser.add_argument('--epochs', default=90, type=int, metavar='N', + help='number of total epochs to run') +parser.add_argument('--start-epoch', default=0, type=int, metavar='N', + help='manual epoch number (useful on restarts)') +parser.add_argument('-b', '--batch-size', default=256, type=int, + metavar='N', + help='mini-batch size (default: 256), this is the total ' + 'batch size of all GPUs on the current node when ' + 'using Data Parallel or Distributed Data Parallel') +parser.add_argument('--lr', '--learning-rate', default=0.1, type=float, + metavar='LR', help='initial learning rate', dest='lr') +parser.add_argument('--momentum', default=0.9, type=float, metavar='M', + help='momentum') +parser.add_argument('--wd', '--weight-decay', default=1e-4, type=float, + metavar='W', help='weight decay (default: 1e-4)', + dest='weight_decay') +parser.add_argument('-p', '--print-freq', default=10, type=int, + metavar='N', help='print frequency (default: 10)') +parser.add_argument('--resume', default='', type=str, metavar='PATH', + help='path to latest checkpoint (default: none)') +parser.add_argument('-e', '--evaluate', dest='evaluate', action='store_true', + help='evaluate model on validation set') +parser.add_argument('--pretrained', dest='pretrained', action='store_true', + help='use pre-trained model') +parser.add_argument('--world-size', default=-1, type=int, + help='number of nodes for distributed training') +parser.add_argument('--rank', default=-1, type=int, + help='node rank for distributed training') +parser.add_argument('--dist-url', default='tcp://224.66.41.62:23456', type=str, + help='url used to set up distributed training') +parser.add_argument('--dist-backend', default='nccl', type=str, + help='distributed backend') +parser.add_argument('--seed', default=None, type=int, + help='seed for initializing training. ') +parser.add_argument('--gpu', default=None, type=int, + help='GPU id to use.') +parser.add_argument('--multiprocessing-distributed', action='store_true', + help='Use multi-processing distributed training to launch ' + 'N processes per node, which has N GPUs. This is the ' + 'fastest way to use PyTorch for either single node or ' + 'multi node data parallel training') +parser.add_argument('--dummy', action='store_true', help="use fake data to benchmark") + +best_acc1 = 0 + + +def main(): + args = parser.parse_args() + + if args.seed is not None: + random.seed(args.seed) + torch.manual_seed(args.seed) + cudnn.deterministic = True + cudnn.benchmark = False + warnings.warn('You have chosen to seed training. ' + 'This will turn on the CUDNN deterministic setting, ' + 'which can slow down your training considerably! ' + 'You may see unexpected behavior when restarting ' + 'from checkpoints.') + + if args.gpu is not None: + warnings.warn('You have chosen a specific GPU. This will completely ' + 'disable data parallelism.') + + if args.dist_url == "env://" and args.world_size == -1: + args.world_size = int(os.environ["WORLD_SIZE"]) + + args.distributed = args.world_size > 1 or args.multiprocessing_distributed + + if torch.cuda.is_available(): + ngpus_per_node = torch.cuda.device_count() + if ngpus_per_node == 1 and args.dist_backend == "nccl": + warnings.warn("nccl backend >=2.5 requires GPU count>1, see https://github.com/NVIDIA/nccl/issues/103 perhaps use 'gloo'") + else: + ngpus_per_node = 1 + + if args.multiprocessing_distributed: + # Since we have ngpus_per_node processes per node, the total world_size + # needs to be adjusted accordingly + args.world_size = ngpus_per_node * args.world_size + # Use torch.multiprocessing.spawn to launch distributed processes: the + # main_worker process function + mp.spawn(main_worker, nprocs=ngpus_per_node, args=(ngpus_per_node, args)) + else: + # Simply call main_worker function + main_worker(args.gpu, ngpus_per_node, args) + + +def main_worker(gpu, ngpus_per_node, args): + global best_acc1 + args.gpu = gpu + + if args.gpu is not None: + print("Use GPU: {} for training".format(args.gpu)) + + if args.distributed: + if args.dist_url == "env://" and args.rank == -1: + args.rank = int(os.environ["RANK"]) + if args.multiprocessing_distributed: + # For multiprocessing distributed training, rank needs to be the + # global rank among all the processes + args.rank = args.rank * ngpus_per_node + gpu + dist.init_process_group(backend=args.dist_backend, init_method=args.dist_url, + world_size=args.world_size, rank=args.rank) + # create model + if args.pretrained: + print("=> using pre-trained model '{}'".format(args.arch)) + model = models.__dict__[args.arch](pretrained=True) + else: + print("=> creating model '{}'".format(args.arch)) + model = models.__dict__[args.arch]() + + if not torch.cuda.is_available() and not torch.backends.mps.is_available(): + print('using CPU, this will be slow') + elif args.distributed: + # For multiprocessing distributed, DistributedDataParallel constructor + # should always set the single device scope, otherwise, + # DistributedDataParallel will use all available devices. + if torch.cuda.is_available(): + if args.gpu is not None: + torch.cuda.set_device(args.gpu) + model.cuda(args.gpu) + # When using a single GPU per process and per + # DistributedDataParallel, we need to divide the batch size + # ourselves based on the total number of GPUs of the current node. + args.batch_size = int(args.batch_size / ngpus_per_node) + args.workers = int((args.workers + ngpus_per_node - 1) / ngpus_per_node) + model = torch.nn.parallel.DistributedDataParallel(model, device_ids=[args.gpu]) + else: + model.cuda() + # DistributedDataParallel will divide and allocate batch_size to all + # available GPUs if device_ids are not set + model = torch.nn.parallel.DistributedDataParallel(model) + elif args.gpu is not None and torch.cuda.is_available(): + torch.cuda.set_device(args.gpu) + model = model.cuda(args.gpu) + elif torch.backends.mps.is_available(): + device = torch.device("mps") + model = model.to(device) + else: + # DataParallel will divide and allocate batch_size to all available GPUs + if args.arch.startswith('alexnet') or args.arch.startswith('vgg'): + model.features = torch.nn.DataParallel(model.features) + model.cuda() + else: + model = torch.nn.DataParallel(model).cuda() + + if torch.cuda.is_available(): + if args.gpu: + device = torch.device('cuda:{}'.format(args.gpu)) + else: + device = torch.device("cuda") + elif torch.backends.mps.is_available(): + device = torch.device("mps") + else: + device = torch.device("cpu") + # define loss function (criterion), optimizer, and learning rate scheduler + criterion = nn.CrossEntropyLoss().to(device) + + optimizer = torch.optim.SGD(model.parameters(), args.lr, + momentum=args.momentum, + weight_decay=args.weight_decay) + + """Sets the learning rate to the initial LR decayed by 10 every 30 epochs""" + scheduler = StepLR(optimizer, step_size=30, gamma=0.1) + + # optionally resume from a checkpoint + if args.resume: + if os.path.isfile(args.resume): + print("=> loading checkpoint '{}'".format(args.resume)) + if args.gpu is None: + checkpoint = torch.load(args.resume) + elif torch.cuda.is_available(): + # Map model to be loaded to specified single gpu. + loc = 'cuda:{}'.format(args.gpu) + checkpoint = torch.load(args.resume, map_location=loc) + args.start_epoch = checkpoint['epoch'] + best_acc1 = checkpoint['best_acc1'] + if args.gpu is not None: + # best_acc1 may be from a checkpoint from a different GPU + best_acc1 = best_acc1.to(args.gpu) + model.load_state_dict(checkpoint['state_dict']) + optimizer.load_state_dict(checkpoint['optimizer']) + scheduler.load_state_dict(checkpoint['scheduler']) + print("=> loaded checkpoint '{}' (epoch {})" + .format(args.resume, checkpoint['epoch'])) + else: + print("=> no checkpoint found at '{}'".format(args.resume)) + + + # Data loading code + if args.dummy: + print("=> Dummy data is used!") + train_dataset = datasets.FakeData(1281167, (3, 224, 224), 1000, transforms.ToTensor()) + val_dataset = datasets.FakeData(50000, (3, 224, 224), 1000, transforms.ToTensor()) + else: + traindir = os.path.join(args.data, 'train') + valdir = os.path.join(args.data, 'val') + normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], + std=[0.229, 0.224, 0.225]) + + train_dataset = datasets.ImageFolder( + traindir, + transforms.Compose([ + transforms.RandomResizedCrop(224), + transforms.RandomHorizontalFlip(), + transforms.ToTensor(), + normalize, + ])) + + val_dataset = datasets.ImageFolder( + valdir, + transforms.Compose([ + transforms.Resize(256), + transforms.CenterCrop(224), + transforms.ToTensor(), + normalize, + ])) + + if args.distributed: + train_sampler = torch.utils.data.distributed.DistributedSampler(train_dataset) + val_sampler = torch.utils.data.distributed.DistributedSampler(val_dataset, shuffle=False, drop_last=True) + else: + train_sampler = None + val_sampler = None + + train_loader = torch.utils.data.DataLoader( + train_dataset, batch_size=args.batch_size, shuffle=(train_sampler is None), + num_workers=args.workers, pin_memory=True, sampler=train_sampler) + + val_loader = torch.utils.data.DataLoader( + val_dataset, batch_size=args.batch_size, shuffle=False, + num_workers=args.workers, pin_memory=True, sampler=val_sampler) + + if args.evaluate: + validate(val_loader, model, criterion, args) + return + + for epoch in range(args.start_epoch, args.epochs): + if args.distributed: + train_sampler.set_epoch(epoch) + + # train for one epoch + train(train_loader, model, criterion, optimizer, epoch, device, args) + + # evaluate on validation set + acc1 = validate(val_loader, model, criterion, args) + + scheduler.step() + + # remember best acc@1 and save checkpoint + is_best = acc1 > best_acc1 + best_acc1 = max(acc1, best_acc1) + + if not args.multiprocessing_distributed or (args.multiprocessing_distributed + and args.rank % ngpus_per_node == 0): + save_checkpoint({ + 'epoch': epoch + 1, + 'arch': args.arch, + 'state_dict': model.state_dict(), + 'best_acc1': best_acc1, + 'optimizer' : optimizer.state_dict(), + 'scheduler' : scheduler.state_dict() + }, is_best) + + +def train(train_loader, model, criterion, optimizer, epoch, device, args): + batch_time = AverageMeter('Time', ':6.3f') + data_time = AverageMeter('Data', ':6.3f') + losses = AverageMeter('Loss', ':.4e') + top1 = AverageMeter('Acc@1', ':6.2f') + top5 = AverageMeter('Acc@5', ':6.2f') + progress = ProgressMeter( + len(train_loader), + [batch_time, data_time, losses, top1, top5], + prefix="Epoch: [{}]".format(epoch)) + + # switch to train mode + model.train() + + end = time.time() + for i, (images, target) in enumerate(train_loader): + # measure data loading time + data_time.update(time.time() - end) + + # move data to the same device as model + images = images.to(device, non_blocking=True) + target = target.to(device, non_blocking=True) + + # compute output + output = model(images) + loss = criterion(output, target) + + # measure accuracy and record loss + acc1, acc5 = accuracy(output, target, topk=(1, 5)) + losses.update(loss.item(), images.size(0)) + top1.update(acc1[0], images.size(0)) + top5.update(acc5[0], images.size(0)) + + # compute gradient and do SGD step + optimizer.zero_grad() + loss.backward() + optimizer.step() + + # measure elapsed time + batch_time.update(time.time() - end) + end = time.time() + + if i % args.print_freq == 0: + progress.display(i + 1) + + +def validate(val_loader, model, criterion, args): + + def run_validate(loader, base_progress=0): + with torch.no_grad(): + end = time.time() + for i, (images, target) in enumerate(loader): + i = base_progress + i + if args.gpu is not None and torch.cuda.is_available(): + images = images.cuda(args.gpu, non_blocking=True) + if torch.backends.mps.is_available(): + images = images.to('mps') + target = target.to('mps') + if torch.cuda.is_available(): + target = target.cuda(args.gpu, non_blocking=True) + + # compute output + output = model(images) + loss = criterion(output, target) + + # measure accuracy and record loss + acc1, acc5 = accuracy(output, target, topk=(1, 5)) + losses.update(loss.item(), images.size(0)) + top1.update(acc1[0], images.size(0)) + top5.update(acc5[0], images.size(0)) + + # measure elapsed time + batch_time.update(time.time() - end) + end = time.time() + + if i % args.print_freq == 0: + progress.display(i + 1) + + batch_time = AverageMeter('Time', ':6.3f', Summary.NONE) + losses = AverageMeter('Loss', ':.4e', Summary.NONE) + top1 = AverageMeter('Acc@1', ':6.2f', Summary.AVERAGE) + top5 = AverageMeter('Acc@5', ':6.2f', Summary.AVERAGE) + progress = ProgressMeter( + len(val_loader) + (args.distributed and (len(val_loader.sampler) * args.world_size < len(val_loader.dataset))), + [batch_time, losses, top1, top5], + prefix='Test: ') + + # switch to evaluate mode + model.eval() + + run_validate(val_loader) + if args.distributed: + top1.all_reduce() + top5.all_reduce() + + if args.distributed and (len(val_loader.sampler) * args.world_size < len(val_loader.dataset)): + aux_val_dataset = Subset(val_loader.dataset, + range(len(val_loader.sampler) * args.world_size, len(val_loader.dataset))) + aux_val_loader = torch.utils.data.DataLoader( + aux_val_dataset, batch_size=args.batch_size, shuffle=False, + num_workers=args.workers, pin_memory=True) + run_validate(aux_val_loader, len(val_loader)) + + progress.display_summary() + + return top1.avg + + +def save_checkpoint(state, is_best, filename='checkpoint.pth.tar'): + torch.save(state, filename) + if is_best: + shutil.copyfile(filename, 'model_best.pth.tar') + +class Summary(Enum): + NONE = 0 + AVERAGE = 1 + SUM = 2 + COUNT = 3 + +class AverageMeter(object): + """Computes and stores the average and current value""" + def __init__(self, name, fmt=':f', summary_type=Summary.AVERAGE): + self.name = name + self.fmt = fmt + self.summary_type = summary_type + self.reset() + + def reset(self): + self.val = 0 + self.avg = 0 + self.sum = 0 + self.count = 0 + + def update(self, val, n=1): + self.val = val + self.sum += val * n + self.count += n + self.avg = self.sum / self.count + + def all_reduce(self): + if torch.cuda.is_available(): + device = torch.device("cuda") + elif torch.backends.mps.is_available(): + device = torch.device("mps") + else: + device = torch.device("cpu") + total = torch.tensor([self.sum, self.count], dtype=torch.float32, device=device) + dist.all_reduce(total, dist.ReduceOp.SUM, async_op=False) + self.sum, self.count = total.tolist() + self.avg = self.sum / self.count + + def __str__(self): + fmtstr = '{name} {val' + self.fmt + '} ({avg' + self.fmt + '})' + return fmtstr.format(**self.__dict__) + + def summary(self): + fmtstr = '' + if self.summary_type is Summary.NONE: + fmtstr = '' + elif self.summary_type is Summary.AVERAGE: + fmtstr = '{name} {avg:.3f}' + elif self.summary_type is Summary.SUM: + fmtstr = '{name} {sum:.3f}' + elif self.summary_type is Summary.COUNT: + fmtstr = '{name} {count:.3f}' + else: + raise ValueError('invalid summary type %r' % self.summary_type) + + return fmtstr.format(**self.__dict__) + + +class ProgressMeter(object): + def __init__(self, num_batches, meters, prefix=""): + self.batch_fmtstr = self._get_batch_fmtstr(num_batches) + self.meters = meters + self.prefix = prefix + + def display(self, batch): + entries = [self.prefix + self.batch_fmtstr.format(batch)] + entries += [str(meter) for meter in self.meters] + print('\t'.join(entries)) + + def display_summary(self): + entries = [" *"] + entries += [meter.summary() for meter in self.meters] + print(' '.join(entries)) + + def _get_batch_fmtstr(self, num_batches): + num_digits = len(str(num_batches // 1)) + fmt = '{:' + str(num_digits) + 'd}' + return '[' + fmt + '/' + fmt.format(num_batches) + ']' + +def accuracy(output, target, topk=(1,)): + """Computes the accuracy over the k top predictions for the specified values of k""" + with torch.no_grad(): + maxk = max(topk) + batch_size = target.size(0) + + _, pred = output.topk(maxk, 1, True, True) + pred = pred.t() + correct = pred.eq(target.view(1, -1).expand_as(pred)) + + res = [] + for k in topk: + correct_k = correct[:k].reshape(-1).float().sum(0, keepdim=True) + res.append(correct_k.mul_(100.0 / batch_size)) + return res + + +if __name__ == '__main__': + main() -- Gitee From 3873a083f23a06841e8105d77ca8b53ef588f538 Mon Sep 17 00:00:00 2001 From: Linwei-Ying Date: Fri, 27 Jun 2025 17:39:42 +0800 Subject: [PATCH 57/79] add transfer_to_npu quick main.py --- sample/transfer_to_npu/README.md | 45 ++++++++++++++++++++++++++++++++ sample/transfer_to_npu/main.py | 16 +----------- 2 files changed, 46 insertions(+), 15 deletions(-) create mode 100644 sample/transfer_to_npu/README.md diff --git a/sample/transfer_to_npu/README.md b/sample/transfer_to_npu/README.md new file mode 100644 index 000000000..167bc1ffa --- /dev/null +++ b/sample/transfer_to_npu/README.md @@ -0,0 +1,45 @@ +# 迁移工具快速入门样例介绍 + +## 说明 + +本样例选用ResNet50模型。 + +## 环境准备 + +1. 准备一台基于Atlas 训练系列产品的训练服务器,并[安装NPU驱动和固件](https://www.hiascend.com/document/detail/zh/canncommercial/81RC1/softwareinst/instg/instg_0005.html?Mode=PmIns&InstallType=local&OS=Ubuntu&Software=cannToolKit)。 + +2. 安装开发套件包Ascend-cann-toolkit,具体请参考[安装CANN软件包](https://www.hiascend.com/document/detail/zh/canncommercial/81RC1/softwareinst/instg/instg_0008.html?Mode=PmIns&InstallType=local&OS=Ubuntu&Software=cannToolKit)。 + +3. 以安装PyTorch 2.1.0版本为例,具体操作请参考适配插件开发(PyTorch框架)。 + +4. 配置环境变量。
    +安装CANN软件后,使用CANN运行用户进行编译、运行时,需要以CANN运行用户登录环境,执行source ${install_path}/set_env.sh命令设置环境变量。其中${install_path}为CANN软件的安装目录,例如:/usr/local/Ascend/ascend-toolkit。 + +5. 下载[main.py](main.py)文件,并上传至训练服务器的个人目录下。 + + +## 执行迁移 +1. 在训练脚本(main.py文件)中导入自动迁移的库代码。 +```Python + 42 + 43 import torch_npu + 44 from torch_npu.contrib import transfer_to_npu + 45 +# 在43 44行插入的代码为自动迁移的库代码,可以在NPU环境下直接执行训练 +``` + +2. 迁移完成后的训练脚本可在NPU上运行,执行以下训练命令。 +```Python +python main.py -a resnet50 -b 32 --gpu 1 --dummy +``` +如果训练正常进行,开始打印迭代日志,说明训练功能迁移成功,如下所示。 +```Python +Use GPU: 1 for training +=> creating model 'resnet50' +=> Dummy data is used! +Epoch: [0][ 1/40037] Time 8.287 ( 8.287) Data 0.504 ( 0.504) Loss 7.0919e+00 (7.0919e+00) Acc@1 0.00 ( 0.00) Acc@5 0.00 ( 0.00) +Epoch: [0][ 11/40037] Time 0.097 ( 1.268) Data 0.000 ( 0.479) Loss 1.5627e+01 (1.8089e+01) Acc@1 0.00 ( 0.00) Acc@5 3.12 ( 0.57) +Epoch: [0][ 21/40037] Time 0.096 ( 0.710) Data 0.000 ( 0.253) Loss 7.7462e+00 (1.4883e+01) Acc@1 0.00 ( 0.00) +``` + +3. 成功保存权重,说明保存权重功能迁移成功。 diff --git a/sample/transfer_to_npu/main.py b/sample/transfer_to_npu/main.py index 00c2a0c2d..7d4d994d4 100644 --- a/sample/transfer_to_npu/main.py +++ b/sample/transfer_to_npu/main.py @@ -82,8 +82,6 @@ parser.add_argument('--world-size', default=-1, type=int, help='number of nodes for distributed training') parser.add_argument('--rank', default=-1, type=int, help='node rank for distributed training') -parser.add_argument('--dist-url', default='tcp://224.66.41.62:23456', type=str, - help='url used to set up distributed training') parser.add_argument('--dist-backend', default='nccl', type=str, help='distributed backend') parser.add_argument('--seed', default=None, type=int, @@ -118,15 +116,12 @@ def main(): warnings.warn('You have chosen a specific GPU. This will completely ' 'disable data parallelism.') - if args.dist_url == "env://" and args.world_size == -1: - args.world_size = int(os.environ["WORLD_SIZE"]) - args.distributed = args.world_size > 1 or args.multiprocessing_distributed if torch.cuda.is_available(): ngpus_per_node = torch.cuda.device_count() if ngpus_per_node == 1 and args.dist_backend == "nccl": - warnings.warn("nccl backend >=2.5 requires GPU count>1, see https://github.com/NVIDIA/nccl/issues/103 perhaps use 'gloo'") + warnings.warn("nccl backend >=2.5 requires GPU count>1, perhaps use 'gloo'") else: ngpus_per_node = 1 @@ -149,15 +144,6 @@ def main_worker(gpu, ngpus_per_node, args): if args.gpu is not None: print("Use GPU: {} for training".format(args.gpu)) - if args.distributed: - if args.dist_url == "env://" and args.rank == -1: - args.rank = int(os.environ["RANK"]) - if args.multiprocessing_distributed: - # For multiprocessing distributed training, rank needs to be the - # global rank among all the processes - args.rank = args.rank * ngpus_per_node + gpu - dist.init_process_group(backend=args.dist_backend, init_method=args.dist_url, - world_size=args.world_size, rank=args.rank) # create model if args.pretrained: print("=> using pre-trained model '{}'".format(args.arch)) -- Gitee From da6e55d4a8da91db15d1e3ee7cdac1698fdc8320 Mon Sep 17 00:00:00 2001 From: l30036321 Date: Sat, 28 Jun 2025 09:44:14 +0800 Subject: [PATCH 58/79] add l2 level restrictions --- .../msprobe/mindspore/debugger/precision_debugger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/mindspore/debugger/precision_debugger.py b/debug/accuracy_tools/msprobe/mindspore/debugger/precision_debugger.py index 6d7ee60b5..420f15470 100644 --- a/debug/accuracy_tools/msprobe/mindspore/debugger/precision_debugger.py +++ b/debug/accuracy_tools/msprobe/mindspore/debugger/precision_debugger.py @@ -87,7 +87,7 @@ class PrecisionDebugger(BasePrecisionDebugger): Runtime.step_count = 0 Runtime.is_running = False - if enable_dynamic_kbyk_dump: + if enable_dynamic_kbyk_dump and self.config.level_ori == Const.LEVEL_L2: _dump_set_dynamic() @staticmethod -- Gitee From 8fdc83ed5c076d97ffa5e43ce2cf870c6b828f00 Mon Sep 17 00:00:00 2001 From: Linwei-Ying Date: Sat, 28 Jun 2025 11:19:39 +0800 Subject: [PATCH 59/79] compare indexerror bugfix --- .../msprobe/core/compare/acc_compare.py | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/debug/accuracy_tools/msprobe/core/compare/acc_compare.py b/debug/accuracy_tools/msprobe/core/compare/acc_compare.py index f0ca6bfc9..435cd25bf 100644 --- a/debug/accuracy_tools/msprobe/core/compare/acc_compare.py +++ b/debug/accuracy_tools/msprobe/core/compare/acc_compare.py @@ -210,25 +210,29 @@ class ParseData: # 遍历单个API的所有item for index, op_name in enumerate(op_name_reorder): result[CompareConst.OP_NAME].append(op_name) - if (CompareConst.INPUT_PATTERN in op_name) or (CompareConst.KWARGS_PATTERN in op_name): - struct = merge_list[CompareConst.INPUT_STRUCT].pop(0) - elif CompareConst.OUTPUT_PATTERN in op_name: - struct = merge_list[CompareConst.OUTPUT_STRUCT].pop(0) - elif CompareConst.PARAMS_PATTERN in op_name: - struct = merge_list[CompareConst.PARAMS_STRUCT].pop(0) - elif CompareConst.PARAMS_GRAD_PATTERN in op_name: - struct = merge_list[CompareConst.PARAMS_GRAD_STRUCT].pop(0) - else: - struct = merge_list[CompareConst.DEBUG_STRUCT].pop(0) - result[Const.DTYPE].append(struct[0]) - result[Const.SHAPE].append(struct[1]) - if self.mode_config.dump_mode == Const.MD5: - result[Const.MD5].append(struct[2]) - result[Const.SUMMARY].append(summary_reorder.pop(0)) - result[Const.STACK_INFO].append( - merge_list[Const.STACK_INFO][0] if index == 0 and self.mode_config.stack_mode else None) - if self.mode_config.dump_mode == Const.ALL: - result['data_name'].append(data_name_reorder.pop(0)) + try: + if (CompareConst.INPUT_PATTERN in op_name) or (CompareConst.KWARGS_PATTERN in op_name): + struct = merge_list[CompareConst.INPUT_STRUCT].pop(0) + elif CompareConst.OUTPUT_PATTERN in op_name: + struct = merge_list[CompareConst.OUTPUT_STRUCT].pop(0) + elif CompareConst.PARAMS_PATTERN in op_name: + struct = merge_list[CompareConst.PARAMS_STRUCT].pop(0) + elif CompareConst.PARAMS_GRAD_PATTERN in op_name: + struct = merge_list[CompareConst.PARAMS_GRAD_STRUCT].pop(0) + else: + struct = merge_list[CompareConst.DEBUG_STRUCT].pop(0) + result[Const.DTYPE].append(struct[0]) + result[Const.SHAPE].append(struct[1]) + if self.mode_config.dump_mode == Const.MD5: + result[Const.MD5].append(struct[2]) + result[Const.SUMMARY].append(summary_reorder.pop(0)) + result[Const.STACK_INFO].append( + merge_list[Const.STACK_INFO][0] if index == 0 and self.mode_config.stack_mode else None) + if self.mode_config.dump_mode == Const.ALL: + result['data_name'].append(data_name_reorder.pop(0)) + except IndexError as e: + logger.error(f'Index out of bounds error, please check info of api: {op_name}.') + raise CompareException(CompareException.INDEX_OUT_OF_BOUNDS_ERROR) from e progress_bar.update(1) progress_bar.close() -- Gitee From 46de8690a4137c5c48419dda8908f1d968b8431b Mon Sep 17 00:00:00 2001 From: mei-feiyao <1332490378@qq.com> Date: Sat, 28 Jun 2025 12:46:39 +0800 Subject: [PATCH 60/79] close socket fd before throw --- msmonitor/dynolog_npu/dynolog/src/rpc/SimpleJsonServer.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/msmonitor/dynolog_npu/dynolog/src/rpc/SimpleJsonServer.cpp b/msmonitor/dynolog_npu/dynolog/src/rpc/SimpleJsonServer.cpp index ea4c3bdc1..c1a765c5e 100644 --- a/msmonitor/dynolog_npu/dynolog/src/rpc/SimpleJsonServer.cpp +++ b/msmonitor/dynolog_npu/dynolog/src/rpc/SimpleJsonServer.cpp @@ -41,6 +41,10 @@ SimpleJsonServerBase::SimpleJsonServerBase(int port) : port_(port) } } catch (const std::exception& e) { LOG(ERROR) << "Failed to initialize server: " << e.what(); + if (sock_fd_ != -1) { + close(sock_fd_); + sock_fd_ = -1; + } throw; } } -- Gitee From 4eb847d38b23e0567ed158dbb8e51bde33019591 Mon Sep 17 00:00:00 2001 From: sunchao <1299792067@qq.com> Date: Sat, 28 Jun 2025 15:13:38 +0800 Subject: [PATCH 61/79] =?UTF-8?q?=F0=9F=A6=84=20refactor:=20=E8=AF=BB?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=AE=89=E5=85=A8=E5=8A=A0=E5=9B=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/app/service/graph_service.py | 4 +- .../server/app/utils/graph_utils.py | 153 +++++++++++------- 2 files changed, 101 insertions(+), 56 deletions(-) diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/service/graph_service.py b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/service/graph_service.py index 70ef0b217..36c3aa157 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/service/graph_service.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/service/graph_service.py @@ -135,7 +135,7 @@ class GraphService: config['colors'] = config_data_run.get('colors') # 读取目录下配置文件列表 config_files = GraphUtils.find_config_files(run) - config['matchedConfigFiles'] = config_files + config['matchedConfigFiles'] = config_files or [] config['task'] = graph_data.get('task') return {'success': True, 'data': config} except Exception as e: @@ -329,7 +329,7 @@ class GraphService: config_data_run['colors'] = colors config_data[run] = config_data_run GraphState.set_global_value("config_data", config_data) - GraphUtils.safe_save_data(first_file_data, run, first_run_tag) + GraphUtils.safe_save_data(first_file_data, run, f"{first_run_tag}.vis") return {'success': True, 'error': None, 'data': {}} except Exception as e: return {'success': False, 'error': str(e), 'data': None} diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py index 41a86a45b..3f1af3503 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py @@ -19,12 +19,14 @@ import os import json import re import stat +import sys from functools import cmp_to_key from pathlib import Path from tensorboard.util import tb_logging from .global_state import GraphState, FILE_NAME_REGEX, MAX_FILE_SIZE logger = tb_logging.get_logger() +FILE_PATH_MAX_LENGTH = 4096 class GraphUtils: @@ -210,6 +212,30 @@ class GraphUtils: return f"{size_bytes:.{decimal_places}f} {units[unit_index]}" + @staticmethod + def has_group_permission(path, permission): + """ + 检查指定路径是否对其所属组具有指定权限。 + + :param path: 要检查的文件或目录的路径。 + :param permission: 要检查的权限,使用 stat 中定义的常量,如 stat.S_IWGRP 表示写权限。 + :return: 如果所属组有指定权限,则返回 True;否则返回 False。 + """ + try: + # 获取文件的状态信息 + st = os.stat(path) + except FileNotFoundError: + return False + + # 使用位运算检查权限 + group_permissions = st.st_mode & (stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP) + + # 判断指定的权限是否存在 + if group_permissions & permission: + return True + else: + return False + @staticmethod def safe_save_data(data, run_name, tag): runs = GraphState.get_global_value('runs', {}) @@ -222,13 +248,13 @@ class GraphUtils: # 构建文件路径并标准化 file_path = os.path.join(run, tag) file_path = os.path.normpath(file_path) - # 权限校验:检查目录是否有写权限 - if not os.access(run, os.W_OK): - raise PermissionError(f"No write permission for directory: {run}\n") # 检查 run 目录是否存在,如果不存在则创建 if not os.path.exists(run): os.makedirs(run, exist_ok=True) os.chmod(run, 0o750) + # 权限校验:检查目录所属组是否有写权限 + if not os.stat(file_path).st_mode and not GraphUtils.has_group_permission(file_path, stat.stat.S_IWGRP): + raise PermissionError(f"No write permission for directory: {run}\n") # 检查 tag 是否为合法文件名 if not re.match(FILE_NAME_REGEX, tag): raise ValueError(f"Invalid tag: {tag}.") @@ -262,7 +288,6 @@ class GraphUtils: @staticmethod def safe_load_data(run_name, tag, only_check=False): - runs = GraphState.get_global_value('runs', {}) run_dir = runs.get(str(run_name)) or run_name """Load a single .vis file from a given directory based on the tag.""" @@ -271,33 +296,14 @@ class GraphUtils: return None, error_message try: file_path = os.path.join(run_dir, tag) - file_path = os.path.normpath(file_path) # 标准化路径 - # 解析真实路径(包含符号链接跟踪) - real_path = os.path.realpath(file_path) - safe_base_dir = GraphState.get_global_value('logdir') - # 安全验证1:路径归属检查(防止越界访问) - if not GraphUtils.is_relative_to(file_path, safe_base_dir): - raise RuntimeError(f"Path out of bounds:") - # 安全验证2:禁止符号链接文件 - if os.path.islink(file_path): - raise RuntimeError(f"Detected symbolic link file") - if os.path.islink(run_dir): - raise RuntimeError(f"Parent directory contains a symbolic link") - # 安全验证3:二次文件类型检查(防御TOCTOU攻击) - if not os.path.isfile(real_path): - raise RuntimeError(f"Path is not a regular file") - # 安全检查4:文件存在性验证 - if not os.path.exists(real_path): - raise FileNotFoundError(f"File does not exist") - # 权限验证 - if not os.stat(real_path).st_mode & stat.S_IRUSR: - raise PermissionError(f"File has no read permissions") - # 文件大小验证 - if os.path.getsize(real_path) > MAX_FILE_SIZE: - file_size = GraphUtils.bytes_to_human_readable(os.path.getsize(real_path)) - max_size = GraphUtils.bytes_to_human_readable(MAX_FILE_SIZE) - raise RuntimeError( - f"File size exceeds limit ({file_size} > {max_size})") + # 目录安全校验 + success, error = GraphUtils.safe_check_load_file_path(run_dir, True) + if not success: + raise RuntimeError(error) + # 文件安全校验 + success, error = GraphUtils.safe_check_load_file_path(file_path) + if not success: + raise RuntimeError(error) # 读取文件比较耗时,支持onlyCheck参数,仅进行安全校验 if only_check: return True, None @@ -309,8 +315,64 @@ class GraphUtils: return None, "File is not a valid JSON file!" except Exception as e: logger.error(f'Error: File "{file_path}" is not accessible. Error: {e}') - return None, 'failed to load file' + return None, e + @staticmethod + def safe_check_load_file_path(file_path, isDir=False): + # 权限常量定义 + PERM_GROUP_WRITE = 0o020 + PERM_OTHER_WRITE = 0o002 + PERM_OTHER_READ = 0o004 + file_path = os.path.normpath(file_path) # 标准化路径 + real_path = os.path.realpath(file_path) + safe_base_dir = GraphState.get_global_value('logdir') + st = os.stat(real_path) + try: + # 安全验证:路径长度检查 + if len(real_path) > FILE_PATH_MAX_LENGTH: + raise RuntimeError(f"Path length exceeds limit") + # 安全验证:路径归属检查(防止越界访问) + if not GraphUtils.is_relative_to(file_path, safe_base_dir): + raise RuntimeError(f"Path out of bounds") + # 安全检查:文件存在性验证 + if not os.path.exists(real_path): + raise FileNotFoundError(f"File does not exist") + # 安全验证:禁止符号链接文件 + if os.path.islink(file_path): + raise RuntimeError(f"Detected symbolic link file") + # 安全验证:文件类型检查(防御TOCTOU攻击) + # 文件类型 + if not isDir and not os.path.isfile(real_path): + raise RuntimeError(f"Path is not a regular file") + # 目录类型 + if isDir and not Path(real_path).is_dir(): + raise RuntimeError(f"Directory does not exist") + # 可读性检查 + if not st.st_mode & PERM_OTHER_READ: + raise RuntimeError(f"Directory lacks read permission for others") + # 文件大小校验 + if not isDir and os.path.getsize(file_path) > MAX_FILE_SIZE: + file_size = GraphUtils.bytes_to_human_readable(os.path.getsize(file_path)) + max_size = GraphUtils.bytes_to_human_readable(MAX_FILE_SIZE) + raise RuntimeError( + f"File size exceeds limit ({file_size} > {max_size})") + # 非windows系统下,属主检查 + if os.name != 'nt': + current_uid = os.getuid() + # 如果是root用户,跳过后续权限检查 + if current_uid == 0: + return True + # 属主检查 + if st.st_uid != current_uid: + raise RuntimeError(f"Directory is not owned by the current user") + # group和其他用户不可写检查 + if st.st_mode & PERM_GROUP_WRITE or st.st_mode & PERM_OTHER_WRITE: + raise RuntimeError(f"Directory has group or other write permission") + return True, None + except Exception as e: + logger.error(e) + return False, e + @staticmethod def find_config_files(run_name): """ @@ -322,28 +384,11 @@ class GraphUtils: run = runs.get(run_name) dir_path = Path(run) try: - file_path = os.path.normpath(run) # 标准化路径 - # 解析真实路径(包含符号链接跟踪) - real_path = os.path.realpath(file_path) - safe_base_dir = GraphState.get_global_value('logdir') - # 安全验证1:路径归属检查(防止越界访问) - if not GraphUtils.is_relative_to(file_path, safe_base_dir): - raise RuntimeError(f"Path out of bounds:") - # 安全验证2:禁止符号链接文件 - if os.path.islink(file_path): - raise RuntimeError(f"Detected symbolic link file") - # 安全检查3:文件存在性验证 - if not os.path.exists(real_path): - raise FileNotFoundError(f"File does not exist") - # 权限验证 - if not os.stat(real_path).st_mode & stat.S_IRUSR: - raise PermissionError(f"File has no read permissions") - if not dir_path.is_dir(): - raise ValueError(f"The provided path '{run}' is not a valid directory.") - return [ - file.name for file in dir_path.iterdir() - if file.is_file() and file.name.endswith('.vis.config') - ] + if GraphUtils.safe_check_load_file_path(run, True): + return [ + file.name for file in dir_path.iterdir() + if file.is_file() and file.name.endswith('.vis.config') + ] except Exception as e: logger.error(e) return [] -- Gitee From dec6d1dc7a31cc4fa2d926c4a9097fb815f12960 Mon Sep 17 00:00:00 2001 From: sunchao <1299792067@qq.com> Date: Sat, 28 Jun 2025 16:07:49 +0800 Subject: [PATCH 62/79] =?UTF-8?q?=F0=9F=A6=84=20refactor:=20=E5=86=99?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=AE=89=E5=85=A8=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/app/utils/graph_utils.py | 132 ++++++++++-------- 1 file changed, 72 insertions(+), 60 deletions(-) diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py index 3f1af3503..03cf11bc3 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py @@ -212,63 +212,28 @@ class GraphUtils: return f"{size_bytes:.{decimal_places}f} {units[unit_index]}" - @staticmethod - def has_group_permission(path, permission): - """ - 检查指定路径是否对其所属组具有指定权限。 - - :param path: 要检查的文件或目录的路径。 - :param permission: 要检查的权限,使用 stat 中定义的常量,如 stat.S_IWGRP 表示写权限。 - :return: 如果所属组有指定权限,则返回 True;否则返回 False。 - """ - try: - # 获取文件的状态信息 - st = os.stat(path) - except FileNotFoundError: - return False - - # 使用位运算检查权限 - group_permissions = st.st_mode & (stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP) - - # 判断指定的权限是否存在 - if group_permissions & permission: - return True - else: - return False - @staticmethod def safe_save_data(data, run_name, tag): runs = GraphState.get_global_value('runs', {}) run = runs.get(run_name) or run_name - safe_base_dir = GraphState.get_global_value('logdir') if run is None or tag is None: error_message = 'The query parameters "run" and "tag" are required' return None, error_message try: - # 构建文件路径并标准化 - file_path = os.path.join(run, tag) - file_path = os.path.normpath(file_path) - # 检查 run 目录是否存在,如果不存在则创建 - if not os.path.exists(run): - os.makedirs(run, exist_ok=True) - os.chmod(run, 0o750) - # 权限校验:检查目录所属组是否有写权限 - if not os.stat(file_path).st_mode and not GraphUtils.has_group_permission(file_path, stat.stat.S_IWGRP): - raise PermissionError(f"No write permission for directory: {run}\n") # 检查 tag 是否为合法文件名 if not re.match(FILE_NAME_REGEX, tag): raise ValueError(f"Invalid tag: {tag}.") - # 检查文件路径是否合法,防止路径遍历攻击 - if not file_path.startswith(os.path.abspath(run)): - raise ValueError(f"Invalid file path: {file_path}. Potential path traversal attack.\n") - # 基础路径校验 - if not GraphUtils.is_relative_to(file_path, safe_base_dir): - raise ValueError(f"Path out of bounds: {file_path}") - if os.path.islink(file_path): - raise RuntimeError("The target file is a symbolic link") - if os.path.islink(run): - raise RuntimeError(f"Parent directory contains a symbolic link") - # # 尝试写入文件 + # 构建文件路径并标准化 + file_path = os.path.join(run, tag) + # 目录安全校验 + success, error = GraphUtils.safe_check_save_file_path(run, True) + if not success: + raise PermissionError(error) + # 文件安全校验 + success, error = GraphUtils.safe_check_save_file_path(file_path) + if not success: + raise PermissionError(error) + # 尝试写入文件 with open(file_path, "w", encoding="utf-8") as file: json.dump(data, file, ensure_ascii=False, indent=4) os.chmod(file_path, 0o640) @@ -281,7 +246,7 @@ class GraphUtils: return None, 'Invalid data' except OSError as e: logger.error(f"Failed to create directory: {run}. Error: {e}\n") - return None, 'failed to create directory {run}' + return None, 'failed to create directory ' except Exception as e: logger.error(f'Error: File "{file_path}" is not accessible. Error: {e}') return None, 'failed to save file' @@ -299,11 +264,11 @@ class GraphUtils: # 目录安全校验 success, error = GraphUtils.safe_check_load_file_path(run_dir, True) if not success: - raise RuntimeError(error) + raise PermissionError(error) # 文件安全校验 success, error = GraphUtils.safe_check_load_file_path(file_path) if not success: - raise RuntimeError(error) + raise PermissionError(error) # 读取文件比较耗时,支持onlyCheck参数,仅进行安全校验 if only_check: return True, None @@ -317,12 +282,59 @@ class GraphUtils: logger.error(f'Error: File "{file_path}" is not accessible. Error: {e}') return None, e + @staticmethod + def safe_check_save_file_path(file_path, isDir=False): + PERM_GROUP_WRITE = 0o020 + PERM_OTHER_WRITE = 0o002 + st = os.stat(file_path) + file_path = os.path.normpath(file_path) # 标准化路径 + real_path = os.path.realpath(file_path) + safe_base_dir = GraphState.get_global_value('logdir') + try: + # 安全验证:路径长度检查 + if len(file_path) > FILE_PATH_MAX_LENGTH: + raise PermissionError(f"Path length exceeds limit") + # 安全验证:基础路径校验 + if not GraphUtils.is_relative_to(file_path, safe_base_dir): + raise ValueError(f"Path out of bounds: {file_path}") + # 安全验证:禁止符号链接文件 + if os.path.islink(file_path): + raise RuntimeError("The target file is a symbolic link") + # 安全验证:文件大小校验 + if not isDir and os.path.getsize(file_path) > MAX_FILE_SIZE: + file_size = GraphUtils.bytes_to_human_readable(os.path.getsize(file_path)) + max_size = GraphUtils.bytes_to_human_readable(MAX_FILE_SIZE) + raise PermissionError( + f"File size exceeds limit ({file_size} > {max_size})") + # 安全验证:检查目录是否存在,如果不存在则创建 + if isDir and not os.path.exists(real_path): + os.makedirs(real_path, exist_ok=True) + os.chmod(file_path, 0o640) + # 权限校验:检查是否有写权限 + if not os.stat(file_path).st_mode & stat.S_IWGRP: + raise PermissionError(f"No write permission for directory\n") + # 安全验证: 非windows系统下,属主检查 + if os.name != 'nt': + current_uid = os.getuid() + # 如果是root用户,跳过后续权限检查 + if current_uid == 0: + return True + # 属主检查 + if st.st_uid != current_uid: + raise PermissionError(f"Directory is not owned by the current user") + # group和其他用户不可写检查 + if st.st_mode & PERM_GROUP_WRITE or st.st_mode & PERM_OTHER_WRITE: + raise PermissionError(f"Directory has group or other write permission") + return True, None + except Exception as e: + logger.error(e) + return False, e + @staticmethod def safe_check_load_file_path(file_path, isDir=False): # 权限常量定义 PERM_GROUP_WRITE = 0o020 PERM_OTHER_WRITE = 0o002 - PERM_OTHER_READ = 0o004 file_path = os.path.normpath(file_path) # 标准化路径 real_path = os.path.realpath(file_path) safe_base_dir = GraphState.get_global_value('logdir') @@ -330,31 +342,31 @@ class GraphUtils: try: # 安全验证:路径长度检查 if len(real_path) > FILE_PATH_MAX_LENGTH: - raise RuntimeError(f"Path length exceeds limit") + raise PermissionError(f"Path length exceeds limit") # 安全验证:路径归属检查(防止越界访问) if not GraphUtils.is_relative_to(file_path, safe_base_dir): - raise RuntimeError(f"Path out of bounds") + raise PermissionError(f"Path out of bounds") # 安全检查:文件存在性验证 if not os.path.exists(real_path): raise FileNotFoundError(f"File does not exist") # 安全验证:禁止符号链接文件 if os.path.islink(file_path): - raise RuntimeError(f"Detected symbolic link file") + raise PermissionError(f"Detected symbolic link file") # 安全验证:文件类型检查(防御TOCTOU攻击) # 文件类型 if not isDir and not os.path.isfile(real_path): - raise RuntimeError(f"Path is not a regular file") + raise PermissionError(f"Path is not a regular file") # 目录类型 if isDir and not Path(real_path).is_dir(): - raise RuntimeError(f"Directory does not exist") + raise PermissionError(f"Directory does not exist") # 可读性检查 - if not st.st_mode & PERM_OTHER_READ: - raise RuntimeError(f"Directory lacks read permission for others") + if not st.st_mode & stat.S_IRGRP: + raise PermissionError(f"Directory lacks read permission for others") # 文件大小校验 if not isDir and os.path.getsize(file_path) > MAX_FILE_SIZE: file_size = GraphUtils.bytes_to_human_readable(os.path.getsize(file_path)) max_size = GraphUtils.bytes_to_human_readable(MAX_FILE_SIZE) - raise RuntimeError( + raise PermissionError( f"File size exceeds limit ({file_size} > {max_size})") # 非windows系统下,属主检查 if os.name != 'nt': @@ -364,10 +376,10 @@ class GraphUtils: return True # 属主检查 if st.st_uid != current_uid: - raise RuntimeError(f"Directory is not owned by the current user") + raise PermissionError(f"Directory is not owned by the current user") # group和其他用户不可写检查 if st.st_mode & PERM_GROUP_WRITE or st.st_mode & PERM_OTHER_WRITE: - raise RuntimeError(f"Directory has group or other write permission") + raise PermissionError(f"Directory has group or other write permission") return True, None except Exception as e: logger.error(e) -- Gitee From e9e0e3463374db4c790832e582630ec984efcafe Mon Sep 17 00:00:00 2001 From: sunchao <1299792067@qq.com> Date: Sat, 28 Jun 2025 17:51:48 +0800 Subject: [PATCH 63/79] =?UTF-8?q?=F0=9F=90=9E=20fix:=20=E5=86=99=E5=85=A5?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/app/utils/graph_utils.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py index 03cf11bc3..45dea6105 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py @@ -286,7 +286,6 @@ class GraphUtils: def safe_check_save_file_path(file_path, isDir=False): PERM_GROUP_WRITE = 0o020 PERM_OTHER_WRITE = 0o002 - st = os.stat(file_path) file_path = os.path.normpath(file_path) # 标准化路径 real_path = os.path.realpath(file_path) safe_base_dir = GraphState.get_global_value('logdir') @@ -297,21 +296,18 @@ class GraphUtils: # 安全验证:基础路径校验 if not GraphUtils.is_relative_to(file_path, safe_base_dir): raise ValueError(f"Path out of bounds: {file_path}") + if not os.path.exists(file_path): + return True, None + st = os.stat(file_path) # 安全验证:禁止符号链接文件 if os.path.islink(file_path): - raise RuntimeError("The target file is a symbolic link") - # 安全验证:文件大小校验 - if not isDir and os.path.getsize(file_path) > MAX_FILE_SIZE: - file_size = GraphUtils.bytes_to_human_readable(os.path.getsize(file_path)) - max_size = GraphUtils.bytes_to_human_readable(MAX_FILE_SIZE) - raise PermissionError( - f"File size exceeds limit ({file_size} > {max_size})") + raise PermissionError("The target file is a symbolic link") # 安全验证:检查目录是否存在,如果不存在则创建 if isDir and not os.path.exists(real_path): os.makedirs(real_path, exist_ok=True) os.chmod(file_path, 0o640) # 权限校验:检查是否有写权限 - if not os.stat(file_path).st_mode & stat.S_IWGRP: + if not os.stat(file_path).st_mode & stat.S_IWUSR: raise PermissionError(f"No write permission for directory\n") # 安全验证: 非windows系统下,属主检查 if os.name != 'nt': @@ -360,7 +356,7 @@ class GraphUtils: if isDir and not Path(real_path).is_dir(): raise PermissionError(f"Directory does not exist") # 可读性检查 - if not st.st_mode & stat.S_IRGRP: + if not st.st_mode & stat.S_IRUSR: raise PermissionError(f"Directory lacks read permission for others") # 文件大小校验 if not isDir and os.path.getsize(file_path) > MAX_FILE_SIZE: -- Gitee From 8c8760ce2f80b583575bed337f65c858374a3c8d Mon Sep 17 00:00:00 2001 From: sunchao <1299792067@qq.com> Date: Mon, 30 Jun 2025 10:02:20 +0800 Subject: [PATCH 64/79] =?UTF-8?q?=F0=9F=90=9E=20fix:=20=20=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E8=AF=AF=E5=88=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tb_graph_ascend/server/app/controllers/hierarchy.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/hierarchy.py b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/hierarchy.py index b5870f298..acb60aeae 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/hierarchy.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/hierarchy.py @@ -53,15 +53,11 @@ class Hierarchy: def extract_label_name(node_name, node_type): splited_subnode_name = node_name.split('.') splited_label = [] - # Module.layer1.1.relu.ReLU.forward.1 =>relu.ReLU.forward.1 - # Module.layer1.1.relu.ReLU.forward.1 =>relu.ReLU.forward.1 if node_type == MODULE: if len(splited_subnode_name) < 4: return node_name splited_label = splited_subnode_name[-4:] if not splited_subnode_name[ -4].isdigit() else splited_subnode_name[-5:] - # Module.layer1.1.ApiList.1 =>ApiList.1 - # Module.layer1.1.ApiList.0.1 =>ApiList.0.1 else: if len(splited_subnode_name) < 2: return node_name -- Gitee From 0392f16c9e35b84a3e022a8ef74897f6fdbf5760 Mon Sep 17 00:00:00 2001 From: sunchao <1299792067@qq.com> Date: Mon, 30 Jun 2025 10:02:20 +0800 Subject: [PATCH 65/79] =?UTF-8?q?=F0=9F=90=9E=20fix:=20=20=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E8=AF=AF=E5=88=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tb_graph_ascend/server/app/controllers/hierarchy.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/hierarchy.py b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/hierarchy.py index b5870f298..acb60aeae 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/hierarchy.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/hierarchy.py @@ -53,15 +53,11 @@ class Hierarchy: def extract_label_name(node_name, node_type): splited_subnode_name = node_name.split('.') splited_label = [] - # Module.layer1.1.relu.ReLU.forward.1 =>relu.ReLU.forward.1 - # Module.layer1.1.relu.ReLU.forward.1 =>relu.ReLU.forward.1 if node_type == MODULE: if len(splited_subnode_name) < 4: return node_name splited_label = splited_subnode_name[-4:] if not splited_subnode_name[ -4].isdigit() else splited_subnode_name[-5:] - # Module.layer1.1.ApiList.1 =>ApiList.1 - # Module.layer1.1.ApiList.0.1 =>ApiList.0.1 else: if len(splited_subnode_name) < 2: return node_name -- Gitee From ec08b06847f0e6586eadfc851735a04b3a6a7661 Mon Sep 17 00:00:00 2001 From: sunchao <1299792067@qq.com> Date: Mon, 30 Jun 2025 11:03:36 +0800 Subject: [PATCH 66/79] =?UTF-8?q?=E2=9C=A8=20feat:=20=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8D=E5=AD=98=E5=9C=A8=E4=B8=8D=E5=9C=A8=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E4=B8=8B=E5=B1=9E=E5=AE=89=E5=85=A8=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tb_graph_ascend/server/app/controllers/hierarchy.py | 6 ++++++ .../tb_graph_ascend/server/app/utils/graph_utils.py | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/hierarchy.py b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/hierarchy.py index acb60aeae..1a8393200 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/hierarchy.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/hierarchy.py @@ -53,11 +53,17 @@ class Hierarchy: def extract_label_name(node_name, node_type): splited_subnode_name = node_name.split('.') splited_label = [] + # 在展开层级时,将父级层级名称相关去除,仅保留子节点本身名称信息 + # 如Module.layer1.1.relu.ReLU.forward.0中的父级名称Module.layer1.1去除,仅保留子级的relu.ReLU.forward.1 + # 如Module.layer4.0.BasicBlock.forward.0中的父级名称Module.1去除,仅保留子级的layer4.0.BasicBlock.forward.0 if node_type == MODULE: if len(splited_subnode_name) < 4: return node_name splited_label = splited_subnode_name[-4:] if not splited_subnode_name[ -4].isdigit() else splited_subnode_name[-5:] + # 在展开层级时,将父级层级名称相关去除,仅保留API子节点本身名称信息, + # 如 Module.layer1.1.ApiList.1 中的父级名称Module.layer1.1去除,仅保留子级的ApiList.1 + # 如 Module.layer1.1.ApiList.0.1 中的父级名称Module.layer1.1去除,仅保留子级的ApiList.0.1 else: if len(splited_subnode_name) < 2: return node_name diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py index 45dea6105..89b6f3f82 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py @@ -296,7 +296,7 @@ class GraphUtils: # 安全验证:基础路径校验 if not GraphUtils.is_relative_to(file_path, safe_base_dir): raise ValueError(f"Path out of bounds: {file_path}") - if not os.path.exists(file_path): + if not isDir and not os.path.exists(file_path): return True, None st = os.stat(file_path) # 安全验证:禁止符号链接文件 -- Gitee From ea491a1a95e80fbfb249a830885cfcf9658d5e87 Mon Sep 17 00:00:00 2001 From: sunchao <1299792067@qq.com> Date: Mon, 30 Jun 2025 15:50:17 +0800 Subject: [PATCH 67/79] =?UTF-8?q?=F0=9F=90=9E=20fix:=20code=20check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/app/utils/global_state.py | 3 +++ .../server/app/utils/graph_utils.py | 24 +++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/global_state.py b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/global_state.py index 979e5b4f3..6e4fcabae 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/global_state.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/global_state.py @@ -36,6 +36,9 @@ SINGLE = 'Single' # 前端节点类型 EXPAND_MODULE = 0 UNEXPAND_NODE = 1 +# 权限码 +PERM_GROUP_WRITE = 0o020 +PERM_OTHER_WRITE = 0o002 # 后端节点类型 MODULE = 0 diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py index 89b6f3f82..b5efe347b 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/utils/graph_utils.py @@ -23,7 +23,7 @@ import sys from functools import cmp_to_key from pathlib import Path from tensorboard.util import tb_logging -from .global_state import GraphState, FILE_NAME_REGEX, MAX_FILE_SIZE +from .global_state import GraphState, FILE_NAME_REGEX, MAX_FILE_SIZE, PERM_GROUP_WRITE, PERM_OTHER_WRITE logger = tb_logging.get_logger() FILE_PATH_MAX_LENGTH = 4096 @@ -283,9 +283,7 @@ class GraphUtils: return None, e @staticmethod - def safe_check_save_file_path(file_path, isDir=False): - PERM_GROUP_WRITE = 0o020 - PERM_OTHER_WRITE = 0o002 + def safe_check_save_file_path(file_path, is_dir=False): file_path = os.path.normpath(file_path) # 标准化路径 real_path = os.path.realpath(file_path) safe_base_dir = GraphState.get_global_value('logdir') @@ -296,14 +294,14 @@ class GraphUtils: # 安全验证:基础路径校验 if not GraphUtils.is_relative_to(file_path, safe_base_dir): raise ValueError(f"Path out of bounds: {file_path}") - if not isDir and not os.path.exists(file_path): - return True, None + if not is_dir and not os.path.exists(file_path): + return True, None st = os.stat(file_path) # 安全验证:禁止符号链接文件 if os.path.islink(file_path): raise PermissionError("The target file is a symbolic link") # 安全验证:检查目录是否存在,如果不存在则创建 - if isDir and not os.path.exists(real_path): + if is_dir and not os.path.exists(real_path): os.makedirs(real_path, exist_ok=True) os.chmod(file_path, 0o640) # 权限校验:检查是否有写权限 @@ -327,10 +325,8 @@ class GraphUtils: return False, e @staticmethod - def safe_check_load_file_path(file_path, isDir=False): + def safe_check_load_file_path(file_path, is_dir=False): # 权限常量定义 - PERM_GROUP_WRITE = 0o020 - PERM_OTHER_WRITE = 0o002 file_path = os.path.normpath(file_path) # 标准化路径 real_path = os.path.realpath(file_path) safe_base_dir = GraphState.get_global_value('logdir') @@ -350,16 +346,16 @@ class GraphUtils: raise PermissionError(f"Detected symbolic link file") # 安全验证:文件类型检查(防御TOCTOU攻击) # 文件类型 - if not isDir and not os.path.isfile(real_path): + if not is_dir and not os.path.isfile(real_path): raise PermissionError(f"Path is not a regular file") # 目录类型 - if isDir and not Path(real_path).is_dir(): + if is_dir and not Path(real_path).is_dir(): raise PermissionError(f"Directory does not exist") # 可读性检查 if not st.st_mode & stat.S_IRUSR: raise PermissionError(f"Directory lacks read permission for others") # 文件大小校验 - if not isDir and os.path.getsize(file_path) > MAX_FILE_SIZE: + if not is_dir and os.path.getsize(file_path) > MAX_FILE_SIZE: file_size = GraphUtils.bytes_to_human_readable(os.path.getsize(file_path)) max_size = GraphUtils.bytes_to_human_readable(MAX_FILE_SIZE) raise PermissionError( @@ -397,6 +393,8 @@ class GraphUtils: file.name for file in dir_path.iterdir() if file.is_file() and file.name.endswith('.vis.config') ] + else: + return [] except Exception as e: logger.error(e) return [] -- Gitee From bd9e18ca32c3cb00577c215e77b47f1ce197cc26 Mon Sep 17 00:00:00 2001 From: sunchao <1299792067@qq.com> Date: Tue, 1 Jul 2025 15:06:47 +0800 Subject: [PATCH 68/79] =?UTF-8?q?=F0=9F=90=9E=20fix:=20=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E8=8A=82=E7=82=B9=E6=94=AF=E6=8C=81=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/app/controllers/match_nodes_controller.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/match_nodes_controller.py b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/match_nodes_controller.py index 8704a93e9..e2e500c13 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/match_nodes_controller.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/controllers/match_nodes_controller.py @@ -270,8 +270,10 @@ class MatchNodesController: @staticmethod def process_md5_task_delete(graph_data, npu_node_name, bench_node_name): config_data = GraphState.get_global_value("config_data") - manual_match_nodes = config_data.get('manualMatchNodes', {}) - if manual_match_nodes.get(npu_node_name) != bench_node_name: + npu_match_nodes_list = config_data.get('npuMatchNodes', {}) + bench_match_nodes_list = config_data.get('benchMatchNodes', {}) + if npu_match_nodes_list.get(npu_node_name) != bench_node_name or bench_match_nodes_list.get( + bench_node_name) != npu_node_name: return { 'success': False, 'error': "操作失败:节点未匹配,请先匹配节点", @@ -292,8 +294,10 @@ class MatchNodesController: @staticmethod def process_summary_task_delete(graph_data, npu_node_name, bench_node_name): config_data = GraphState.get_global_value("config_data") - manual_match_nodes = config_data.get('manualMatchNodes', {}) - if manual_match_nodes.get(npu_node_name) != bench_node_name: + npu_match_nodes_list = config_data.get('npuMatchNodes', {}) + bench_match_nodes_list = config_data.get('benchMatchNodes', {}) + if npu_match_nodes_list.get(npu_node_name) != bench_node_name or bench_match_nodes_list.get( + bench_node_name) != npu_node_name: return { 'success': False, 'error': "操作失败:节点未匹配,请先匹配节点", -- Gitee From 0d726d0917f78bb3619c2e86c4f1b66cd0883201 Mon Sep 17 00:00:00 2001 From: sunchao <1299792067@qq.com> Date: Tue, 1 Jul 2025 16:01:36 +0800 Subject: [PATCH 69/79] =?UTF-8?q?=E2=9C=A8=20feat:=20=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E6=A1=86=E9=AB=98=E5=BA=A6=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/tf_vaddin_text_table/index.ts | 2 +- .../fe/src/graph_info_board/useNodeInfo.ts | 14 -------------- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_info_board/components/tf_vaddin_text_table/index.ts b/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_info_board/components/tf_vaddin_text_table/index.ts index 9f6d663fc..7e97498e6 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_info_board/components/tf_vaddin_text_table/index.ts +++ b/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_info_board/components/tf_vaddin_text_table/index.ts @@ -39,7 +39,7 @@ class TfVaadinTable extends PolymerElement { .copyable-input { gap: 8px; width: 100%; - height: 160px; + height: 260px; font-family: Roboto, sans-serif; font-weight: 400; } diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_info_board/useNodeInfo.ts b/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_info_board/useNodeInfo.ts index 9ea8877b2..d9557cec4 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_info_board/useNodeInfo.ts +++ b/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_info_board/useNodeInfo.ts @@ -167,20 +167,6 @@ const useNodeInfo = (): UseNodeInfoType => { stackInfo[title] = 'stackInfo'; detailData.push(stackInfo); } - // 获取suggestions - const suggestion: Record = {}; - const npusuggestion = npuNode?.suggestions; - const benchsuggestion = benchNode?.suggestions; - if (!isEmpty(npusuggestion)) { - suggestion[nodeName] = converObjectToString(npusuggestion); - } - if (!isEmpty(benchsuggestion)) { - suggestion[benchNodeName] = converObjectToString(benchsuggestion); - } - if (!isEmpty(suggestion)) { - suggestion[title] = 'suggestions'; - detailData.push(suggestion); - } // 获取parallel_merge_info const parallelMergeInfo: Record = {}; const npuparallelMergeInfo = npuNode?.parallelMergeInfo; -- Gitee From 7d5e39bdd93ed9c5234b51f3be13416185a3e9e1 Mon Sep 17 00:00:00 2001 From: sunchao <1299792067@qq.com> Date: Tue, 1 Jul 2025 17:29:04 +0800 Subject: [PATCH 70/79] =?UTF-8?q?=E2=9C=A8=20feat:=20=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E5=A2=9E=E5=8A=A0=E5=8F=AF=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tb_graph_ascend/fe/package-lock.json | 204 ++++++++++++++---- .../tb_graph_ascend/fe/package.json | 1 + .../components/tf_manual_match/index.ts | 18 +- .../components/tf_manual_match/useMatched.ts | 13 +- .../src/graph_controls_board/type/index.d.ts | 4 +- .../server/app/service/graph_service.py | 37 +++- .../server/app/views/graph_views.py | 6 +- 7 files changed, 225 insertions(+), 58 deletions(-) diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/fe/package-lock.json b/plugins/tensorboard-plugins/tb_graph_ascend/fe/package-lock.json index 15f1931fe..0e2e1896e 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/fe/package-lock.json +++ b/plugins/tensorboard-plugins/tb_graph_ascend/fe/package-lock.json @@ -29,6 +29,7 @@ "@polymer/polymer": "^3.5.1", "@types/lodash": "^4.17.1", "@vaadin/button": "24.6.5", + "@vaadin/checkbox": "^24.8.2", "@vaadin/combo-box": "24.6.5", "@vaadin/context-menu": "24.6.5", "@vaadin/details": "24.6.5", @@ -1217,14 +1218,14 @@ } }, "node_modules/@vaadin/a11y-base": { - "version": "24.6.7", - "resolved": "https://registry.npmmirror.com/@vaadin/a11y-base/-/a11y-base-24.6.7.tgz", - "integrity": "sha512-CJYYTWPBEEaVt4AvBE8RzEn3hqUZbGUGLzqs6NGBFTw0c5cfkqoO2ZMkKhz5Z52QF+2mCXpEtyg6s+t0h171Qg==", + "version": "24.6.11", + "resolved": "https://registry.npmmirror.com/@vaadin/a11y-base/-/a11y-base-24.6.11.tgz", + "integrity": "sha512-yBZ0QGPngbItIJQx3FRIa9IXDW2Ftf6SFFPGhbdAZafJPBlFi6FElP9cVtL3qjJlI5KKBp/UXEcC8ehPK207gw==", "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.6.7", + "@vaadin/component-base": "~24.6.11", "lit": "^3.0.0" } }, @@ -1245,22 +1246,108 @@ } }, "node_modules/@vaadin/checkbox": { - "version": "24.6.7", - "resolved": "https://registry.npmmirror.com/@vaadin/checkbox/-/checkbox-24.6.7.tgz", - "integrity": "sha512-/Vl5codokNdN5ku1l/iAkdjUmYTUZGKyAleHjM7V3ZFpwkK2IoWN4HrbWyhPuf1gL3T85bKMLSPuYoOX/ymrFw==", + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/checkbox/-/checkbox-24.8.2.tgz", + "integrity": "sha512-sQPrahkVyK1Mm0t5tGKLzkKLnkhnLgBOQTnCUNQDThyhldcAFmzModnzkl/6rf8dFz0ti35AwUaV0mebfAUsUw==", "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.6.7", - "@vaadin/component-base": "~24.6.7", - "@vaadin/field-base": "~24.6.7", - "@vaadin/vaadin-lumo-styles": "~24.6.7", - "@vaadin/vaadin-material-styles": "~24.6.7", - "@vaadin/vaadin-themable-mixin": "~24.6.7", + "@vaadin/a11y-base": "~24.8.2", + "@vaadin/component-base": "~24.8.2", + "@vaadin/field-base": "~24.8.2", + "@vaadin/vaadin-lumo-styles": "~24.8.2", + "@vaadin/vaadin-material-styles": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/checkbox/node_modules/@vaadin/a11y-base": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/a11y-base/-/a11y-base-24.8.2.tgz", + "integrity": "sha512-Cp2raqWoe/sgzuvpSo17ROxEvTMj+3gYfW8uAkCEC2bVmV542oMiPzLPyC0GP2GjJGzrvz7y9eQ3sq1ATZxLkA==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.8.2", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/checkbox/node_modules/@vaadin/component-base": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/component-base/-/component-base-24.8.2.tgz", + "integrity": "sha512-pzM49fDKm4erK5GDIvakb0utCm8Xm7oBqkxyGJfgS3y9w8MGvJ6foUL/QD+13nW5zL6toZ+kwdIw7PvIF96pKQ==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/vaadin-development-mode-detector": "^2.0.0", + "@vaadin/vaadin-usage-statistics": "^2.1.0", "lit": "^3.0.0" } }, + "node_modules/@vaadin/checkbox/node_modules/@vaadin/field-base": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/field-base/-/field-base-24.8.2.tgz", + "integrity": "sha512-a74pBeaPI6E/bvwLCOlF8LyU0TcOqen1KSbERifPsPECRQq0ODif2pfOEiEatD1P/DM0jh8fdaiPjq2BTocNbw==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/a11y-base": "~24.8.2", + "@vaadin/component-base": "~24.8.2", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/checkbox/node_modules/@vaadin/icon": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/icon/-/icon-24.8.2.tgz", + "integrity": "sha512-0IhbiikTDJzpn9NQplKIIW2lK5tK6q2pLHXT+O41KA2ZcwTWoyAoKQyjU40vpHK+9EOGhwqX7LncugnWSO6iwg==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.8.2", + "@vaadin/vaadin-lumo-styles": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/checkbox/node_modules/@vaadin/vaadin-lumo-styles": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.8.2.tgz", + "integrity": "sha512-DanIV4ZHjmb/1dF+oyj33IZVxEXLa1Sjb3ZDWrTlu6I59/veDsFE7g6y6ZYjNLE/O8YlE1oz8yHEUViSXmBwfw==", + "license": "Apache-2.0", + "dependencies": { + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.8.2", + "@vaadin/icon": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2" + } + }, + "node_modules/@vaadin/checkbox/node_modules/@vaadin/vaadin-material-styles": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.8.2.tgz", + "integrity": "sha512-l0WMqPeH0bfoviZqu96h9CFZ92Y7nQwG9gb1mr9tkXd7XCbt/DEmCcvVaAJSpxVp+Qi7/J8z8Wn9855GExTdHg==", + "license": "Apache-2.0", + "dependencies": { + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2" + } + }, + "node_modules/@vaadin/checkbox/node_modules/@vaadin/vaadin-themable-mixin": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.8.2.tgz", + "integrity": "sha512-i0MLfbGU+B1fWEPxAQzrQOdQ2JfrYLyagOfe8FOKFAMm03xURtbD7hZKxFchULudphD+/NvHh2i++Vl3mGMfsA==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "lit": "^3.0.0", + "style-observer": "^0.0.8" + } + }, "node_modules/@vaadin/combo-box": { "version": "24.6.5", "resolved": "https://registry.npmmirror.com/@vaadin/combo-box/-/combo-box-24.6.5.tgz", @@ -1283,9 +1370,9 @@ } }, "node_modules/@vaadin/component-base": { - "version": "24.6.7", - "resolved": "https://registry.npmmirror.com/@vaadin/component-base/-/component-base-24.6.7.tgz", - "integrity": "sha512-LcZQZEwouPDHBoXfXRREb1mRScsPSPeKTUZdgrXh180Piy57VzpNzslIMrdfVFSye9lLMs2/g2o8HCUDgnY/OQ==", + "version": "24.6.11", + "resolved": "https://registry.npmmirror.com/@vaadin/component-base/-/component-base-24.6.11.tgz", + "integrity": "sha512-7jR6vcJeCBgY2CNbAPLOcUTsxYspqdkA0slUGk3GwfgsRDD5FLkzqQDSM5+yE6O2+4Wah2Tk+kG/GsKGtlUlwg==", "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", @@ -1333,15 +1420,15 @@ } }, "node_modules/@vaadin/field-base": { - "version": "24.6.7", - "resolved": "https://registry.npmmirror.com/@vaadin/field-base/-/field-base-24.6.7.tgz", - "integrity": "sha512-5MXpAQGZA15/hRdnZrJK5q5Mv8rgOraSyBpC/gjRJ1W1IQ5DrCcb3ltvPATguv0K3vpJwunXGXrGqm/+SGEk0w==", + "version": "24.6.11", + "resolved": "https://registry.npmmirror.com/@vaadin/field-base/-/field-base-24.6.11.tgz", + "integrity": "sha512-dRjxKzbW3xQAau1xuO8uZepVWaImS2wEyKDK9Oh+y8iiu4smYEmo9e4aqMqQN/sOHU6OSa4YtbyJZlvD1sBXrA==", "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.6.7", - "@vaadin/component-base": "~24.6.7", + "@vaadin/a11y-base": "~24.6.11", + "@vaadin/component-base": "~24.6.11", "lit": "^3.0.0" } }, @@ -1364,6 +1451,23 @@ "lit": "^3.0.0" } }, + "node_modules/@vaadin/grid/node_modules/@vaadin/checkbox": { + "version": "24.6.11", + "resolved": "https://registry.npmmirror.com/@vaadin/checkbox/-/checkbox-24.6.11.tgz", + "integrity": "sha512-Uvd6gZ3xQQrZTtCJL6f4uLbg6mXsAKjiZto7Je39yJwUHz8r5MIQr+4mLF4zc6mYVSH/Ihj/a4n9FOuTwSEuQw==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/a11y-base": "~24.6.11", + "@vaadin/component-base": "~24.6.11", + "@vaadin/field-base": "~24.6.11", + "@vaadin/vaadin-lumo-styles": "~24.6.11", + "@vaadin/vaadin-material-styles": "~24.6.11", + "@vaadin/vaadin-themable-mixin": "~24.6.11", + "lit": "^3.0.0" + } + }, "node_modules/@vaadin/icon": { "version": "24.6.5", "resolved": "https://registry.npmmirror.com/@vaadin/icon/-/icon-24.6.5.tgz", @@ -1625,46 +1729,46 @@ "license": "Apache-2.0" }, "node_modules/@vaadin/vaadin-lumo-styles": { - "version": "24.6.7", - "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.6.7.tgz", - "integrity": "sha512-DNamU8cVxbaVn3HfRm3pN8ul95xvaem92ByVeEQwdvKaHwLI4m7AdSWKEA+13ST9TdBtCeDW6DjmtGcoEqbqiw==", + "version": "24.6.11", + "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.6.11.tgz", + "integrity": "sha512-WRluczao8lZgImdtl66v09YjFULb1iLAhcU48aiR9igAT7h6aLeHYBvRH3AA/gBlUNwHd4xlBSl89p4HP2GGog==", "license": "Apache-2.0", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.6.7", - "@vaadin/icon": "~24.6.7", - "@vaadin/vaadin-themable-mixin": "~24.6.7" + "@vaadin/component-base": "~24.6.11", + "@vaadin/icon": "~24.6.11", + "@vaadin/vaadin-themable-mixin": "~24.6.11" } }, "node_modules/@vaadin/vaadin-lumo-styles/node_modules/@vaadin/icon": { - "version": "24.6.7", - "resolved": "https://registry.npmmirror.com/@vaadin/icon/-/icon-24.6.7.tgz", - "integrity": "sha512-+Cv3hLyFSXJAhnuGuPQ+hQcv9/ijZpIprJ6rqWeChvFk+bQOoPgUPx/tj67mOiTcrmV5hYt+dYs4QM7JZ//dGg==", + "version": "24.6.11", + "resolved": "https://registry.npmmirror.com/@vaadin/icon/-/icon-24.6.11.tgz", + "integrity": "sha512-CKOh+I84+GZRfMHrhtATtrw3bSW5eUArgGT4cKsOY3asoCZXUdTObPD/PqKfP4e2uAA1bgLl27kOc+W8dmibJA==", "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.6.7", - "@vaadin/vaadin-lumo-styles": "~24.6.7", - "@vaadin/vaadin-themable-mixin": "~24.6.7", + "@vaadin/component-base": "~24.6.11", + "@vaadin/vaadin-lumo-styles": "~24.6.11", + "@vaadin/vaadin-themable-mixin": "~24.6.11", "lit": "^3.0.0" } }, "node_modules/@vaadin/vaadin-material-styles": { - "version": "24.6.7", - "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.6.7.tgz", - "integrity": "sha512-7ecHOEZrFEbUz5UVSGapOt/uC7lSYV05RADCNhG16c+WsuN+oxkGIIaThMMCdBcclg5ej/BeTxZlZha8JoNO3g==", + "version": "24.6.11", + "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.6.11.tgz", + "integrity": "sha512-tDumwlaDp/s9u++MPi64I1o2ls/drWOZf4xVPhztUjt3NwYJUeVXtwu39q0wBRIeRM7UBrs06kug2CVT72U4qQ==", "license": "Apache-2.0", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.6.7", - "@vaadin/vaadin-themable-mixin": "~24.6.7" + "@vaadin/component-base": "~24.6.11", + "@vaadin/vaadin-themable-mixin": "~24.6.11" } }, "node_modules/@vaadin/vaadin-themable-mixin": { - "version": "24.6.7", - "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.6.7.tgz", - "integrity": "sha512-fiVBvJWInNBq/oXeE0UAQmzadQ7UJE3ns768D1taKOwTMOxiio1UMoUXcVGwni9ASzXrd96S7F6c4aIaVqNx6A==", + "version": "24.6.11", + "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.6.11.tgz", + "integrity": "sha512-xCmn3X+2C7nI9LQn2OqLLkLw7VeJOCo99DlHwnxeLZpJJ/s8bjDXcIWflS+IOChzHixgEFkDSoLcNYoCR1RvYg==", "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", @@ -5977,6 +6081,22 @@ "webpack": "^5.27.0" } }, + "node_modules/style-observer": { + "version": "0.0.8", + "resolved": "https://registry.npmmirror.com/style-observer/-/style-observer-0.0.8.tgz", + "integrity": "sha512-UaIPn33Sx4BJ+goia51Q++VFWoplWK1995VdxQYzwwbFa+FUNLKlG+aiIdG2Vw7VyzIUBi8tqu8mTyg0Ppu6Yg==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/LeaVerou" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/leaverou" + } + ], + "license": "MIT" + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", @@ -6569,4 +6689,4 @@ } } } -} \ No newline at end of file +} diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/fe/package.json b/plugins/tensorboard-plugins/tb_graph_ascend/fe/package.json index d5bf73218..6bb4470b3 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/fe/package.json +++ b/plugins/tensorboard-plugins/tb_graph_ascend/fe/package.json @@ -50,6 +50,7 @@ "@polymer/polymer": "^3.5.1", "@types/lodash": "^4.17.1", "@vaadin/button": "24.6.5", + "@vaadin/checkbox": "^24.8.2", "@vaadin/combo-box": "24.6.5", "@vaadin/context-menu": "24.6.5", "@vaadin/details": "24.6.5", diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_controls_board/components/tf_manual_match/index.ts b/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_controls_board/components/tf_manual_match/index.ts index 72d6ca4a8..9f6b98968 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_controls_board/components/tf_manual_match/index.ts +++ b/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_controls_board/components/tf_manual_match/index.ts @@ -19,6 +19,7 @@ import '@vaadin/details'; import '@vaadin/combo-box'; import '@vaadin/tooltip'; import '@vaadin/progress-bar'; +import '@vaadin/checkbox'; import { isEmpty } from 'lodash'; import { Notification } from '@vaadin/notification'; import { PolymerElement, html } from '@polymer/polymer'; @@ -63,7 +64,12 @@ class Legend extends PolymerElement { tf-search-combox.matched-node::part(arraw-button) { margin-top: 28px !important; } - + .match-checkbox{ + font-size: 14px; + } + vaadin-checkbox::part(checkbox) { + + } .vaadin-details-title { font-size: 14px; color: #333333; @@ -160,6 +166,7 @@ class Legend extends PolymerElement { +
    点击匹配
    @@ -183,6 +190,7 @@ class Legend extends PolymerElement { +
    取消匹配
    @@ -285,6 +293,12 @@ class Legend extends PolymerElement { @property({ type: String }) selectedConfigFile: string = ''; + @property({ type: Boolean }) + isMatchChildren: boolean = true; + + @property({ type: Boolean }) + isUnMatchChildren: boolean = true; + useMatched: UseMatchedType = useMatched(); npuMatchedNodeList = {}; benchMatchedNodeList = {}; @@ -414,6 +428,7 @@ class Legend extends PolymerElement { this.selectedNpuMatchedNode, this.selectedBenchMatchedNode, this.selection, + this.isUnMatchChildren ); this.set('unmatchLoading', false); if (success) { @@ -534,6 +549,7 @@ class Legend extends PolymerElement { this.selectedNpuUnMatchedNode, this.selectedBenchUnMatchedNode, this.selection, + this.isMatchChildren, ); this.set('matchLoading', false); if (success) { diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_controls_board/components/tf_manual_match/useMatched.ts b/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_controls_board/components/tf_manual_match/useMatched.ts index efceeb4bc..3358e257a 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_controls_board/components/tf_manual_match/useMatched.ts +++ b/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_controls_board/components/tf_manual_match/useMatched.ts @@ -20,21 +20,23 @@ import { safeJSONParse } from '../../../utils'; import request from '../../../utils/request'; import { UseMatchedType, MatchResultType } from '../../type'; const useMatched = (): UseMatchedType => { - const requestAddMatchNodes = async (npuNodeName: string, benchNodeName: string, metaData: any): Promise => { + const requestAddMatchNodes = async (npuNodeName: string, benchNodeName: string, metaData: any, isMatchChildren: boolean): Promise => { const params = { npuNodeName: npuNodeName, benchNodeName: benchNodeName, metaData: JSON.stringify(metaData), + isMatchChildren }; const mactchResult = await request({ url: 'addMatchNodes', method: 'GET', params: params }); return mactchResult; }; - const requestDeleteMatchNodes = async (npuNodeName: string, benchNodeName: string, metaData: any): Promise => { + const requestDeleteMatchNodes = async (npuNodeName: string, benchNodeName: string, metaData: any, isUnMatchChildren: boolean): Promise => { const params = { npuNodeName: npuNodeName, benchNodeName: benchNodeName, metaData: JSON.stringify(metaData), + isUnMatchChildren }; const mactchResult = await request({ url: 'deleteMatchNodes', method: 'GET', params: params }); return mactchResult; @@ -89,6 +91,7 @@ const useMatched = (): UseMatchedType => { npuNodeName: string, benchNodeName: string, selection: any, + isMatchChildren: boolean ): Promise => { if (isEmpty(npuNodeName) || isEmpty(benchNodeName)) { return { @@ -100,11 +103,11 @@ const useMatched = (): UseMatchedType => { run: selection.run, tag: selection.tag, }; - const matchResult: MatchResultType = await requestAddMatchNodes(npuNodeName, benchNodeName, metaData); + const matchResult: MatchResultType = await requestAddMatchNodes(npuNodeName, benchNodeName, metaData, isMatchChildren); return matchResult; }; - const deleteMatchedNodesLink = async (npuNodeName: string, benchNodeName: string, selection: any): Promise => { + const deleteMatchedNodesLink = async (npuNodeName: string, benchNodeName: string, selection: any, isUnMatchChildren: boolean): Promise => { if (isEmpty(npuNodeName) || isEmpty(benchNodeName)) { return { success: false, @@ -115,7 +118,7 @@ const useMatched = (): UseMatchedType => { run: selection.run, tag: selection.tag, }; - const matchResult: MatchResultType = await requestDeleteMatchNodes(npuNodeName, benchNodeName, metaData); + const matchResult: MatchResultType = await requestDeleteMatchNodes(npuNodeName, benchNodeName, metaData, isUnMatchChildren); return matchResult; }; diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_controls_board/type/index.d.ts b/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_controls_board/type/index.d.ts index 94b2d6698..e4339fb2a 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_controls_board/type/index.d.ts +++ b/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_controls_board/type/index.d.ts @@ -23,8 +23,8 @@ export type MetaDirType = Record>; export interface UseMatchedType { saveMatchedNodesLink: (selection: any) => Promise; - addMatchedNodesLink: (npuNodeName: string, benchNodeName: string, selection: any) => Promise; - deleteMatchedNodesLink: (npuNodeName: string, benchNodeName: string, selection: any) => Promise; + addMatchedNodesLink: (npuNodeName: string, benchNodeName: string, selection: any, isMatchChildren: boolean) => Promise; + deleteMatchedNodesLink: (npuNodeName: string, benchNodeName: string, selection: any, isUnMatchChildren: boolean) => Promise; saveMatchedRelations: (selection: any) => Promise; addMatchedNodesLinkByConfigFile: (condfigFile: string, selection: any) => Promise; } diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/service/graph_service.py b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/service/graph_service.py index 70ef0b217..202707c85 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/service/graph_service.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/service/graph_service.py @@ -262,17 +262,30 @@ class GraphService: return {'success': False, 'error': '获取节点信息失败:' + str(e), 'data': None} @staticmethod - def add_match_nodes(npu_node_name, bench_node_name, meta_data): + def add_match_nodes(npu_node_name, bench_node_name, meta_data, is_match_children): graph_data, error_message = GraphUtils.get_graph_data(meta_data) if error_message: return {'success': False, 'error': error_message} task = graph_data.get('task') + result = {} try: # 根据任务类型计算误差 if task == 'md5' or task == 'summary': - result = MatchNodesController.process_task_add_child_layer(graph_data, - npu_node_name, bench_node_name, task) - return result + if(is_match_children): + result = MatchNodesController.process_task_add_child_layer(graph_data, + npu_node_name, bench_node_name, task) + return result + else: + result = MatchNodesController.process_task_add(graph_data, npu_node_name, bench_node_name, task) + if result.get('success'): + config_data = GraphState.get_global_value("config_data") + result['data'] = { + 'npuMatchNodes': config_data.get('npuMatchNodes', {}), + 'benchMatchNodes': config_data.get('benchMatchNodes', {}), + 'npuUnMatchNodes': config_data.get('npuUnMatchNodes', []), + 'benchUnMatchNodes': config_data.get('benchUnMatchNodes', []) + } + return result else: return {'success': False, 'error': '任务类型不支持(Task type not supported) '} except Exception as e: @@ -298,16 +311,28 @@ class GraphService: return {'success': False, 'error': '操作失败', 'data': None} @staticmethod - def delete_match_nodes(npu_node_name, bench_node_name, meta_data): + def delete_match_nodes(npu_node_name, bench_node_name, meta_data, is_unmatch_children): graph_data, error_message = GraphUtils.get_graph_data(meta_data) if error_message: return {'success': False, 'error': error_message} task = graph_data.get('task') + result = {} try: # 根据任务类型计算误差 if task == 'md5' or task == 'summary': - result = MatchNodesController.process_task_delete_child_layer(graph_data, npu_node_name, + if(is_unmatch_children): + result = MatchNodesController.process_task_delete_child_layer(graph_data, npu_node_name, bench_node_name, task) + else: + result = MatchNodesController.process_task_delete(graph_data, npu_node_name, bench_node_name, task) + if result.get('success'): + config_data = GraphState.get_global_value("config_data") + result['data'] = { + 'npuMatchNodes': config_data.get('npuMatchNodes', {}), + 'benchMatchNodes': config_data.get('benchMatchNodes', {}), + 'npuUnMatchNodes': config_data.get('npuUnMatchNodes', []), + 'benchUnMatchNodes': config_data.get('benchUnMatchNodes', []) + } return result else: return {'success': False, 'error': '任务类型不支持(Task type not supported) '} diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/views/graph_views.py b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/views/graph_views.py index 1ef7130e8..85762222b 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/server/app/views/graph_views.py +++ b/plugins/tensorboard-plugins/tb_graph_ascend/server/app/views/graph_views.py @@ -135,7 +135,8 @@ class GraphView: npu_node_name = request.args.get("npuNodeName") bench_node_name = request.args.get("benchNodeName") meta_data = GraphUtils.safe_json_loads(request.args.get("metaData")) - match_result = GraphService.add_match_nodes(npu_node_name, bench_node_name, meta_data) + is_match_children = GraphUtils.safe_json_loads(request.args.get("isMatchChildren")) + match_result = GraphService.add_match_nodes(npu_node_name, bench_node_name, meta_data, is_match_children) return http_util.Respond(request, json.dumps(match_result), "application/json") # 取消节点匹配 @@ -145,7 +146,8 @@ class GraphView: npu_node_name = request.args.get("npuNodeName") bench_node_name = request.args.get("benchNodeName") meta_data = GraphUtils.safe_json_loads(request.args.get("metaData")) - match_result = GraphService.delete_match_nodes(npu_node_name, bench_node_name, meta_data) + is_unmatch_children = GraphUtils.safe_json_loads(request.args.get("isUnMatchChildren")) + match_result = GraphService.delete_match_nodes(npu_node_name, bench_node_name, meta_data, is_unmatch_children) return http_util.Respond(request, json.dumps(match_result), "application/json") # 保存匹配节点列表 -- Gitee From c980a7d64b8f946faf8a64111f6c5d428c9ab917 Mon Sep 17 00:00:00 2001 From: sunchao <1299792067@qq.com> Date: Wed, 2 Jul 2025 11:41:28 +0800 Subject: [PATCH 71/79] =?UTF-8?q?=F0=9F=90=9E=20fix:=20=E5=85=BC=E9=A1=BE?= =?UTF-8?q?=E6=98=93=E7=94=A8=E6=80=A7=E9=97=AE=E9=A2=98=E5=92=8C=E5=AE=89?= =?UTF-8?q?=E5=85=A8=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tb_graph_ascend/fe/package-lock.json | 239 ++++++++++++++++++ .../tb_graph_ascend/fe/package.json | 1 + .../fe/src/graph_ascend/index.ts | 51 +++- .../fe/src/graph_ascend/type/index.d.ts | 13 + .../fe/src/graph_ascend/useGraphAscend.ts | 21 +- .../tb_graph_ascend/fe/src/index.css | 5 + .../server/app/service/graph_service.py | 16 +- .../server/app/views/graph_views.py | 3 +- 8 files changed, 336 insertions(+), 13 deletions(-) diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/fe/package-lock.json b/plugins/tensorboard-plugins/tb_graph_ascend/fe/package-lock.json index 0e2e1896e..d58f92bf2 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/fe/package-lock.json +++ b/plugins/tensorboard-plugins/tb_graph_ascend/fe/package-lock.json @@ -31,6 +31,7 @@ "@vaadin/button": "24.6.5", "@vaadin/checkbox": "^24.8.2", "@vaadin/combo-box": "24.6.5", + "@vaadin/confirm-dialog": "^24.8.2", "@vaadin/context-menu": "24.6.5", "@vaadin/details": "24.6.5", "@vaadin/grid": "24.6.5", @@ -1382,6 +1383,129 @@ "lit": "^3.0.0" } }, + "node_modules/@vaadin/confirm-dialog": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/confirm-dialog/-/confirm-dialog-24.8.2.tgz", + "integrity": "sha512-JIAhOYvhSlJbPDZ+EKbKENa2xsYy8fTlUO8cWJxJvDs1p/MbPCGvc9rhmHlKCHJJEGXyN23sS08ef7NHX7d9CA==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/button": "~24.8.2", + "@vaadin/component-base": "~24.8.2", + "@vaadin/dialog": "~24.8.2", + "@vaadin/overlay": "~24.8.2", + "@vaadin/vaadin-lumo-styles": "~24.8.2", + "@vaadin/vaadin-material-styles": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/confirm-dialog/node_modules/@vaadin/a11y-base": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/a11y-base/-/a11y-base-24.8.2.tgz", + "integrity": "sha512-Cp2raqWoe/sgzuvpSo17ROxEvTMj+3gYfW8uAkCEC2bVmV542oMiPzLPyC0GP2GjJGzrvz7y9eQ3sq1ATZxLkA==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.8.2", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/confirm-dialog/node_modules/@vaadin/button": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/button/-/button-24.8.2.tgz", + "integrity": "sha512-wuJn+aa4QfWC1KW2D4S6B8Qbh39MZ+/GoBVqjldU5KSksJEZFFePym0SmpRodvuSuoxrFKote7CxtthOY4TwXw==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/a11y-base": "~24.8.2", + "@vaadin/component-base": "~24.8.2", + "@vaadin/vaadin-lumo-styles": "~24.8.2", + "@vaadin/vaadin-material-styles": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/confirm-dialog/node_modules/@vaadin/component-base": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/component-base/-/component-base-24.8.2.tgz", + "integrity": "sha512-pzM49fDKm4erK5GDIvakb0utCm8Xm7oBqkxyGJfgS3y9w8MGvJ6foUL/QD+13nW5zL6toZ+kwdIw7PvIF96pKQ==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/vaadin-development-mode-detector": "^2.0.0", + "@vaadin/vaadin-usage-statistics": "^2.1.0", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/confirm-dialog/node_modules/@vaadin/icon": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/icon/-/icon-24.8.2.tgz", + "integrity": "sha512-0IhbiikTDJzpn9NQplKIIW2lK5tK6q2pLHXT+O41KA2ZcwTWoyAoKQyjU40vpHK+9EOGhwqX7LncugnWSO6iwg==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.8.2", + "@vaadin/vaadin-lumo-styles": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/confirm-dialog/node_modules/@vaadin/overlay": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/overlay/-/overlay-24.8.2.tgz", + "integrity": "sha512-DsmynLnU2KCNNRQe/0qHfRHQoSe/oZtrbzTGp7xyjwmU2sPLH4fXNShUbXi7MegLJs/YOH1QoIh8ejXNzxNuCA==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/a11y-base": "~24.8.2", + "@vaadin/component-base": "~24.8.2", + "@vaadin/vaadin-lumo-styles": "~24.8.2", + "@vaadin/vaadin-material-styles": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/confirm-dialog/node_modules/@vaadin/vaadin-lumo-styles": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.8.2.tgz", + "integrity": "sha512-DanIV4ZHjmb/1dF+oyj33IZVxEXLa1Sjb3ZDWrTlu6I59/veDsFE7g6y6ZYjNLE/O8YlE1oz8yHEUViSXmBwfw==", + "license": "Apache-2.0", + "dependencies": { + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.8.2", + "@vaadin/icon": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2" + } + }, + "node_modules/@vaadin/confirm-dialog/node_modules/@vaadin/vaadin-material-styles": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.8.2.tgz", + "integrity": "sha512-l0WMqPeH0bfoviZqu96h9CFZ92Y7nQwG9gb1mr9tkXd7XCbt/DEmCcvVaAJSpxVp+Qi7/J8z8Wn9855GExTdHg==", + "license": "Apache-2.0", + "dependencies": { + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2" + } + }, + "node_modules/@vaadin/confirm-dialog/node_modules/@vaadin/vaadin-themable-mixin": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.8.2.tgz", + "integrity": "sha512-i0MLfbGU+B1fWEPxAQzrQOdQ2JfrYLyagOfe8FOKFAMm03xURtbD7hZKxFchULudphD+/NvHh2i++Vl3mGMfsA==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "lit": "^3.0.0", + "style-observer": "^0.0.8" + } + }, "node_modules/@vaadin/context-menu": { "version": "24.6.5", "resolved": "https://registry.npmmirror.com/@vaadin/context-menu/-/context-menu-24.6.5.tgz", @@ -1419,6 +1543,121 @@ "lit": "^3.0.0" } }, + "node_modules/@vaadin/dialog": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/dialog/-/dialog-24.8.2.tgz", + "integrity": "sha512-DLUt4nPKQtTVBqQFwq4nz+TRht0uHFfNh/u/uR/7WdUISR7EwJ/L8XztiJO2tbv16toYl3FrX7Us8ybsHZIqKA==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.8.2", + "@vaadin/lit-renderer": "~24.8.2", + "@vaadin/overlay": "~24.8.2", + "@vaadin/vaadin-lumo-styles": "~24.8.2", + "@vaadin/vaadin-material-styles": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/dialog/node_modules/@vaadin/a11y-base": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/a11y-base/-/a11y-base-24.8.2.tgz", + "integrity": "sha512-Cp2raqWoe/sgzuvpSo17ROxEvTMj+3gYfW8uAkCEC2bVmV542oMiPzLPyC0GP2GjJGzrvz7y9eQ3sq1ATZxLkA==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.8.2", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/dialog/node_modules/@vaadin/component-base": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/component-base/-/component-base-24.8.2.tgz", + "integrity": "sha512-pzM49fDKm4erK5GDIvakb0utCm8Xm7oBqkxyGJfgS3y9w8MGvJ6foUL/QD+13nW5zL6toZ+kwdIw7PvIF96pKQ==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/vaadin-development-mode-detector": "^2.0.0", + "@vaadin/vaadin-usage-statistics": "^2.1.0", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/dialog/node_modules/@vaadin/icon": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/icon/-/icon-24.8.2.tgz", + "integrity": "sha512-0IhbiikTDJzpn9NQplKIIW2lK5tK6q2pLHXT+O41KA2ZcwTWoyAoKQyjU40vpHK+9EOGhwqX7LncugnWSO6iwg==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.8.2", + "@vaadin/vaadin-lumo-styles": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/dialog/node_modules/@vaadin/lit-renderer": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/lit-renderer/-/lit-renderer-24.8.2.tgz", + "integrity": "sha512-5xNRhD6ZPWLpvbCZ4mg/V6W93v3ohUyP/ULKk/6Hzxe05w6iYsel2xNEzoycmdQKIb/k24xZQMz53KDT8fyroQ==", + "license": "Apache-2.0", + "dependencies": { + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/dialog/node_modules/@vaadin/overlay": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/overlay/-/overlay-24.8.2.tgz", + "integrity": "sha512-DsmynLnU2KCNNRQe/0qHfRHQoSe/oZtrbzTGp7xyjwmU2sPLH4fXNShUbXi7MegLJs/YOH1QoIh8ejXNzxNuCA==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/a11y-base": "~24.8.2", + "@vaadin/component-base": "~24.8.2", + "@vaadin/vaadin-lumo-styles": "~24.8.2", + "@vaadin/vaadin-material-styles": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2", + "lit": "^3.0.0" + } + }, + "node_modules/@vaadin/dialog/node_modules/@vaadin/vaadin-lumo-styles": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.8.2.tgz", + "integrity": "sha512-DanIV4ZHjmb/1dF+oyj33IZVxEXLa1Sjb3ZDWrTlu6I59/veDsFE7g6y6ZYjNLE/O8YlE1oz8yHEUViSXmBwfw==", + "license": "Apache-2.0", + "dependencies": { + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.8.2", + "@vaadin/icon": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2" + } + }, + "node_modules/@vaadin/dialog/node_modules/@vaadin/vaadin-material-styles": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.8.2.tgz", + "integrity": "sha512-l0WMqPeH0bfoviZqu96h9CFZ92Y7nQwG9gb1mr9tkXd7XCbt/DEmCcvVaAJSpxVp+Qi7/J8z8Wn9855GExTdHg==", + "license": "Apache-2.0", + "dependencies": { + "@polymer/polymer": "^3.0.0", + "@vaadin/component-base": "~24.8.2", + "@vaadin/vaadin-themable-mixin": "~24.8.2" + } + }, + "node_modules/@vaadin/dialog/node_modules/@vaadin/vaadin-themable-mixin": { + "version": "24.8.2", + "resolved": "https://registry.npmmirror.com/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.8.2.tgz", + "integrity": "sha512-i0MLfbGU+B1fWEPxAQzrQOdQ2JfrYLyagOfe8FOKFAMm03xURtbD7hZKxFchULudphD+/NvHh2i++Vl3mGMfsA==", + "license": "Apache-2.0", + "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", + "lit": "^3.0.0", + "style-observer": "^0.0.8" + } + }, "node_modules/@vaadin/field-base": { "version": "24.6.11", "resolved": "https://registry.npmmirror.com/@vaadin/field-base/-/field-base-24.6.11.tgz", diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/fe/package.json b/plugins/tensorboard-plugins/tb_graph_ascend/fe/package.json index 6bb4470b3..3aacd5be1 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/fe/package.json +++ b/plugins/tensorboard-plugins/tb_graph_ascend/fe/package.json @@ -52,6 +52,7 @@ "@vaadin/button": "24.6.5", "@vaadin/checkbox": "^24.8.2", "@vaadin/combo-box": "24.6.5", + "@vaadin/confirm-dialog": "^24.8.2", "@vaadin/context-menu": "24.6.5", "@vaadin/details": "24.6.5", "@vaadin/grid": "24.6.5", diff --git a/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_ascend/index.ts b/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_ascend/index.ts index 8a3cff935..171bb15d2 100644 --- a/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_ascend/index.ts +++ b/plugins/tensorboard-plugins/tb_graph_ascend/fe/src/graph_ascend/index.ts @@ -17,12 +17,17 @@ import { customElement, observe, property } from '@polymer/decorators'; import { html, PolymerElement } from '@polymer/polymer'; import { LegacyElementMixin } from '../polymer/legacy_element_mixin'; +import { loadGraphFileInfoListType } from './type'; import useGraphAscend from './useGraphAscend'; import { formatBytes, safeJSONParse } from '../utils'; +import { isEmpty } from 'lodash'; import '../graph_board/index'; import '../graph_info_board/index'; import '../graph_controls_board/index'; import '../common/graph-board-layout'; +import '@vaadin/confirm-dialog' +import { Notification } from '@vaadin/notification'; + import type { SelectionType, ProgressType, GraphConfigType, GraphAllNodeType, NodeListType, UnmatchedNodeType } from './type'; @customElement('graph-ascend') @@ -82,7 +87,21 @@ class TfGraphDashboard extends LegacyElementMixin(PolymerElement) { - + +
    + +
    +

    -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%0DC2}}q*3BX5RUya!Ymvn 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℞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 5
    Total: 187948us
    Kernel: 98598us
    Percentage: 52.46%", 1941, "