【2024CANN训练营第二季】Ascend C概述

什么是算子

算子在神经网络中的定义

算子对应网络中层或者节点的计算逻辑
image.png

算子的数学含义

算子在数学中的定义:
一个函数空间到函数空间上的映射O:X->X;
广义:
对任何函数进行某一项操作都可以认为是一个算子。比如微分算子,不定积分算子等。
常见算子举例:tanh、ReLU、sigmoid等。
image.png

算子的基本概念

算子名称

算子的名称:用于标志网络中的某个算子,同一个网络中算子的名称需要保持唯一。

算子类型

网络中每一个算子根据算子类型进行算子实现的匹配,相同类型的算子的实现逻辑相同。在一个网络中同一类型的算子可能存在多个。

数据容器(Tensor)

算子在网络执行时,还需要一个重要的输入:数据,算子执行完后,也会有对应的数据输出,这种承载算子数据的容器定义为:张量(Tensor)

张量 Tensor

张量(Tensor)是存储算子输入数据与输出数据的容器,而张量描述符(TensorDesc)是对输入数据与输出数据的描述,张亮描述符的数据结构包括以下属性:

  • 名称:用于对Tensor进行索引,不同Tensor的name需要保持唯一
  • 形状:Tensor的形状,比如(10,)或者(1024,1024)或者(2,3,4)等。形式(i1,i2,…in),其中i1到in均为正整数。
  • 数据类型:指定Tensor对象的数据类型。例如:float16,float32.int8,int16,int32,unint8,unit16,bool等。不同计算操作支持的数据类型也不同。
  • 数据排布格式:数据的物理排布格式,定义了解数据的维度

什么是AscendC算子

基本概念

Ascend C算子是CANN针对算子开发场景推出的编程语言,通过多层接口抽象、自动并行计算、孪生调试等关键技术,极大提高算子开发效率,助力AI开发者低成本完成算子开发和模型调优部署。使用Ascend C编程语言开发的算子称之为Ascend C算子。

Ascend C自定义算子的优势

  • C/C++原始编程,最大化匹配用户的开发习惯
  • 编程模型屏蔽硬件差异,编程范式提高开发效率
  • 多层级API封装,从简单到灵活,兼顾易用与高效
  • 孪生调试,CPU侧模拟NPU侧的行为,可优化在CPU侧调试

什么场景需要开发自定义算子

一般情况下,无需自己开发算子,需要自己开发自定义算子的场景有以下:

  • 推理场景下,将第三方框架模型使用ATC工具转换为适配Ascend平台的离线模型时遇到不支持的算子。
  • 推理场景下,应用程序中的某些逻辑涉及到数学运算,开发者可以将这些操作通过自定义算子的方式进行实现,然后在APP中对算子进行调用,从而利用Ascend进行加速
  • 训练场景下,将第三方框架的网络训练脚本迁移到Ascend平台遇到了不支持算子
  • 网络调优时,发现某算子性能较低,想重新开发一个高性能算子替换性能较低的算子。

Ascend 介绍

Ascend AI处理器介绍

19721bb5263c6633d02fc0aaa84e777a_20190823040613731.jpg

昇腾AI处理器芯片的逻辑结构

  • 芯片系统控制处理器(Control CPU)
  • 面向计算密集型任务的AI计算核心(AI Core)
  • 面向非矩阵计算任务的AI处理器(AI CPU)
  • 层次化的片上系统缓存/缓冲区
  • 数字视觉与处理模块(DVPP:Digital Vision Pre-Processing)
  • I/O接口
    image.png

基于Ascend处理器的产品形态

image.png
image.png

Atals开发者套件

华为Atlas 200I DK A2开发者套件

  • 以Ascend310系列AI处理器为核心的一个开发者板产品,包括1个AI Core,4个TAISHAN处理器核(最大主频1.8GHz)
  • 将昇腾AI处理器的核心功能通过该板上的外围接口开放出来,方便用户快速便捷接入并使用昇腾AI处理器强大的处理能力
    image.png

昇腾CANN:向下使能处理器并行加速,向上使能高效开发

image.png

AscendCL:昇腾计算语言开放接口

image.png

AICore

