请根据pr上库后关闭此issue


/assign @stevenaw0


2026.7.7 领域评审
1、子菁:另外一个思路:HDK要提供特性枚举,aclrt做一个封装,pta判断cann版本号 > xx.x.x,再调用aclrt接口。 aclrt屏蔽底层差异。
2、aclrtMallocHostWithCfg + ACL_RT_MEM_ATTR_VA_FLAG 如果不支持,runtime有error日志,drv没有error日志?如果没有error日志,可以直接先调用,返回NOT_SUPPORT后,走第二条路线。


最终方案:
pta先调用一次aclrtMallocHostWithCfg + ACL_RT_MEM_ATTR_VA_FLAG,返回not_support 就走第二条路线
为了避免产生error日志,pta需要判断cann版本号 > xx.xx.x,再这样做。否则认为A5不支持。
runtime: not_support错误码不报error日志,改为warning.


2026.7.8 评审
入参枚举定义:DEVICE_FORM_FACTOR
#define ACL_DEVICE_FORM_FACTOR_POD 0 // pod form factor
#define ACL_DEVICE_FORM_FACTOR_A_K 1 // A.K (server-like) form factor
#define ACL_DEVICE_FORM_FACTOR_A_X 2 // A.X (server-like) form factor
#define ACL_DEVICE_FORM_FACTOR_PCIE_CARD 3 // PCIe card form factor
#define ACL_DEVICE_FORM_FACTOR_EVB 4 // evaluation board 这个不用。
#define ACL_DEVICE_FORM_FACTOR_UNDEFINED 4 // 未定义。 跟驱动,讨论下 出参 ,


补充驱动在A3上该接口的行为, 在 A3上,halGetDeviceInfo(devId, MODULE_TYPE_SYSTEM, INFO_TYPE_PRODUCT_TYPE, &value) 会直接返回 DRV_ERROR_NOT_SUPPORT,不会对value赋值,不会打印error日志
关键分支受宏控制 — drv_get_system_info 对 INFO_TYPE_PRODUCT_TYPE 用 #ifdef CFG_FEATURE_PRODUCT_TYPE 包裹:
case INFO_TYPE_PRODUCT_TYPE:
#ifdef CFG_FEATURE_PRODUCT_TYPE
return drv_get_info_from_dev_info(devId, info_type, value);
#else
return DRV_ERROR_NOT_SUPPORT;
#endif


【需求】aclrtGetDeviceInfo 新增产品形态(Product Type)查询能力
背景
torch_npu 中
AclrtMallocHostWithCfgExist()用于判定 HDK 特性(aclrtMallocHostWithCfg+ACL_RT_MEM_ATTR_VA_FLAG)是否可用。该特性在 Ascend950(A5)上是支持的,但最低驱动版本随产品形态不同而不同:当前 torch_npu 仅通过
c10_npu::GetSocVersion()判断芯片代际,而 soc version 字符串(来自aclrtGetSocName,源于芯片 HSM 烧录的soc_ver)只标识芯片型号,不含拓扑/产品形态维度。同一Ascend950在标卡、Pod、Server 上取值完全相同,无法区分。因此 torch_npu 对 A5 保守地一刀切返回
false(GetSocVersion() < Ascend950),导致即便驱动版本已满足对应形态的门槛,A5 上 HDK 特性仍被禁用,影响两个用户接口:empty_with_swapped_memory:丢失主机侧直接指针访问(零拷贝 SVM 共享语义)pin_memory+pinned_mem_register:pinned_mem_register配置被强制降级为False,pin 内存无设备映射视图现状分析
driver 层已具备区分产品形态的能力:
INFO_TYPE_PRODUCT_TYPE(ascend_hal_base.h:413)经halGetDeviceInfo(devId, MODULE_TYPE_SYSTEM, INFO_TYPE_PRODUCT_TYPE, &value)返回产品形态,值类型为enum hal_product_type(ascend_hal_base.h:1104):HAL_PRODUCT_TYPE_PODHAL_PRODUCT_TYPE_A_KHAL_PRODUCT_TYPE_A_XHAL_PRODUCT_TYPE_PCIE_CARDHAL_PRODUCT_TYPE_EVBA5 构建已开启
CFG_FEATURE_PRODUCT_TYPE(src/ascend_hal/dms/drv_devmng/feature/host/ascend950.cmake),驱动侧无需改动。driver 内核态
dev_info->product_type由soc_resmng_dev_get_key_value(dev_id, "PRODUCT_TYPE", ...)填充,经drvGetDevInfoioctl 透传到用户态。但该信息未通过 ACL 公开接口暴露:
aclrtGetDeviceInfo支持的aclrtDevAttr中没有PRODUCT_TYPE对应项,torch_npu 无法查询。期望方案
参考
ACL_DEV_ATTR_HD_CONNECT_TYPE(commit11838aeb)的既有先例,在 ACL/runtime 层新增产品形态查询能力。1. runtime 侧
pkg_inc/runtime/runtime/rts/rts_device.h——rtDevAttr枚举新增:RT_DEV_ATTR_HD_CONNECT_TYPE = 408U, // host-device connect type RT_DEV_ATTR_PRODUCT_TYPE = 409U, // product type (pod/server/pcie card) // 新增src/runtime/core/src/api_impl/api_impl.cc——GetDeviceInfoByAttr的devInfoMap新增映射(与HD_CONNECT_TYPE同模式,原样透传 driver 值,值一致无需转换):{RT_DEV_ATTR_HD_CONNECT_TYPE, {MODULE_TYPE_SYSTEM, INFO_TYPE_HD_CONNECT_TYPE}}, {RT_DEV_ATTR_PRODUCT_TYPE, {MODULE_TYPE_SYSTEM, INFO_TYPE_PRODUCT_TYPE}}, // 新增2. ACL 侧
include/external/acl/acl_rt.h——aclrtDevAttr枚举新增 attr,并新增值宏(与ACL_HOST_DEVICE_CONNECT_TYPE_*写法一致,使用#define而非typedef enum):ACL_DEV_ATTR_HD_CONNECT_TYPE = 408U, // host-device connect type ACL_DEV_ATTR_PRODUCT_TYPE = 409U, // product type (pod/server/pcie card) // 新增 // Product form factor returned by aclrtGetDeviceInfo with ACL_DEV_ATTR_PRODUCT_TYPE. #define ACL_PRODUCT_TYPE_POD 0 // pod form factor #define ACL_PRODUCT_TYPE_A_K 1 // A.K (server-like) form factor #define ACL_PRODUCT_TYPE_A_X 2 // A.X (server-like) form factor #define ACL_PRODUCT_TYPE_PCIE_CARD 3 // PCIe card form factor #define ACL_PRODUCT_TYPE_EVB 4 // evaluation board3. driver 侧
无需改动。
INFO_TYPE_PRODUCT_TYPE、enum hal_product_type、CFG_FEATURE_PRODUCT_TYPE(A5 构建已开启)均已就绪。影响范围
rts_device.h+1 行,api_impl.cc+1 行acl_rt.h+1 attr + 5 值宏