CANN/asc-devkit异构系统编程模型

发布时间:2026/7/18 10:15:58
CANN/asc-devkit异构系统编程模型 异构系统【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit一个基于昇腾处理器的异构系统通常包含CPU与昇腾NPU。其中CPU及其内存称为Host与Host MemoryNPU及其内存称为Device与Device Memory。基于昇腾的应用程序通常包含两部分一部分运行在Host CPU上使用标准C/C编程另一部分运行在NPU上使用Ascend C编程语言编写。运行在NPU上的代码称为核函数Kernel需由Host代码调用执行。此外Host端需要通过CANN Runtime API完成以下操作在Host Memory与Device Memory之间拷贝数据、启动NPU上的核函数、等待核函数执行完成等。Host代码与核函数可编写在同一个 .asc后缀文件中由毕昇编译器完成异构编译。为提升计算效率NPU上通常有多个计算核并发执行每个核一般处理不同的数据。每个NPU的计算核称为AI CoreAI处理器的计算核心。传统上AI Core遵循SIMDSingle Instruction Multiple Data单指令多数据流模型通过一条指令同时操作多个数据实现并行计算。从Ascend 950PR/Ascend 950DT架构开始作为SIMD的补充主要用于辅助离散类矢量算子开发AI Core也支持SIMTSingle Instruction Multiple Thread单指令多线程模型通过一条指令驱动多个线程并行执行。下图演示了运行在Host CPU上的代码通过调用CANN Runtime API将核函数下发到AI Core的流程。由于Host Memory与Device Memory拥有独立的内存空间需要显式调用Runtime API进行数据传输。典型流程为Host代码先将输入数据从Host Memory传输到Device Memory随后启动Device侧核函数并等待其执行完成最后将计算结果从Device Memory拷贝回Host Memory。图1Kernel调度示意图[!NOTE]说明 关于Task/Stream等Runtime运行时管理的详细介绍请参考《Runtime运行时API》。【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考