【AscendC算子开发】笔记1 算子开发哲学

重看这门课,有很多内容的认识更深了,做一些记录。

为什么不能将网络节点融合

这个问题关联到另一个问题:为什么我们需要激活函数?
使用线性的神经元堆叠得到的方程最后也是线性方程,无法表征非线性的信息,但生活中很多信息是非线性的。因此需要通过激活函数将一个线性关系变为非线性关系,多层非线性的网络堆叠可以拟合更复杂的非线性关系。
因此由于激活函数的存在,无法将各层的网络结点进行融合。

如何快速了解一个模型的计算图

Tensorflow可以通过tensorboard展现,mindspore可以通过mind slight展现。

算子运行

算子运行有很多种方式,其中较为简单的是KernelLaunch的方式。
在这里插入图片描述

算子开发圣经

在这里插入图片描述

AscendC处理器的结构

在这里插入图片描述
可以看到,处理器本质上是一套异构计算系统。

为什么需要CopyIn和CopyOut操作

昇腾AI处理器的逻辑见上图,可以看到,片上层次化存储和AICore还有距离,因此需要将数据拷贝到AI Core中,可以理解为从内存拷贝到寄存器。

什么是孪生调试

在CPU侧可以模拟NPU侧的效果,进行算子的开发和调试。

算子开发

在这里插入图片描述
kernel函数的签名必须以void作为返回值类型,在kernel中需要返回的值,通过形参指针的方式进行传递。
在这里插入图片描述
也提供了上述的宏来遍历参数定义。
在这里插入图片描述

aclrt是什么

AscendCL是在算子上层的API,Compute Language用于封装算子的调用,将API开放给上层的深度学习框架。
因此在调用算子的main.cpp文件中会有很多aclrt的命令。aclrt指的就是AsendCL runtime。

昇腾社区文件说明

在这里插入图片描述

算子CPU运行命令

bash run.sh -r cpu -v Ascend310P1

为什么需要数据管理,以及AscendC中如何进行数据的同步和通信

在这里插入图片描述
为了更大限度的提高并行度,在系统的同一时间既有数据搬入、也有计算、也有数据搬出(大多数情况下,除了开始和结尾的几个小的时间片)。那么这些不同的数据之间就有了同步的要求,否则的话对于并行的任务无法正确的进行计算。
AscendC中使用到一个Queue队列来完成任务之间的数据通信和同步,使用不同的逻辑任务来确保AI core能够正确的操作数据。
在这里插入图片描述
在上面这张图中可以更清晰的看到,队列就像一个生产者-消费者模型,通过这个队列就完美的解决了并行任务的数据依赖问题。

Host侧算子开发

在这里插入图片描述
具体的各个过程看下图:
在这里插入图片描述

如何定义Tiling

在这里插入图片描述

标准流程和快速流程的区别

前者是自定义算子FrameworkLaunch模式,后者是快速流程的KernelLaunch模式。
类似于自己写代码和写库代码的区别,自己写代码就会写调用和测试,写库代码的话就不需要这样。

生成工程框架

在这里插入图片描述
可以通过上述工具生成标准算子工程框架。

不同的编译方式

在这里插入图片描述

高维切分

在这里插入图片描述
一个repeat可以取256B的数据,repeat times控制迭代的次数。
block_stride控制block间的stride值。
在这里插入图片描述
在这里插入图片描述
上面这段在说啥呢? 其实说的就是计算的API,比如最简单的四则运算,在实现复杂的算子时,可能需要使用到这些小算子的结合,在结合过程中,需要灵活的取数据和计算方式,因此需要提供上述的几个参数。

内存管理

TQue有两个逻辑位置:VECIN,VECOUT
TBuf有一个逻辑位置:VECCALC

高阶API

在这里插入图片描述

在这里插入图片描述
高阶API还可以支持用户分配的内存传入作为临时存储,此时可以通过这个函数计算API需要的缓存大小。

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

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

相关文章

一文1800字从0到1浅谈web性能测试!

什么是性能测试? web性能应该注意些什么? 性能测试,简而言之就是模仿用户对一个系统进行大批量的操作,得出系统各项性能指标和性能瓶颈,并从中发现存在的问题,通过多方协助调优的过程。而web端的性能测试…

基于知识图的电影推荐系统

🎬 毕设灵感——“基于知识图谱的电影推荐系统”🚀 👉 如果你的毕业设计还没有灵感,那么这个基于知识图谱的电影推荐系统绝对值得参考!这不是普通的推荐系统,而是通过知识图谱大数据的结合,来为…

Genmo 的 Mochi1 AI 视频生成技术:内容创作的新纪元

Genmo 的 Mochi1 AI 视频生成技术:内容创作的新纪元 随着 AI 技术的快速发展,AI 视频生成工具已经成为许多创作者的重要工具。Genmo 最新推出的 Mochi1 技术,作为一款开源的 AI 视频生成工具,为内容创作者提供了极具创新性的视频…

详解:CentOS 7 NAT模式的网络配置

打开虚拟机发现并没有网络选项 一、解决虚拟机ping通主机 解决方法1: 启动VMware NAT Service (1)首先查看主机的ip地址,winR打开搜索框,输入cmd (2)输入ipconfig查看网络配置信息 ipcon…

Bug:通过反射修改@Autowired注入Bean的字段,明确存在,报错 NoSuchFieldException

