From 927350dacfabd049cb015a02b23096afbf2ff11e Mon Sep 17 00:00:00 2001 From: j30031267 Date: Thu, 7 Dec 2023 16:45:50 +0800 Subject: [PATCH] =?UTF-8?q?summary=5Fonly=E5=9C=BA=E6=99=AF=E4=B8=8B?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E8=BE=93=E5=85=A5=E8=BE=93=E5=87=BAtensor?= =?UTF-8?q?=E7=9A=84md5=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ptdbg_ascend/src/python/ptdbg_ascend/common/utils.py | 6 ++++++ .../ptdbg_ascend/src/python/ptdbg_ascend/dump/dump.py | 8 +++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/common/utils.py b/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/common/utils.py index a78eb595f6..d8b3413343 100644 --- a/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/common/utils.py +++ b/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/common/utils.py @@ -23,6 +23,7 @@ import stat import subprocess import sys import time +import hashlib from datetime import datetime, timezone from functools import wraps from pathlib import Path @@ -715,3 +716,8 @@ def check_inplace_op(prefix): match_op = re.findall(r"Distributed_(.+?)_\d", prefix) op_name = match_op[0] if match_op else None return op_name in Const.INPLACE_LIST + +def get_md5_for_tensor(x): + tensor_bytes = x.cpu().detach().float().numpy().tobytes() + md5_hash = hashlib.md5(tensor_bytes) + return md5_hash.hexdigest() diff --git a/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/dump/dump.py b/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/dump/dump.py index 17fe015ac7..ace05f1a70 100644 --- a/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/dump/dump.py +++ b/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/dump/dump.py @@ -33,7 +33,7 @@ else: is_gpu = False from .utils import DumpUtil, check_if_in_api_list, make_dump_data_dir, get_tensor_rank, create_dirs_if_not_exist -from ..common.utils import print_warn_log, Const, print_info_log, modify_dump_path, check_inplace_op, CompareConst +from ..common.utils import print_warn_log, Const, print_info_log, modify_dump_path, check_inplace_op, CompareConst, get_md5_for_tensor from ..dump.utils import check_writable from ..common.file_check_util import FileOpen, change_mode, FileCheckConst, check_path_pattern_vaild, check_path_length @@ -71,7 +71,8 @@ def get_not_float_tensor_info(data): tensor_max = torch._C._VariableFunctionsClass.max(data).cpu().detach().float().numpy().tolist() tensor_min = torch._C._VariableFunctionsClass.min(data).cpu().detach().float().numpy().tolist() tensor_mean = torch._C._VariableFunctionsClass.mean(data.float()).cpu().detach().float().numpy().tolist() - return get_tensor_data_info(data, tensor_max, tensor_min, tensor_mean, CompareConst.NAN) + data_md5 = get_md5_for_tensor(data) + return get_tensor_data_info(data, tensor_max, tensor_min, tensor_mean, CompareConst.NAN, data_md5) def get_scalar_data_info(data): @@ -84,7 +85,8 @@ def get_float_tensor_info(data): tensor_min = torch._C._VariableFunctionsClass.min(data).cpu().detach().float().numpy().tolist() tensor_mean = torch._C._VariableFunctionsClass.mean(data).cpu().detach().float().numpy().tolist() tensor_norm = torch._C._VariableFunctionsClass.norm(data).cpu().detach().float().numpy().tolist() - return get_tensor_data_info(data, tensor_max, tensor_min, tensor_mean, tensor_norm) + data_md5 = get_md5_for_tensor(data) + return get_tensor_data_info(data, tensor_max, tensor_min, tensor_mean, tensor_norm, data_md5) def get_tensor_data_info(data, *tensor_args): -- Gitee