news 2026/10/2 7:02:14

CUDA学习笔记总结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CUDA学习笔记总结

1.算子开发

主要就是cuda编程,在这里为什么会使用cuda,因为gpu相比于cpu有大量核心的小的处理器去处理相似或者相同的任务,对于self attention的大量相似的运算非常合适。

2.基础知识

__global__ 标记是gpu上的代码,然后在具体使用之间要 cudaMalloc、cudaMemcpy、调用、cudaMemcpy、cudaMalloc。

关于grid和block的概念就是从启动kernel的理解,程序是按照grid组织的,一个grid包含多个block,一个block包含多个线程,同一个block中的线程是按照32个为单位去调度的,每32个也叫做一个线程束,即warp。

在这里可以使用int作为grid和blocksize去传输,也可以使用dim3去作为二维三维的去使用。

3.矩阵乘法TILE加速,主要是利用了共享内存

提到存储模型,有多种,从线程独有的寄存器、到共享内存,这个是片上的,block共享,还有全局内存,这个是多个block都可以访问的,更慢,存储bound往往是因为这里。

共享内存和cache的区别是,共享内存是由程序员申请和管理,一个block共享,cache是硬件控制的,有l1和l2,l1是一个sm上的block共享,而l2是多个sm上的线程共享。

#define TILE

__global__ func(float *A,float *B,float *C,int M,int K,int N){

__shared__ float As[TILE][TILE];

__shared__ float Bs[TILE][TILE];

int row=blockDim.y*blockIdx.y+threadIdx.y;

int col=blockDim.x*blockIdx.x+threadIdx.x;

float sum=0.0f;

for(int i=0;i<(K+TILE-1)/TILE;i++){

int a_col=i*TILE+threadIdx.x;

int b_row=i*TILE+threadIdx.y;

if(row<M&&a_col<K){

As[threadIdx.y][threadIdx.x]=A[row*K+a_col];

}else As[threadIdx.y][threadIdx.x]=0;

if(b_row<K&&col<N){

Bs[threadIdx.y][threadIdx.x]=B[b_row*N+col];

else Bs[threadIdx.y][threadIdx.x]=0;

__syncthreads();

for(int k=0;k<TILE;k++){

sum+=As[threadIdx.y][k]*Bs[k][threadIdx.x];

}

__syncthreads();

}

if(row<M&&col<N)C[row*N+col]=sum;

}

}

调用方用二维去调用

dim3 block(16,16);

dim3 grid((col+15)/16,(row+15)/16);

总结:这里我的问题是二维矩阵不是指针,本身就是指针、一次是计算TILE个,不是K个。

4.bank conflict的概念

同一个共享内存分成32个bank,在同一时刻不同线程不能访问同一个bank的不同地址,这会导致线程延迟执行增加执行时间降低并行率,解决方法可以在设计的时候避免stride是32的倍数、使用padding、使用寄存器直接交换数值的技术。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 7:01:36

Dify实战:用工作流搭建AI复盘助手hindsight,自动提炼经验教训

"hindsight"这个词&#xff0c;直译过来是"后见之明"——听着有点像马后炮&#xff0c;但放在AI应用里&#xff0c;它其实是最值钱的能力之一。我最近花了两周时间&#xff0c;在Dify平台上搭了一个叫hindsight的复盘助手&#xff0c;专门用来干一件事&…

作者头像 李华
网站建设 2026/10/2 7:01:03

写点什么好呢

我现在正在做的是个人OS&#xff0c;借助codex与obsidian去搭建出自己的模板&#xff0c;涉及很多方面。Kernel&#xff1a;包含以下1.Constitution:以事实为起点&#xff0c;以模型理解世界&#xff0c;以原则做判断&#xff0c;以情绪提供动力&#xff0c;以行动接受现实检验…

作者头像 李华
网站建设 2026/10/2 7:00:42

广东珠海小合科技 低压电动机晃电自启动控制器 宽电压输入设计 提升生产连续性 质保两年

什么是晃电?低压电动机晃电停机为何成为工业生产的隐形痛点 在工业生产领域&#xff0c;电力供应的稳定性直接决定了生产流程的连续性。很多生产管理者都遇到过这样的情况&#xff1a;电网仅仅出现了几秒钟甚至几百毫秒的电压波动或短时失电&#xff0c;整个生产线的低压电动机…

作者头像 李华
网站建设 2026/10/2 7:00:42

捷宜电子客户评价如何 示教实训推车实际使用满意度

深圳市捷宜电子有限公司深耕医疗教学影像领域&#xff0c;专注为医护院校、医疗机构提供医疗实训、临床示教专用影像设备与配套器材&#xff0c;致力于解决医疗教学拍摄中的各类场景痛点&#xff0c;提供稳定可靠的一站式设备配套方案。 公司核心实力拆解 企业资质与合规管控深…

作者头像 李华
网站建设 2026/10/2 7:00:39

蒸煮袋加工厂哪家技术强 中北包装源头工厂推荐

开篇品牌摘要诸城市中北包装有限责任公司是一家深耕食品软包装制造二十余年的源头工厂&#xff0c;专业为预制菜、卤肉制品、水产、即食酱料等食品加工企业提供100℃-135℃区间高温蒸煮袋研发定制及全链路包装解决方案。企业基础介绍诸城市中北包装有限责任公司现有员工200人&a…

作者头像 李华