【BUG】通过Autowired注入了一个Bean SeqNo,测试的时候需要修改其中的字段。通过传统的反射,无论如何都拿不到信息,关键是一方面可以通过IDEA跳转,一方面debug也确实能看到这个字段。但是每次调用set方法报错:NoSuchFi…

腾讯云轻量服务器Lighthouse的前世今生

目录 序一、名字的由来二、Lighthouse的定位是什么,与CVM的差异化有哪些三、Lighthouse是如何实现简单易用的四、Lighthouse对于开发者有哪些具体的利好 序 印象中,腾讯云轻量应用服务器Lighthouse是在2020年正式上线的。 在其一经推出后,就…

【C++进阶】之C++11的简单介绍(三)

📃博客主页: 小镇敲码人 💚代码仓库,欢迎访问 🚀 欢迎关注:👍点赞 👂🏽留言 😍收藏 🌏 任尔江湖满血骨,我自踏雪寻梅香。 万千浮云遮碧…

Vue项目实战-新能源汽车可视化(一)(持续更新中)

一.项目代码 1.App.vue <template><!-- 模板--><div id"wrapper"><div style"width: 100%"><el-tabs v-model"activeName" id"tabs"> <!-- 标签栏里包含了三个标签面板&#xff0c;分别是研发与维…

web前端-html:简单创建表格表单相结合的网页

效果&#xff1a; <body><form action"这里如果为空表单提交后不会有任何操作"method"get"<label for"edit">用户名</label><input type"text" name"用户名" id"最好不要空&#xff0c;id属性…

【论文学习与撰写】论文里配图的题注、多张图片同列排版格式等

目录 1、插入题注 2、多张图排版 1、插入题注 word--引用--插入题注&#xff0c;就会出来这个 直接点确定的话&#xff0c;是会出来图1/图2/图3.。。。之类的 那是因为标签设置的是 图 如图新建标签为&#xff1a; 图 1. 那么&#xff0c;插入题注之后&#xff0c;就会…

【分立元件】贴片电阻的额定功率

贴片电阻器通过电流后将会发热。而贴片电阻的额定功率(Power Rating)是在额定环境温度中可在连续工作状态下使用的最大功率值。 此外,由于使用温度的上限是确定的,因此在高于额定环境温度的条件下使用时,需要按照以下的功率降额曲线来降低功率。额定环境温度是能够…

ionic Capacitor 生成 Android 应用

官方文档 https://ionic.nodejs.cn/developing/android/ https://capacitorjs.com/docs/getting-started 1、创建新的 Capacitor 应用程序 空目录下面 npm init capacitor/app2、install Capacitor npm install npm start在这里插入图片描述 3、生成dist目录 npm run buil…

SpringBoot篇(缓存层)

目录 前言 缓存是什么&#xff1f; 一、SpringBoot内置缓存解决方案 1. 简介 2. 手机验证码案例 二、SpringBoot整合Ehcache缓存 1. 简介 2. 总结 三、SpringBoot整合Redis缓存 1. 简介 2. 总结 四、SpringBoot整合Memcached缓存 1. 简介 2. 安装 3. 变更缓存为M…

5G 现网信令参数学习(1) - MIB

MIB消息中的参数 systemFrameNumber 000101B, subCarrierSpacingCommon scs30or120, ssb-SubcarrierOffset 6, dmrs-TypeA-Position pos2, pdcch-ConfigSIB1 { controlResourceSetZero 10, searchSpaceZero 4 }, cellBarred notBarred, intraFreqReselection allowed, sp…

1024程序员节特惠题解!

#题外话&#xff1a;/ #先看题目 题目传送门https://www.luogu.com.cn/problem/P1035#思路&#xff1a;直接模拟&#xff08;Shift1&#xff09; #代码&#xff1a; #include <bits/stdc.h> using namespace std; int main(){double cnt0,k,sum0,x;cin>>k;while…

2.1 > Shell 是什么、如何更熟练的使用 Bash Shell

Shell 基础知识 Shell是计算机操作系统中的一个命令行解释器&#xff0c;由C语言编写&#xff0c;用于用户与操作系统之间进行交互。用户可以通过Shell输入命令&#xff0c;操作系统接收到这些命令后执行相应的操作。Shell一般还提供了编程语言的基本功能&#xff0c;允许用户…

【Mac 上将 MOV 格式转换为 MP4 格式的简易指南】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

R语言笔记(四):函数

文章目录 一、Function basics1、Creating your own function2、Function structure3、Using your created function4、Multiple inputs5、Default inputs 二、Return values and side effects1、Returning more than one thing2、Side effectsExample of side effect: plot 三…

从零开始学python必看,最强“Python编程三剑客(pdf)”

目录 三剑客PDF传送门&#xff1a;三剑客 第一本&#xff1a;《Python编程&#xff1a;从入门到实践》 1.1《Python编程&#xff1a;从入门到实践》第一部分&#xff1a;基础知识 1.2《Python编程&#xff1a;从入门到实践》第二部分&#xff1a;项目 第二本&#xff1a;《…

Metasploit渗透测试之模块学习与开发

# 概述 Metasploit 框架采用模块化架构&#xff0c;即所有漏洞利用、有效载荷、编码器等都以模块形式存在。模块化架构使框架功能的扩展更加容易。任何程序员都可以开发自己的模块&#xff0c;并将其轻松移植到框架中。 # 1、使用辅助模块 在之前的"信息收集和扫描 &qu…