CANN/asc-devkit Vector逻辑架构详解
Vector逻辑架构【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkitVector逻辑架构说明Vector计算单元专用于执行向量计算。如下图所示高亮部分展示了Vector计算单元及其关联的存储单元。针对Atlas A3 训练系列产品/Atlas A3 推理系列产品、Atlas A2 训练系列产品/Atlas A2 推理系列产品Vector逻辑架构如下图1所示。图1向量计算单元架构图表1向量计算单元关联的存储单元存储单元说明Unified BufferAI Core内部物理存储单元通常用于存储向量计算的输入/输出数据。针对Ascend 950PR/Ascend 950DTVector逻辑架构如下图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 groupBG0 ~ BG15每个bank group包含3个bank。每个bank大小为4KB由128行组成每行长度为32B。读写冲突读操作和写操作同时尝试访问同一个bank。写写冲突多个写操作同时尝试访问同一个bank group。读读冲突多个读操作同时尝试访问同一个bank group。bank冲突优化可参考避免bank冲突NPU架构版本2201。针对Ascend 950PR/Ascend 950DTUnified Buffer的内存结构图4Unified Buffer的内存结构图如图4所示UB总大小为256KB包含8个bank groupBG0 ~ 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),仅供参考