news 2026/7/16 11:33:30

CANN/asc-devkit Vector逻辑架构详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit Vector逻辑架构详解

Vector逻辑架构

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

Vector逻辑架构说明

Vector计算单元专用于执行向量计算。如下图所示,高亮部分展示了Vector计算单元及其关联的存储单元。

  • 针对Atlas A3 训练系列产品/Atlas A3 推理系列产品、Atlas A2 训练系列产品/Atlas A2 推理系列产品,Vector逻辑架构如下图1所示。

    图1向量计算单元架构图

    表1向量计算单元关联的存储单元

    存储单元说明
    Unified BufferAI Core内部物理存储单元,通常用于存储向量计算的输入/输出数据。
  • 针对Ascend 950PR/Ascend 950DT,Vector逻辑架构如下图2所示。

    图2向量计算单元架构图

    表2向量计算单元关联的存储单元

    存储单元说明
    Unified BufferAI Core内部物理存储单元,通常用于存储向量计算的输入/输出数据。
    SIMD Register FileAI Core内部物理存储单元,在SIMD程序中,数据从Unified Buffer搬运到Register进行计算,产生的中间结果可以不用传回Unified Buffer,直接在寄存器计算。

Unified Buffer介绍

Unified Buffer的通用约束说明

  • Unified Buffer地址对齐约束,请参考通用地址对齐约束。
  • Unified Buffer地址重叠约束,请参考通用地址重叠约束。

Unified Buffer的内存结构与bank冲突

为了提高数据访问的效率和吞吐量,Unified Buffer采用了大小相等的内存模块(bank)结构设计。当多条读写指令同时访问Unified Buffer时,由于硬件资源的限制,这些指令不能同时执行,从而引发bank冲突。在这种情况下,指令需要排队等待资源,无法在一个指令周期内完成。

  • 针对Atlas A3 训练系列产品/Atlas A3 推理系列产品、Atlas A2 训练系列产品/Atlas A2 推理系列产品
    • Unified Buffer的内存结构

      图3Unified Buffer的内存结构图

      如图3所示,UB总大小为192KB,包含16个bank group(BG0 ~ BG15),每个bank group包含3个bank。每个bank大小为4KB,由128行组成,每行长度为32B。

      • 读写冲突:读操作和写操作同时尝试访问同一个bank。
      • 写写冲突:多个写操作同时尝试访问同一个bank group。
      • 读读冲突:多个读操作同时尝试访问同一个bank group。
    • bank冲突优化

      可参考避免bank冲突(NPU架构版本2201)。

  • 针对Ascend 950PR/Ascend 950DT
    • Unified Buffer的内存结构

      图4Unified Buffer的内存结构图

      如图4所示,UB总大小为256KB,包含8个bank group(BG0 ~ BG7),每个bank group包含2个bank。每个bank大小为16KB,由512行组成,每行长度为32B。

      • 读写冲突:读操作和写操作同时尝试访问同一个bank。
      • 写写冲突:多个写操作同时尝试访问同一个bank group。
      • 读读冲突:两个读操作同时尝试访问同一个bank,或者两个以上读操作同时尝试访问同一个bank group。
    • bank冲突优化

      可参考避免bank冲突(NPU架构版本3510)。

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/16 11:32:59

解放双手的星穹铁道智能助手:三月七小助手完整指南

解放双手的星穹铁道智能助手:三月七小助手完整指南 【免费下载链接】March7thAssistant 崩坏:星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 想象一下这样的场景:你忙碌了一整天&#…

作者头像 李华
网站建设 2026/7/16 11:32:52

CANN Ascend C AddDeqRelu API文档

AddDeqRelu 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com…

作者头像 李华
网站建设 2026/7/16 11:31:11

前端工程师的转型之路:从焦虑到AI工程师的实战分享(收藏版)

文章指出,随着AI的发展,前端工程师面临被替代的风险,建议前端工程师不要把全栈当作终点,而应将AI工程师作为职业发展方向。作者分享了从前端工程师转型为AI工程师的经验,强调“AI First”的学习方法,即遇到…

作者头像 李华
网站建设 2026/7/16 11:30:40

LabVIEW数值引用:高效数据共享与内存管理实践

1. 数值引用的本质与核心价值在LabVIEW图形化编程环境中,数值引用(Numeric Reference)是一种特殊的句柄机制,它允许开发者通过引用方式操作数值数据,而非直接传递数值本身。这种机制在大型项目开发中尤为重要&#xff…

作者头像 李华
网站建设 2026/7/16 11:30:08

Windows API函数地址获取与Hash扫描技术详解

1. 理解API函数地址获取的基本原理在Windows编程中,动态链接库(DLL)是代码共享的重要机制。当一个程序需要调用DLL中的函数时,它必须首先获取该函数的地址。传统方法是直接使用函数名称字符串,通过GetProcAddress等API获取地址。但这种明文方…

作者头像 李华
网站建设 2026/7/16 11:29:56

Linux文件权限管理与chmod/chown命令详解

1. Linux文件权限基础解析在Linux系统中,每个文件和目录都有三组权限设置,分别对应三种不同的用户身份。理解这个基础架构是掌握权限管理的关键。1.1 权限三元组结构Linux权限系统由三个基本部分组成:所有者权限(User)…

作者头像 李华