import os
import glob
tags_map = {
'driver': {
'need_nexus': False,
'name_keywords': ['driver', 'npu'],
'path_keywords': ['run_from_*_zip']
},
'firmware': {
'need_nexus': False,
'name_keywords': ['firmware', 'npu'],
'path_keywords': ['run_from_*_zip']
},
'ubengine': {
'need_nexus': False,
'name_keywords': ['UBEngine', 'npu'],
'path_keywords': ['run_from_*_zip']
},
'npu': {
'need_nexus': False,
'name_keywords': ['driver', 'firmware', 'npu'],
'path_keywords': ['run_from_*_zip']
},
'kernels': {
'need_nexus': False,
'name_keywords': ['kernels', 'ops'],
'path_keywords': ['run_from_*_zip', 'sources/*mpi*']
},
'nnae': {
'need_nexus': False,
'name_keywords': ['nnae', 'toolkit'],
'path_keywords': ['run_from_*_zip']
},
'nnrt': {
'need_nexus': False,
'name_keywords': ['nnrt', 'toolkit'],
'path_keywords': ['run_from_*_zip']
},
'toolbox': {
'need_nexus': False,
'name_keywords': ['toolbox', ],
'path_keywords': ['run_from_*_zip']
},
'toolkit': {
'need_nexus': False,
'name_keywords': ['toolkit', ],
'path_keywords': ['run_from_*_zip', 'sources/*mpi*']
},
'mcu': {
'need_nexus': False,
'name_keywords': ['mcu', ],
'path_keywords': ['run_from_*_zip']
},
'auto': {
'need_nexus': True,
'name_keywords': ['npu', 'toolkit', 'nnrt', 'nnae', 'kernels', 'toolbox', 'faultdiag', 'mcu'],
'path_keywords': ['sources', 'pylibs', 'run_from_*_zip', 'FaultDiag'],
},
'dl': {
'need_nexus': False,
'name_keywords': ['npu', ],
'path_keywords': ['sources', 'run_from_*_zip', 'mindxdl/dlPackage', 'mindxdl/baseImages']
},
'mindspore': {
'need_nexus': True,
'name_keywords': [],
'path_keywords': ['sources', 'pylibs']
},
'mindspore_scene': {
'need_nexus': True,
'name_keywords': ['npu', 'toolkit', 'kernels', 'ops'],
'path_keywords': ['sources', 'pylibs', 'run_from_*_zip']
},
'offline_dev': {
'need_nexus': True,
'name_keywords': ['npu', 'toolkit', 'kernels', 'ops'],
'path_keywords': ['sources', 'pylibs', 'run_from_*_zip']
},
'offline_run': {
'need_nexus': True,
'name_keywords': ['npu', 'nnrt', 'toolkit'],
'path_keywords': ['sources', 'pylibs', 'run_from_*_zip']
},
'pytorch_dev': {
'need_nexus': True,
'name_keywords': ['npu', 'toolkit', 'kernels', 'ops'],
'path_keywords': ['sources', 'pylibs', 'run_from_*_zip']
},
'pytorch_run': {
'need_nexus': True,
'name_keywords': ['npu', 'nnae', "toolkit", 'kernels', 'ops'],
'path_keywords': ['sources', 'pylibs', 'run_from_*_zip']
},
'tensorflow_dev': {
'need_nexus': True,
'name_keywords': ['npu', 'toolkit', 'kernels', 'ops'],
'path_keywords': ['sources', 'pylibs', 'run_from_*_zip']
},
'tensorflow_run': {
'need_nexus': True,
'name_keywords': ['npu', 'nnae', 'kernels', 'ops'],
'path_keywords': ['sources', 'pylibs', 'run_from_*_zip']
},
'docker_images': {
'need_nexus': False,
'name_keywords': [],
'path_keywords': ['docker_images']
},
'sys_pkg': {
'need_nexus': True,
'name_keywords': [],
'path_keywords': ['sources']
},
'gcc': {
'need_nexus': False,
'name_keywords': [],
'path_keywords': ['sources']
},
'python': {
'need_nexus': False,
'name_keywords': [],
'path_keywords': ['sources', 'pylibs']
},
'pytorch': {
'need_nexus': False,
'name_keywords': [],
'path_keywords': ['sources', 'pylibs']
},
'tensorflow': {
'need_nexus': False,
'name_keywords': [],
'path_keywords': ['sources', 'pylibs']
},
'ascend-device-plugin': {
'need_nexus': False,
'name_keywords': [],
'path_keywords': ['mindxdl/dlPackage', 'mindxdl/baseImages'],
},
'ascend-docker-runtime': {
'need_nexus': False,
'name_keywords': [],
'path_keywords': ['mindxdl/dlPackage', 'mindxdl/baseImages'],
},
'ascend-operator': {
'need_nexus': False,
'name_keywords': [],
'path_keywords': ['mindxdl/dlPackage', 'mindxdl/baseImages'],
},
'clusterd': {
'need_nexus': False,
'name_keywords': [],
'path_keywords': ['mindxdl/dlPackage', 'mindxdl/baseImages'],
},
'noded': {
'need_nexus': False,
'name_keywords': [],
'path_keywords': ['mindxdl/dlPackage', 'mindxdl/baseImages'],
},
'npu-exporter': {
'need_nexus': False,
'name_keywords': [],
'path_keywords': ['mindxdl/dlPackage', 'mindxdl/baseImages'],
},
'resilience-controller': {
'need_nexus': False,
'name_keywords': [],
'path_keywords': ['mindxdl/dlPackage', 'mindxdl/baseImages'],
},
'volcano': {
'need_nexus': False,
'name_keywords': [],
'path_keywords': ['mindxdl/dlPackage', 'mindxdl/baseImages'],
},
'fault-diag': {
'need_nexus': False,
'name_keywords': ['faultdiag'],
'path_keywords': ['FaultDiag', 'pylibs'],
},
'mindie_image': {
'need_nexus': False,
'name_keywords': ['mindie-image'],
'path_keywords': ['MindIE-image', ],
},
'deepseek_pd': {
'need_nexus': False,
'name_keywords': ['mindie', 'mindie-image'],
'path_keywords': ['MindIE-image', 'pylibs', 'mindie'],
},
'deepseek_cntr': {
'need_nexus': False,
'name_keywords': ['mindie', 'mindie-image'],
'path_keywords': ['MindIE-image', 'mindie'],
},
}
pkg_run_paths = (
[('Ascend-cann', 'Ascend-mindx', 'Atlas-A3-cann'), 'run_from_cann_zip'],
[('Ascend-hdk-310p-npu-soc', 'Ascend-hdk-310p-npu-driver-soc',
'Ascend-hdk-310p-npu-firmware-soc'), 'run_from_soc_zip'],
[('A300i-pro', 'Atlas-300i-pro'), 'run_from_a300i_zip'],
[('A300v-pro', 'Atlas-300v-pro'), 'run_from_a300v_pro_zip'],
[('Atlas-300v',), 'run_from_a300v_zip'],
[('A300i-duo', 'Atlas-300i-duo'), 'run_from_a300iduo_zip'],
[('Ascend-hdk-310p', 'Ascend310P'), 'run_from_a310p_zip'],
[('Ascend-hdk-310', 'Ascend310', 'A300-3000', 'A300-3010', 'Atlas-200'), 'run_from_infer_zip'],
[('Ascend-hdk-910b', 'Ascend910B-hdk'), 'run_from_910b_zip'],
[('A300t-9000', 'A800-9000', 'A800-9010', 'A900-9000'), 'run_from_train_zip'],
[('Atlas-300t-pro',), 'run_from_train_pro_zip'],
[('Ascend-hdk-910-npu', 'Ascend910'), 'run_from_910_zip'],
[('Ascend-hdk-310b',), 'run_from_310b_zip'],
[('Atlas-A3-hdk-npu', 'Atlas-A3-hdk-mcu'), 'run_from_910_93_zip'],
[('Atlas-A5-hdk-npu',), 'run_from_910_95_zip'],
)
def get_keywords(tag, key):
return tags_map.get(tag, {}).get(key, [])
def filter_pkg(pkg_file, tags):
pkg_name = os.path.basename(pkg_file)
for tag in tags:
for keyword in get_keywords(tag, 'name_keywords'):
if keyword in pkg_name:
return True
return False
def search_paths(base_dir, tags):
paths = set()
for tag in tags:
for dir_type in get_keywords(tag, 'path_keywords'):
for dir_path in glob.glob(os.path.join(base_dir, dir_type)):
paths.add(dir_path)
return paths
def get_run_dir(base_dir, filename):
basename = os.path.basename(filename)
for (prefix, dir_name) in pkg_run_paths:
if basename.startswith(prefix):
run_dir = os.path.join(base_dir, dir_name)
return run_dir
def need_nexus(tags):
for tag in tags:
if tags_map.get(tag, {}).get('need_nexus'):
return True
return False