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

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# ---------------------------------------------------------------------------- 

18 

19from threading import Thread 

20from common.device import DeviceInfo 

21import common.interface as interface 

22 

23 

24class Ascend91093Handler(DeviceInfo): 

25 def __init__(self): 

26 super().__init__() 

27 

28 @classmethod 

29 def need_lp_param(cls): 

30 return False 

31 

32 @classmethod 

33 def support_dvpp(cls): 

34 return True 

35 

36 def run_diagnose(self, device_obj, diagnose_devices, run_mode): 

37 """Multi-thread parallel execution""" 

38 threads = [] 

39 ret = {} 

40 master_ids = {} 

41 

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) 

49 

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 

57 

58 # wait for all threads to end. 

59 for t in threads: 

60 t.join() 

61 

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]]] 

65 

66 return ret_logic_id