昇腾Ascend C算子性能优化

打印 上一主题 下一主题

主题 1046|帖子 1046|积分 3138

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
流水优化、搬运优化、内存优化、API使用优化以及Tiling优化

流水优化



  • AI Core内流水并行
  • double buffer将待处理的数据一分为二,进步Vector单元利用效率
  • Iterate异步接口,克制AIC/AIV同步依赖
1、AI Core内流水并行

AI Core内部实行单元异步并行地实行吸收到的指令。每一个实行单元都可以看成是流水线上的节点,通过流水线并行的方式来进步计算效率。从输入数据到输出数据需要经过3个阶段任务的处理,多个实行单元并行处理,每个实行单元只会专注于一个任务的处理,会处理全部的数据分片。
基于Ascend C编程范式举行代码编写,实际上就是应用这种流水线式的编程范式,把算子核内的处理程序,分成多个流水任务,通过队列(Queue)完成任务间通信和同步,并通过同一的资源管理模块(Pipe)来同一管理内存、变乱等资源。
Ascend C流水编程范式将单核算子处理逻辑划分为多个流水任务,CopyIn搬入,Compute计算,CopyOut搬出,基于该编程范式,可快速搭建算子实现的代码框架。
以Vector编程范式为例:
CopyIn负责搬入操作:将输入数据从Global Memory搬运到Local Memory(VECIN用于表达矢量计算搬入数据的存放位置),完成搬运后实行入队列操作;
Compute负责矢量指令计算操作:完成队列出队后,从Local Memory获取数据并计算,计算完成后实行入队操作;
CopyOut负责搬出操作:完成队列出队后,将计算效果从Local Memory(VECOUT用于表达矢量计算搬出数据的存放位置)搬运到GM。
伪代码
  1. TPipe pipe;   //创建全局的资源管理   
  2. TQue<VecIn, 1
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莫张周刘王

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表