自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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-system教程

参考nsight-compute使用教程-CSDN博客。

2024-09-26 14:08:38 444

原创 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

原创 triton之ttir学习

【代码】triton之ttir学习。

2024-09-13 17:35:04 168

原创 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函数说明

第一参数需要是指针的指针,可能需要类型转换。

2024-08-07 20:35:40 52

原创 python装饰器

参考【Python】一文弄懂python装饰器(附源码例子)_python 装饰器-CSDN博客。

2024-08-06 16:50:04 274

原创 triton之triton/runtime/jit.py分析

参数解释fnjitversionreprdebugnoinline返回类型。

2024-08-06 16:21:57 87

原创 cuda指北之professional CUDA C Programming第四章内存模型

GPU上最大的内存空间,延迟最高,使用最常见的内存,global指的是作用域和生命周期,一般在主机端代码里定义,也可以在设备端定义,不过需要加修饰符,只要不销毁,是和应用程序同生命周期的。使用共享内存的时候一定要注意,不要因为过度使用共享内存,而导致SM上活跃的线程束减少,也就是说,一个线程块使用的共享内存过多,导致更过的线程块没办法被SM启动,这样影响活跃的线程束数量。每个SM都有一定数量的由线程块分配的共享内存,共享内存是片上内存,跟主存相比,速度要快很多,也即是延迟低,带宽高。

2024-08-06 14:57:16 53

原创 cuda指北之professional CUDA C Programming第三章

CUDA只提供了一种块内同步的方式,块之间没办法同步。

2024-08-01 16:42:26 73

原创 triton之内联汇编

约束字符串,定义输入输出寄存器的分配。

2024-07-31 15:45:02 53

原创 cuda编译选项说明书

需要加一个-std=c++11。-I是指定依赖的库函数。

2024-07-30 11:00:51 58

原创 pytorch源码分析之index_put_with_sort_kernel

::::

2024-07-24 10:34:06 200

原创 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

原创 使用nsight对triton性能进行分析

得到profile文件。显示对应的得到的信息。

2024-06-06 15:39:45 147

原创 cuda之transpose

【代码】cuda之transpose。

2024-06-05 10:55:08 88

原创 triton源码分析之setup.py

【代码】triton源码分析之setup.py。

2024-05-29 13:51:55 181

原创 triton之paged attention

图解大模型计算加速系列之:vLLM核心技术PagedAttention原理 - 知乎 (zhihu.com)

2024-05-28 10:58:22 239

原创 高效triton编写指南

这种方式比tl.arange的方式要提前知道具体的内存的范围大小,有助于提高计算速度。

2024-05-23 14:43:08 101

原创 triton之flag-attention源码分析

主要的实现,在一个类FlashAttention中实现在这个类中调用的其他函数都不是类的内部的函数,类的内部的函数只有这两个这两个函数是一定要这样实现的,是固定写法。

2024-05-20 17:33:36 255

原创 Dao-AILab之flash-attenton源码分析(一)整体分析

在flash_attn目录下。

2024-05-16 17:18:22 71

原创 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之normalization教程

在上式中,x是代表一个tensor。

2024-05-03 14:21:25 90

原创 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

win7密码超级破解

一个可靠实用的win7密码破解方法,并且不会破坏原有系统,方法新颖,简单易掌握

2012-09-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除