AI Core是昇腾AI处理器的计算核心,采用华为自研的达芬奇架构,通常也被叫做DaVinci Core
image.png
达芬奇架构的主要部分:

  • 计算单元:包含三种基础计算资源(矩阵计算单元、向量计算单元、标量计算单元)
  • 存储系统:AI Core的片上存储单元和相应的数据通路构成了存储系统
  • 控制单元:整个计算过程提供了指令控制,相当于AI Core的司令部,负责整个AI Core的运行。

AI Core:计算单元-矩阵计算单元

image.png

计算架构

使用Ascend C编程语言开发的算子运行的AI Core上,AI Core是昇腾AI处理器中的计算核心,一个AI处理器内部有多个AI Core,AI Core中包含计算单元、存储单元、搬运单元等核心组件

计算单元:

  • Scalar计算单元 :执行地址计算、循环控制等标量计算工作,并把向量计算、矩阵计算、数据搬运、同步指令发射给对应单元执行
  • Cube计算单元:负责执行矩阵运算
  • Vector计算单元:负责执行向量计算

存储单元:
AI Core的内部存储,统称为Local Memory
与此相对应,AI Core的外部存储称之为Global Memory

搬运单元:
负责在Gloabl Memory和Local Memory之间搬运数据,包含搬运单元MTE2(Memory Transfer Engine:数据搬入单元),MTE3(数据搬出单元)

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/450424.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis IO多路复用机制

