Coverage for /opt/cloud/slavespace/usr1/096471637100f3de0fcfc01072822a80/ut/src/asys/common/ascend910_93/ascend91093_handler.py: 32%
34 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-19 17:46 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-19 17:46 +0800
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3# ----------------------------------------------------------------------------
4# Copyright (c) 2025 Huawei Technologies Co., Ltd.
5#
6# Licensed under the Apache License, Version 2.0 (the "License");
7# you may not use this file except in compliance with the License.
8# You may obtain a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS,
14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15# See the License for the specific language governing permissions and
16# limitations under the License.
17# ----------------------------------------------------------------------------
19from threading import Thread
20from common.device import DeviceInfo
21import common.interface as interface
24class Ascend91093Handler(DeviceInfo):
25 def __init__(self):
26 super().__init__()
28 @classmethod
29 def need_lp_param(cls):
30 return False
32 @classmethod
33 def support_dvpp(cls):
34 return True
36 def run_diagnose(self, device_obj, diagnose_devices, run_mode):
37 """Multi-thread parallel execution"""
38 threads = []
39 ret = {}
40 master_ids = {}
42 logic_master_info = interface.get_devices_master_id(device_obj, diagnose_devices)
43 if run_mode == "hbm_detect":
44 _target_func = interface.run_hbm
45 elif run_mode == "cpu_detect":
46 _target_func = interface.run_cpu
47 else:
48 return interface.run_diagnose(device_obj, diagnose_devices, run_mode)
50 for device_id in diagnose_devices:
51 if logic_master_info[device_id] not in master_ids:
52 # new thread
53 t = Thread(target=_target_func, args=(device_id, device_obj, ret), daemon=True)
54 t.start()
55 threads.append(t)
56 master_ids[logic_master_info[device_id]] = device_id
58 # wait for all threads to end.
59 for t in threads:
60 t.join()
62 ret_logic_id = {}
63 for device_id in diagnose_devices:
64 ret_logic_id[device_id] = ret[master_ids[logic_master_info[device_id]]]
66 return ret_logic_id