一句话让Agent变成昇腾专家,不必再找人问了。评测入口:
(To Agent)请按这个开源仓接入昇腾图谱 https://gitcode.com/agent0/kg-tools
Ascend 950PR/950DT 的第三代 DaVinci 核改变了 Matmul 编程模型:A/B 矩阵可以 UB 为输入位置直接参与矩阵乘、Cube 与 Vector 之间有核内直连通路、计算结果可留在 LocalTensor 供 Vector 消费。落到 Ascend C API 层面,就是 MatmulType 的 TPosition 取值扩展与 CV 融合范式。
TPosition:从"一切走 GM"到 UB 直达
Matmul高阶API 通过 MatmulType<TPosition, CubeFormat, TYPE> 描述 A/B/C/Bias 四个矩阵。在 950PR/950DT 上各矩阵支持的内存逻辑位置为:
| 矩阵 | 950PR/950DT 可选 TPosition | 说明 |
|---|---|---|
| A / B / Bias | GM、VECOUT 、TSCM | 设为 VECOUT 或 TSCM 时,对应矩阵用于单核计算的数据必须全部在 UB 或 L1 Buffer 上 |
| C | GM、VECIN | VECIN 即输出到 UB 侧供后续 Vector 计算消费 |
VECOUT 把"上游 Vector 算子的输出"直接作为 Matmul 输入,跳过 GM 中转;TSCM 用于 L1 数据来源场景(第 7 个模板参数 SRCPOS 指定来源,仅 950 支持,可设 GM 或 VECOUT)。官方提供 matmul_vecout、matmul_tscm 等配套样例。
两个必须记住的约束:A/B/Bias 设为 TSCM 时 Format 仅支持 NZ;C 设为 VECIN 且 Format 为 ND 时要求尾轴 32 字节对齐(half 下 N 需为 16 的倍数)。
输出 LocalTensor:950 的专属能力
A2/A3 获取矩阵计算结果只支持 IterateAll 输出到 GlobalTensor;950PR/950DT 支持输出到 GlobalTensor 和 LocalTensor 两种。输出到 LocalTensor 时默认实现策略与 SplitM 模板策略相同,仅支持 float 类型、仅支持 Norm 模板。这正是"Matmul 结果直接进 UB 给 Vector 用"的 API 侧入口。
CV 直通通路的硬件底座
API 能力背后的硬件变化:第三代 DaVinciCore 增加核内 CV 直连高速通路,Cube 与 Vector 通过直连通道无缝流转数据,提升 Cube-Vector 融合算子性能(如 FA 类任务);Vector FP16/FP32 算力翻倍,Cube:Vector 算力配比 8:1,L0C Buffer 增至 256KB、支持 256×256 tile 块。配套的 enableMixDualMaster(双主模式)让 AIC/AIV 独立运行代码、不依赖消息驱动,要求 AIC:AIV 为 1:1(或 1:2 且 A/B 同开 IBSHARE),结果只支持 IterateAll 输出到 GlobalTensor 或 LocalTensor。
落地建议
- 融合算子先评估 A/B 走 VECOUT 的收益:省一次 GM 落盘 + 一次 GM 读回;
- 需要 Cube 结果接 Vector epilogue 时,优先尝试 C 输出 LocalTensor(float/Norm 模板约束内);
- 注意 MxMatmul 场景下多数 MatmulConfig 参数(enUnitFlag 之外的多项开关)在 950 上不受支持,融合范式参数要以文档逐项核对。
昇腾知识图谱如何检索示例
- 检索主题: Ascend950 Matmul 新范式 featureMatmul UB 输入 + CV 直通 + 输出 LocalTensor
- 检索关键词: "AscendC Ascend950 CV通信 SSBUF Matmul UB LocalTensor output", "MatmulClient featureMatmul 950 UB输入 CV直通", "TPosition GM VECOUT TSCM VECIN Matmul 内存位置"
- 内容节点: "ascdevkit_docs_zh_api_simdapi_advapi_cubecompute_matmulkernel_matmulusage_matmul高阶api", "weixinascendcann_77cannnext系列干货面向ascend950的架构详解_cube_vector融合通路", "pyptogym_cannbotskills_ops_pyptoproopdevelop_references_cvmatmuldirectbuffering_ub_direct", "ascdevkit_docs_zh_api_simdapi_advapi_cubecompute_matmulkernel_getmdlconfig_ascendc_matmul"
- 召回情况: top1 "CV matmul direct handoff and rotating buffers" score 0.9292(MatmulClient 检索路径);架构详解 0.8946,Matmul 使用说明 0.9146,多路检索互补覆盖 API 与硬件两侧