当前位置: 首页 > article >正文

昇腾Ascend C算子性能优化

流水优化、搬运优化、内存优化、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。

伪代码


TPipe pipe;   //创建全局的资源管理    
TQue<VecIn, 1

http://www.kler.cn/a/320542.html

相关文章:

  • 解决微信小程序自定义tabbar点击两次才能跳转
  • android framework ams/wms常见系统日志(main\system\events\crash,protoLog使用)
  • 抖音热门素材去哪找?优质抖音视频素材网站推荐!
  • 前端开发设计模式——责任链模式
  • 深入理解 SQL_MODE 之 ANSI_QUOTES
  • python核心语法
  • yolo自动化项目实例解析(六)自建UI(主窗口、预览窗口)
  • 鸿蒙开发(NEXT/API 12)【硬件(取消注册监听系统导航信息和指令)】车载系统
  • 博图软件项目创建
  • 百度数据科学岗社招一面
  • pytorch学习笔记二:用pytorch神经网络模型做气温预测、分类任务构建和分类网络构建、卷积神经网络原理介绍
  • VM+Ubuntu16.04硬盘扩容
  • Python类里引用其他类
  • c++ day06
  • 【深度学习】(7)--神经网络之保存最优模型
  • 自动驾驶,被逼着上市?
  • 【Python机器学习】NLP信息提取——提取人物/事物关系
  • WPS文字 分栏注意项
  • Java项目实战II基于Java+Spring Boot+MySQL的汽车销售网站(文档+源码+数据库)
  • PyTorch开源的深度学习框架
  • 2、electron vue3 怎么创建子窗口,并给子窗口路由传参
  • 【Linux系统编程】第二十二弹---操作系统核心概念:进程创建与终止机制详解
  • LInux操作系统安装Jenkins
  • MFC-基础架构
  • 实验二十:ds1302时钟实验
  • 【MYSQL】聚合查询、分组查询、联合查询