aclnn算子开发入门
Ascend aclnn 算子开发入门[toc] 一、概述什么是算子? 在 AI 框架中,算子一般指一些最基本的代数运算(如:矩阵加法、矩阵乘法等),多个算子之间也可以根据需要组合成更加复杂的融合算子(如:flash-attention 算子等)。算子的输入和输出都是 Tensor(张量)。 融合算子:将多个独立的“小算子”融合成一个“大算子”,多个小算子的功能和大算子的功能等价,但融合算子在性能或者内存等方面优于独立的小算子。 另外,算子更多地是 AI 框架中的一个概念,在硬件底层算子具体的执行部分,一般叫做 Kernel(核函数)。 下面将首先对算子开发中涉及的一些基本概念进行介绍(可以用 CUDA 作为参考,大部分概念都是相似的),然后会以具体的矩阵加法和乘法算子的代码实现为例进行讲解。 二、基本概念2.1 Device Host:一般指 CPU(负责调度); Device:一般指 GPU、NPU(负责计算)。 2.2 ContextContext 主要负责管理线程中各项资源的生命周期。 一般来说,Context 与其它概念之间具有以下关系: 一个进程可以创建多个 ...
Python学习笔记
基础语法1 数据类型1.1 基本类型1.1.1 数字1234567891011121314151617181920212223242526272829# 1.整型(int)# 十进制转二进制a = bin(16) # 0b10000# 十进制转八进制b = oct(16) # 0o20# 十进制转十六进制c = hex(16) # 0x10# 转换结果为字符串类型type(a) # str# 二进制转十进制d = int(a, 2) # 16# 八进制转十进制e = int(b, 8) # 16# 十六进制转十进制f = int(c, 16) # 16# 2.浮点型(float)# 计算机采用二进制小数来表述浮点数的小数部分,部分小数不能用二进制小数完全表示,可以四舍五入获得精确解。(0.1 + 0.2) == 0.3 # False0.1 + 0.2 # 0.30...04b = round(0.3, 1) # 只保留1位小数print(b) # 0.3# 3.复数(complex)# j或J都可以# 虚部为1时,需要显示写出2+1j 数据运算: 整数与浮点数的运算...
PyTorch深度学习实践
PyTorch 深度学习实践概述 课程链接: 《PyTorch深度学习实践》完结合集。 环境配置 安装教程: 最详细的 Windows 下 PyTorch 入门深度学习环境安装与配置 CPU GPU 版 | 土堆教程_哔哩哔哩_bilibili。 确认 GPUGPU(Graphics Processing Unit),显卡,用于在屏幕上显示图像、视频。 驱动:让计算机识别特定的硬件。 深度学习显卡,一般是用 NVIDIA(英伟达),AMD 的显卡不能用于深度学习。因为英伟达有 CUDA 平台,让用户可以通过 CUDA 操纵显卡,从而加速深度学习的训练。 CUDA 软件的版本(Cuda runtime version)要 <= CUDA 硬件驱动的版本(Cuda driver version)。 GPU 为什么可以加速训练?因为相比于 CPU,GPU 具有大量的 ALU(逻辑处理单元)用于计算。 安装 Anaconda虚拟环境: 1234567891011121314151617181920创建虚拟环境:conda create -n [环境名称] py...
Java学习笔记
Java SE基本语法方法重载 方法名相同 参数列表不同(个数、类型、次序) 方法重载与访问修饰符、返回值类型、方法参数的名字都没有关系。 参考资料: [Java中的方法重载_callmexinshou的博客-CSDN博客_java方法重载](https://blog.csdn.net/callmexinshou/article/details/123893783?ops_request_misc=&request_id=&biz_id=102&utm_term=Java中的方法重载 callme&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-123893783.142^v47^pc_rank_34_1,201^v3^control_2&spm=1018.2226.3001.4187) 面向对象继承子类可以继承父类的私有属性,但是不能继承父类私有属性的访问权限。 即子类其实是可以继承父类的所有成员的,...
CUDA学习笔记
CUDA 学习笔记 学习资料: 代码仓库:https://github.com/RussWong/CUDATutorial 01-02. hello world123456789101112131415#include <stdio.h>#include <cuda.h>#include <cuda_runtime.h>__global__ void hello_cuda() { // 泛指当前线程在所有block范围内的全局id unsigned int idx = blockIdx.x * blockDim.x + threadIdx.x; printf("block id = [ %d ], thread id = [ %d ] hello cuda\n", blockIdx.x, idx);}int main() { hello_cuda<<< 1, 1 >>>(); cudaDeviceSynchronize();...
C++学习笔记
C++基础入门1 C++初识1.1 第一个C++程序1234567891011#include<iostream>#include<string>using namespace std;int main(){ // ... system("pause"); return 0;} 1.2 注释1.3 变量1.4 常量12#define 常量名 常量值const 数据类型 常量名 = 常量值 1.5 关键字1.6 标识符命名规则 不能是关键字; 只能由字母、数字、下划线组成; 第一个字符必须为字母或下划线; 区分大小写。 2 数据类型2.1 整型 数据类型 占用空间 short 2 字节 int 4 字节 long Win 4 字节,Linux 4 字节(32 位)或 8 字节(64 位) long long 8 字节 2.2 sizeof()作用:返回当前数据的类型长度(字节)。 2.3 浮点型 数据类型 占用空间 float 4 字节 ...
03.网络与部署学习资料
第七节:从需求到上线全流程概述课程背景: 作为后端研发同学,在一个完整的需求交付周期内究竟要做哪些事情?在各个阶段需要跟不同的角色和平台打交道。介绍常见的研发模式和迭代流程,以实际的例子让同学感受一下后端研发的日常,能够提升大家在团队中协作的能力。 课程目标: 提升对流程的认知 熟悉在公司大团队中协作开发 对职业生涯的日常有更直观的理解 课前 (必须)词汇表 分类 英文 中文 解释 研发模式 Waterfall Model 瀑布模型 瀑布模型(Waterfall Model)最早强调软件或系统开发应有完整之周期,且必须完整的经历周期之每一开发阶段,并系统化的考量分析与设计的技术、时间与资源之投入等。由于该模式强调系统开发过程需有完整的规划、分析、设计、测试及文件等管理与控制,因此能有效的确保系统质量,它已经成为软体业界大多数软件开发的最初标准 The Scaled Agile Framework(SAFe) 规模化敏捷框架 Scrum Scrum 在软件工程中,Scrum是以经验过程为依据,采用迭代、增量的方法来提高产品开发的可预见性并控制风险的理论,S...
02.Go语言原理与实践学习资料(下)
第四节:高性能 Go 语言发行版优化与落地实践概述本节课程主要分为四个方面: 自动内存管理 Go 内存管理及优化 编译器和静态分析 Go 编译器优化 课前部分主要罗列课程中涉及到的概念。对于不熟悉的概念,同学们可以提前查询预习;课中部分主要罗列每一部分的关键思路,帮助同学们跟上课程的进度;课后部分是一些问题,帮助同学们在课后梳理本课程的重点。 课前 (必须)自动内存管理 Auto memory management: 自动内存管理 Grabage collction: 垃圾回收 Mutator: 业务线程 Collector: GC 线程 Concurrent GC: 并发 GC Parallel GC: 并行 GC Tracing garbage collection: 追踪垃圾回收 Copying GC: 复制对象 GC Mark-sweep GC: 标记-清理 GC Mark-compact GC: 标记-压缩 GC Reference counting: 引用计数 Generational GC: 分代 GC Young generati...
01.Go语言原理与实践学习资料(上)
第一节:Go 语言上手 - 基础语言概述本节课程主要分为三个方面: Go 语言简介 Go 语言开发入门,包括开发环境配置、基础语法、标准库 Go 实战,包括三个实战项目 课前部分主要罗列课程中涉及到的概念。对于不熟悉的概念,同学们可以提前查询预习;课中部分主要罗列每一部分的关键思路,帮助同学们跟上课程的进度;课后部分是一些问题,帮助同学们在课后梳理本课程的重点。 课前 (必须)安装 Go 语言 访问 go.dev/ ,点击 Download ,下载对应平台安装包,安装即可 如果无法访问上述网址,可以改为访问 studygolang.com/dl 下载安装 如果访问 github 速度比较慢,建议配置 go mod proxy,参考 goproxy.cn/ 里面的描述配置,下载第三方依赖包的速度可以大大加快 配置 Go 语言开发环境可以选择安装 VS Code , 或者 Goland ,对于 VS Code,需要安装 Go 插件 下载课程示例代码 Windows 平台建议安装 git,其它系统自带,安装教程 打开 github.com/...
01.Go语言入门——基本语法
Go语言上手 - 基础语言|青训营笔记 这是我参与「第三届青训营 -后端场」笔记创作活动的的第 1 篇笔记。 一、本堂课内容重点 Go 语言基本语法 猜数字游戏 简易字典 SOCKS 5 代理 二、详细知识点介绍1. Go 语言基本语法(1)基本结构 main 包中的 main 函数是程序开始执行的地方。 import 导入函数包。 123456789package mainimport ( "fmt")func main() { fmt.Println("hello world")} (2)变量 go 语言可以自动识别变量的数据类型。 var 变量名 数据类型 = 值 var 变量名 = 值 变量名 := 值 12345678910111213141516171819202122232425262728package mainimport ( "fmt" "math")func main() { var a = &quo...