- 博客(7)
- 收藏
- 关注
原创 CUDA内存合并
当线程1第0次迭代读取M(0,0)数据时(一个sector),会得到M(0,0),M(0,1),M(0,2),M(0,3)共4个sector,那样在第2,3,4次迭代可以直接从L2缓存中读取,不需要从全局内存中读取,当第5次迭代同样会得到M(0,4),M(0,5),M(0,6),M(0,7)。但实际上发现多申请了24次,原因就是4个线程每读取一列数据,都不能合并成一次,8列造成了32次申请,其中8次(第0列和第4列)是从全局内存申请的,24次(第1,2,3,5,6,7列)从L2缓存中申请的。
2024-11-04 22:00:34
1152
原创 CUDA避免Bank Conflict
为了提高内存读写带宽,共享内存被分割成了32个等大小的内存块,即Bank,数据行优先存储padding方式可以避免Bank冲突。
2024-11-04 13:59:20
1270
原创 CUDA实现加法
表示从主机(Host)到设备(Device)的内存复制操作,占用了总时间的 34.67%,共调用了 3 次,平均每次调用时间为 1.1090 微秒。函数 ,仅需要设定一个线程约束(有效的线程,数组长度为N,线程索引小于N的为有效),使用全局的线程索引,此时SM中的线程束执行有效的线程,即可实现数组求和。实现矩阵C=A+B,矩阵设为ny行nx列,nx=ny=32,定义一个block有nx个线程,共1个block,那么需要运行ny次才能实现矩阵所有元素的相加。需要进行for循环,逐元素以此相加。
2024-10-27 16:59:35
917
原创 CUDA编程入门介绍
什么是并行计算并行计算(parallel computing)是一种计算形式,它将大的问题分解为许多可以并发执行的小问题并行计算分为:任务并行(task parallel)和数据并行(data parallel)任务并行指多个任务同时执行数据并行指多个数据可以同时被处理,每个数据由独立的线程处理数据并行分块方法:块分(block partitioning)和循环分块(cyclic partitioning)GPU并行计算时,其实是指的基于CPU+GPU的异构计算架构。
2024-10-14 16:56:34
1141
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人