目录 一、五种 I/O 模型 1.阻塞IO(Blocking IO) 2.非阻塞IO(Nonblocking IO) 3.IO多路复用(IO Multiplexing) 通知的方式 select模式 poll模式 epoll模式 4.信号驱动IO(Signal Driven …

SD-WAN技术的特点和应用场景

近年来,SD-WAN逐渐成为企业网络建设中的热门技术。那么,SD-WAN到底是什么呢?简而言之,SD-WAN(软件定义广域网)结合了软件定义网络(SDN)与广域网优化技术,为企业提供了更加…

一文读懂:Session、Cookie与Token

我是小白刚刚接触JWT,看了b站一些相关视频、查了中国知网和csdn其他人的文章之后,总结出了这篇文章。写文章的初心是为了检验自己是否透彻了解了知识点以及之后复习。如果标题党了,斯米马赛请原谅!!!欢迎大…

企业AI助理与知识库管理系统:重塑企业知识管理的新篇章

在数字化转型的浪潮中,企业正面临着前所未有的机遇与挑战。如何高效管理、快速获取并利用企业内部的知识资源,成为了提升企业竞争力的关键。近年来,企业AI助理与知识库管理系统的结合,正逐步成为企业知识管理的新趋势,…

【C语言】循环嵌套:乘法表

循环嵌套&#xff0c;外层循环执行一次&#xff0c;内层循环执行i次。分别控制 在循环的过程中加一层循环。 多层循环属于循环嵌套、嵌套循环 #include <stdio.h> #include <math.h> /* 功能&#xff1a;循环嵌套 乘法表 时间&#xff1a;2024年10月 地点&#xf…

老机MicroServer Gen8再玩 OCP万兆光口+IT直通

手上有一台放了很久的GEN8微型服务器&#xff0c;放了很多年&#xff0c;具体什么时候买的我居然已经记不清了 只记得开始装修的时候搬家出去就没用了&#xff0c;结果搬出去有了第1个孩子&#xff0c;孩子小的时候也没时间折腾&#xff0c;等孩子大一点的时候&#xff0c;又有…

使用Python PyQt5 vscode 制作流水灯或者交通灯

需要用到 Python PyQt5 vscode&#xff0c;其他的各模块引用在代码里面有&#xff0c;自己找找就行 制作流水灯代码 import sys from PyQt5.QtCore import (QEvent, QTimer, Qt,QPoint) from PyQt5.QtWidgets import (QApplication, QMenu,QMainWindow) from PyQt5.QtGui imp…

限时设计ui

ctrl-------放大缩小 空格-----画面移动 alt------复制 页面<画板<图层 添加交互事件 原型 点击蓝色的圆&#xff0c;从1跳转到2 点击绿色的圆&#xff0c;从2跳转到1

如何实现安川MP3300运动控制器与西门子1200系列PLC进行ModbusTCP通讯

在工业自动化中&#xff0c;实现不同品牌、不同型号设备之间的通讯是确保生产流程顺畅、高效运行的关键。本文详细介绍了安川MP3300运动控制器与西门子1200系列PLC进行ModbusTCP通讯的具体方法。 一&#xff0e;软硬件需求 1.一台安川MP3300CPU301&#xff0c;其IP地址是192.…

类和对象的认识

类&#xff1a;类是用来描述一个对象的&#xff0c;在java中万物皆对象&#xff0c;通过对类的抽象&#xff0c;类有哪些属性和行为&#xff0c;将这些抽象出来就是类。比如&#xff1a;狗&#xff0c;有名字&#xff0c;年龄&#xff0c;要吃饭的行为等等&#xff0c;将这些动…

ssh连接慢的问题或zookeeper远程连接服务超时

问题原因&#xff1a; 在SSH登录过程中&#xff0c;服务器会通过反向DNS查找客户端的主机名&#xff0c;然后与登录的IP地址进行匹配&#xff0c;以验证登录的合法性。如果客户端的IP没有域名或DNS服务器响应缓慢&#xff0c;这可能导致SSH登录过慢。为了解决这个问题&#xf…

【无处躲藏的图片】和【时隐时现的图片】

文章目录 一、效果二、源码1. pom依赖2. 核心源码13. 核心源码2 一、效果 二、源码 1. pom依赖 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.9</version></dependency…

vue3基础入门以及常用api使用

setup setup 的返回值可以是函数 data(){ return { a:111, c:this.name } }, setup(){ let name 1111 return ()> 哈哈哈 }//结果页面就是会显示 哈哈哈setup和 OptionsAPI关系 data能和setup能同时存在&#xff0c;但不建议 data能读到setup里边的数据 setup是最早的生命…

【二刷hot-100】day2

目录 1.无重复字符的最长子串 2.找到字符串中所有字母异位词 3.和为 K 的子数组 4.滑动窗口最大值 1.无重复字符的最长子串 class Solution {public int lengthOfLongestSubstring(String s) {Map<Character,Integer> dict new HashMap<>();int ret0;int i-1;for…

使用 GoZero 框架实现一个简单的course课程class系统

使用 GoZero 框架实现一个简单的课程增删改查&#xff08;CRUD&#xff09;功能需要进行以下步骤&#xff1a;设置 GoZero 项目、定义数据模型、创建相应的 API 接口以及实现 CRUD 操作。下面是一个示例代码&#xff0c;包括基本的课程管理功能。 ### 1. 安装 GoZero 首先&…

基于SSM党务政务服务热线管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;部门管理&#xff0c;办事信息管理&#xff0c;信息记录管理&#xff0c;系统管理 前台账号功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;部门&#xff0c;信息…

十月编程语言排行榜~

前言&#xff1a;TIOBE编程语言排行榜通过分析全球开发者的活动、代码搜索和问答社区的流量&#xff0c;提供了编程语言受欢迎度的动态图景。该指数是技术趋势的风向标&#xff0c;揭示了哪些编程语言在技术领域占据主导地位&#xff0c;哪些语言正在快速崛起或逐渐衰退。 ✨✨…

骨传导耳机哪款比较值得入手?五款热门机型实测内容分享!

在贴吧、论坛、知乎等社区网站上&#xff0c;大家可能经常看到用户吐槽、讨论骨传导耳机哪种好等话题。很多人反映&#xff0c;由于使用了不适合的骨传导耳机&#xff0c;出现了听力不适、佩戴不稳等诸多问题。作为一名有着丰富经验的数码测评师&#xff0c;我对此问题非常关注…

考研数据结构——C语言实现二叉树前,中,后序非递归遍历

定义二叉树节点&#xff08;BTree&#xff09;&#xff1a; ElemType value&#xff1a;存储节点的值。struct BTree* LeftChild&#xff1a;指向左子节点的指针。struct BTree* RightChild&#xff1a;指向右子节点的指针。 节点访问函数&#xff08;visit&#xff09;&#x…

Linux SSH无密码使用私钥远程登录连接详细配置流程

文章目录 前言1. Linux 生成SSH秘钥对2. 修改SSH服务配置文件3. 客户端秘钥文件设置4. 本地SSH私钥连接测试5. Linux安装Cpolar工具6. 配置SSHTCP公网地址7. 远程SSH私钥连接测试8. 固定SSH公网地址9. 固定SSH地址测试 前言 本文将详细介绍如何将Linux SSH服务与cpolar相结合&…