- 博客(241)
- 资源 (2)
- 收藏
- 关注
原创 swizzle
为了减少指令数,我们在进行kernel优化时会采用向量化的读写指令(也叫大字长读写),如以128bit的形式读写共享内存,此时线程需要访问的单位数据量为16byte,32个线程需要访问的数据量为16byte x 32 = 512byte。如图2,当32个线程同时访问32个不同的bank时,各个bank是并行执行的,其效率是最高的,即32个线程并发的访问32个bank中不同颜色的单元,是可以并行的,值得注意的是其中的线程编号(如图2中的T0所示)和bank中的行位置并没有连续性要求。
2024-09-30 15:44:10 49
原创 cuda基础知识
如果block所含线程数目不是warp大小的整数倍,那么多出的那些thread所在的warp中,会剩余一些inactive的thread,也就是说,即使凑不够warp整数倍的thread,硬件也会为warp凑足,只不过那些thread是inactive状态,需要注意的是,即使这部分thread是inactive的,也会消耗SM资源。,因为资源限制,SM要为每个线程块分配共享内存,而也要为每个线程束中的线程分配独立的寄存器,所以SM的配置会影响其所支持的线程块和warp并发数量。
2024-09-29 14:58:03 67
原创 nsight-compute使用教程
有的时候在linux上安装上了nsight-compute,可以生成报告,但是却因为缺少qt组件而无法打开,我选择的方法是在linux上生成报告,在window上的nsight compute的图形界面打开,需要注意的是,nsight compute图形界面的版本一定要更高,不然无法打开。
2024-09-26 11:28:48 100
原创 cuda中使用二维矩阵
经过上面的操作后,就可以像操作二维数组了t=O83At=O83ACUDA学习之一:二维矩阵加法 - 冷豆东 - 博客园 (cnblogs.com)https://www.cnblogs.com/jugg1024/p/4349243.htmlCUDA 中的 cudaMalloc使用二重指针(void**)的一些理解_cuda申请二重指针指针-CSDN博客https://blog.csdn.net/lingyunxianhe/article/details/92001270。
2024-09-19 14:34:40 245
原创 从index_put出发全面学习cuda和pytorch技术
深感目前对于cuda和pytorch所涉及知识的广度和深度,但一时又不知道该如何去学习,经过多日的考虑,还是决定管中窥豹,从一个算子出发,抽丝剥茧,慢慢学习,把学习中碰到的问题都记录下来,希望可以坚持下去。
2024-09-13 23:37:57 210
原创 c++指针数组和数组指针
数组指针:本质是一个指针,指向了一个数组,数组中的每个元素都是某种数据类型的值(比如 int 类型)。//定义了一个数组指针,指向一个大小为n的数组,数组中的每个元素都是int类型数组指针也称行指针,也就是说,当指针p执行p+1时,指针会指向数组的下一行,如://p是一个数组指针,指向了一个包含4个int型元素的数组p=a;//将二维数组的首地址赋给p,即a[0]或a[0][0]p++;//跨过第一行,p指向了a[1][0]
2024-09-12 11:37:32 65
原创 c++和c函数总结
它是为了方便系统之间的移植而定义的,不同的系统上,定义size_t 可能不一样。size_t 的目的是提供一种可移植的方法来声明与系统中可寻址的内存区域一致的长度。size_t 的声明是实现相关的。一般来说,size_t 可能的最大值是SIZE_MAX。例如,size_t 用做sizeof 操作符的返回值类型,同时也是很多函数的参数类型,包括malloc 和strlen。size_t类型), 用来表示可以被执行读写操作的数据块的大小。因为size_t 是无符号的,一定要给这种类型的变量赋正数。
2024-09-11 21:57:31 90
原创 c++指针和引用专题
图解C++指针与引用的区别_指针与引用 图解-CSDN博客其实从本质上看,引用就是加了约束的指针,引用改善了指针的不足之处操作空指针:被赋值为0的指针操作野指针:未被初始化的指针不知不觉改变了指针的值,而后还以为该指针正常。引用必须初始化(保证没有野指针)初始化就是现存变量的别名(保证不是空指针)一个引用永远指向他初始化的那个对象(保证指针值不变)
2024-09-10 22:13:21 104
原创 pytroch算子接入
【pytorch扩展】CUDA自定义pytorch算子(简单demo入手)_pytorch自定义算子-CSDN博客使用 Cpp 扩展自定义进程组后端 — PyTorch 教程 2.4.0+cu124 文档 - PyTorch 中文。
2024-09-05 13:46:09 46
原创 centos换源安装升级gcc
使用devtools升级安装的时候,由于此库已经停止更新 了,因此需要切换阿里源SCL+Devtoolset 安装与使用笔记-腾讯云开发者社区-腾讯云 (tencent.com)
2024-08-30 19:41:09 1048
原创 triton之flaggems的point-wise分析
如果没有写triton.jit装饰器,则会报上面的错误,fn.args_names是JITFuntion的属性。
2024-08-20 17:15:02 79
原创 cuda指北之professional CUDA C Programming第五章共享内存
CPU的内存是线性存储的,但是GPU的共享内存并不是线性的,而是二维的说白了就是不要一个线程束中访问一列共享内存,而是要访问一行最好就是同步线程,不同bank(同一个线程束中)
2024-08-13 17:24:04 57
原创 cuda指北之professional CUDA C Programming第四章内存模型
GPU上最大的内存空间,延迟最高,使用最常见的内存,global指的是作用域和生命周期,一般在主机端代码里定义,也可以在设备端定义,不过需要加修饰符,只要不销毁,是和应用程序同生命周期的。使用共享内存的时候一定要注意,不要因为过度使用共享内存,而导致SM上活跃的线程束减少,也就是说,一个线程块使用的共享内存过多,导致更过的线程块没办法被SM启动,这样影响活跃的线程束数量。每个SM都有一定数量的由线程块分配的共享内存,共享内存是片上内存,跟主存相比,速度要快很多,也即是延迟低,带宽高。
2024-08-06 14:57:16 53
原创 flag-gems的装饰器point-wise分析
1 其中Optional表示输入参数为可选项,可以为指定的类型,或者为None,默认是None2 nonlocal在Python中, `nonlocal` 关键字用于在嵌套函数中声明一个非局部变量。它允许您在内部函数中访问和修改外部函数的变量。以下是 `nonlocal` 关键字的具体用法:声明非局部变量:在内部函数中使用 `nonlocal` 关键字,然后指定要声明为非局部变量的变量名。例如:x = 10nonlocal xx = 20print(x) # 输出: 20。
2024-06-27 15:03:57 107
原创 pytorch自定义扩展
pytorch的自定义拓展之(一)——torch.nn.Module和torch.autograd.Function_用torch.autograd.function还是nn.module-CSDN博客。
2024-06-19 14:30:13 125
原创 ptx和SASS学习
声明使用若干寄存器(谓词寄存器、32位寄存器和64位寄存器)。分别是当前线程块在x和y维度上的索引。从参数内存中加载函数参数到寄存器中。
2024-06-11 14:47:25 114
原创 triton之paged attention
图解大模型计算加速系列之:vLLM核心技术PagedAttention原理 - 知乎 (zhihu.com)
2024-05-28 10:58:22 239
原创 triton之flag-attention源码分析
主要的实现,在一个类FlashAttention中实现在这个类中调用的其他函数都不是类的内部的函数,类的内部的函数只有这两个这两个函数是一定要这样实现的,是固定写法。
2024-05-20 17:33:36 255
原创 triton之gemm
如果不采用group gemm的话,采用单流执行,则具体的硬件执行调度如下所示:gemm0,gemm1,gemm2同时分配任务给sm做 第一轮:gemm0、gemm1和gemm2的0-4分给4个sm去做,都计算完成第二轮:gemm0在上一轮已经计算完毕,gemm1和gemm2的45分给sm0,sm1去做,在这一轮可以发现,sm0和sm1针对gemm0的task出现了idel,而sm2和sm3对三个gemm的task都是idle状态而如果采用group gemm,则可以实现: 就是保证sm尽量满载,而不处于i
2024-05-13 17:26:00 247
原创 triton编译学习
Triton-MLIR: 从DSL到PTX - 知乎 (zhihu.com)Superjomn's blog | OpenAI/Triton MLIR 迁移工作简介。
2024-05-11 15:20:53 319
原创 pytorch教程
PyTorch 74.自定义操作torch.autograd.Function - 知乎 (zhihu.com)虽然pytorch可以自动求导,但是有时候一些操作是不可导的,这时候你需要自定义求导方式。也就是所谓的 "Extending torch.autograd"。
2024-05-08 11:04:14 66
原创 triton之fused attention
【BBuf的CUDA笔记】十五,OpenAI Triton入门笔记三 FusedAttention - 知乎 (zhihu.com)图解大模型计算加速系列:FlashAttention V1,从硬件到计算逻辑 - 知乎 (zhihu.com)图解大模型计算加速系列:Flash Attention V2,从原理到并行计算 (qq.com)
2024-05-07 10:00:31 162
原创 triton之语法学习
一 基本语法1 torch中tensor的声明x = torch.tensor([[1,2, 1, 1, 1, 1, 1, 1],[2,2,2,2,2,2,2,2]],device='cuda')
2024-05-06 09:30:45 235
原创 triton之dropout教程
Transformer模型-Dropout的简明介绍:丢掉一些元素,防止过度拟合_transformer dropout-CSDN博客过程可以参考简单理解就是将mask为1的元素置零。
2024-04-30 15:19:41 54
原创 AI算法与模型综述
Transformer模型-Dropout的简明介绍:丢掉一些元素,防止过度拟合_transformer dropout-CSDN博客。将原有的tenser以一定的概率置零。
2024-04-30 14:28:22 88
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人