From f4d75f1ee6313560bb6c0106084e2a15b4e06c61 Mon Sep 17 00:00:00 2001 From: shenlian Date: Thu, 31 Jul 2025 14:48:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=85=B3=E9=97=AD=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=8F=A5=E6=9F=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/resources/npu_info.py | 85 ++++++++++++++++++++-------------- 1 file changed, 51 insertions(+), 34 deletions(-) diff --git a/packages/resources/npu_info.py b/packages/resources/npu_info.py index 3f95d1ef..1566c86a 100644 --- a/packages/resources/npu_info.py +++ b/packages/resources/npu_info.py @@ -149,43 +149,60 @@ def get_metadatas(bdf_path): def get_model(): bdf_file_paths = [] - flags = os.O_WRONLY - modes = stat.S_IWUSR | stat.S_IRUSR - devnull = os.fdopen(os.open(os.devnull, flags, modes), 'w') - for candidate_dir in glob.glob('/sys/bus/pci/devices/*'): - find_metadata_cmd = ["grep", "0x1200", - os.path.join(candidate_dir, "class")] - return_code = subprocess.call(find_metadata_cmd, shell=False, - stdout=devnull, stderr=subprocess.STDOUT) - if return_code == 0: - bdf_file_paths.append(candidate_dir) - for bdf_file_path in bdf_file_paths: - model = _get_model(bdf_file_path, devnull) - if model != '--': - return model + devnull = None # 初始化变量,确保 finally 中可判断 try: - cp = subprocess.Popen(args=shlex.split(FIND_SOC_PRODUCT_CMD), - shell=False, - universal_newlines=True, - stdin=subprocess.PIPE, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - except Exception: + flags = os.O_WRONLY + modes = stat.S_IWUSR | stat.S_IRUSR + devnull = os.fdopen(os.open(os.devnull, flags, modes), 'w') + + # 收集候选目录 + for candidate_dir in glob.glob('/sys/bus/pci/devices/*'): + find_metadata_cmd = ["grep", "0x1200", os.path.join(candidate_dir, "class")] + return_code = subprocess.call( + find_metadata_cmd, + shell=False, + stdout=devnull, + stderr=subprocess.STDOUT + ) + if return_code == 0: + bdf_file_paths.append(candidate_dir) + + for bdf_file_path in bdf_file_paths: + model = _get_model(bdf_file_path, devnull) + if model != '--': + return model + + try: + cp = subprocess.Popen( + args=shlex.split(FIND_SOC_PRODUCT_CMD), + shell=False, + universal_newlines=True, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + except Exception: + return '--' + + dmi_info_lines = cp.stdout.readlines() + raw_product = "" + for line in dmi_info_lines: + if 'Product' in line: + product_infos = line.split(':') + if len(product_infos) < 2: + return '--' + raw_product = product_infos[1] + break + + product = raw_product.replace('\t', '').replace('\n', '').strip() + if product == 'Atlas 200I SoC A1': + return product + return '--' - dmi_info_lines = cp.stdout.readlines() - raw_product = "" - for i in dmi_info_lines: - if 'Product' in i: - product_infos = i.split(':') - if len(product_infos) < 2: - return '--' - raw_product = product_infos[1] - break - product = raw_product.replace('\t', '').replace('\n', '').strip() - if product == 'Atlas 200I SoC A1': - return product - return '--' + finally: + if devnull is not None: # 确保 devnull 被正确关闭 + devnull.close() def _get_model(bdf_file_path, devnull): ret = check_metadata_file_existance(bdf_file_path) -- Gitee From 86c88aa510b6a6653e862d328965eadd840ea8af Mon Sep 17 00:00:00 2001 From: shenlian Date: Thu, 31 Jul 2025 15:04:42 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=85=B3=E9=97=AD=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=8F=A5=E6=9F=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/resources/npu_info.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/resources/npu_info.py b/packages/resources/npu_info.py index 1566c86a..65c5ea43 100644 --- a/packages/resources/npu_info.py +++ b/packages/resources/npu_info.py @@ -204,6 +204,7 @@ def get_model(): if devnull is not None: # 确保 devnull 被正确关闭 devnull.close() + def _get_model(bdf_file_path, devnull): ret = check_metadata_file_existance(bdf_file_path) if not ret: -- Gitee