CUDA编程
文章平均质量分 95
mlxaaa
这个作者很懒,什么都没留下…
展开
-
《Better Performance at Lower Occupancy》解读
背景CUDA的通常建议在SM或者Block中使用更多的线程来隐藏访存时延。但是作者提出这种方式可能不是完全正确的这种方式可能不是完全正确的这种方式可能不是完全正确的作者列举了两个实验数据来说明这件事情,结果一目了然:作者提出使用CUDA编程时的两点谬论:多线程是隐藏时延仅有的一种方式。这里的时延包括两种:一种是算数延时;一种是访存延时shared memroy 和 register 的访存速度一样快优化点1:使用更少的线程来隐藏计算延时首先将计算延迟与访存延迟做一个对比,计算延迟要原创 2021-05-06 10:54:44 · 7684 阅读 · 3 评论 -
CUDA 学习笔记
二维grid下,二维block的线程全局id获取线程分配如下所示:线程分配格式为:gridDim.x = 2gridDim.y = 2blockDim.x = 2blockDim.y = 2那么线程的global_id可以表示为:global_index = row_offset + block_offset + tidrow_offset = number of threads in a row * blockIdx.y= blockDim.x * blockDim.y * grid原创 2020-11-19 10:21:01 · 162 阅读 · 1 评论 -
cuda 优化实例--计算平方和
平方和程序的渐进优化当线程访问global memory没有顺序访问线程顺序访问global memory在1的基础之上增加并行计算规模,也就是使用多个block如何选择最优的的线程配置,可能影响线程配置的因素有一下几个:为了高效地使用寄存器,每个sm上至少要有192个激活的线程为了将bank冲突将到最低,应尽量使每个block含有的线程数是64的倍数当某个block中的线程被同步时候,为了避免对应的sm出现闲置,通常让block的数量是sm的2倍以上,以便使得处于不同状态的(闲置或者不闲原创 2020-11-01 20:22:21 · 465 阅读 · 0 评论 -
CUDA精讲(4)-- 性能优化
通信 vs 计算Kepler架构来说,其峰值处理性能达到了3900Gflops,而其带宽只有250GB/s,约等于63Gflops。计算/通信约等于60。也就是说我们编写的程序达到的计算/通信极限是60左右,一般来说很难达到这个数值,但是我们需要朝着这个目标而努力。计算/通信比还有一个叫法:Compute to Global Memory Access(CGMA)ratio。具体来说,执行一个计算指令只需要1~4个时钟周期,而从global memory中访问一个数据需要400 ~ 800个时钟周期,原创 2020-10-15 16:27:33 · 750 阅读 · 2 评论 -
CUDA精讲(3)-- GPU体系结构之内存层次结构
内存层次结构内存层次结构是GPU当中非常重要的一部分,对于性能的优化至关重要,内存的层次结构可以分成一下三个部分来讲:Register & Local memoryShared memoryGlobal & constant memoryGPU内存层次概览每个thread的local variable对应:register、local memory每个block中的shared variable对应一个shared memory每个grid中的globel var原创 2020-10-10 10:59:40 · 1521 阅读 · 0 评论 -
CUDA精讲(2)-- GPU体系结构之线程执行
GPU体系结构本讲是CUDA精讲的第二部分,在CUDA精讲(1)中主要列出了CUDA编程的一些基本概念。为了进一步地深入CUDA的系统优化我们需要了解GPU的硬件体体系结构。大部分的处理器体系结构都可以分成计算、存储、控制三部分。GPU中主要强调计算(Thread exection)与存储(Memory hierarchy)两部分,下面就以下两部分进行展开。线程执行(Thread execution)内存层次结构(Memory hierarchy)Thread executionCUDA线程原创 2020-10-10 10:05:36 · 308 阅读 · 0 评论 -
CUDA精讲(1)-- cuda基础
背景随着深度学习的发展,并行计算的需求也越来越多,不论是算法工程师还是搞性能优化的,知道点cuda编程也是当前的必备技能之一。但是目前关于gpu资源很杂,重点不突出,我们需要在极短的时间内get到cuda的精华,本系列就由此而诞生。文章框架cuda精讲系列文章主要由三部分构成:cuda基础GPU架构cuda编程优化每一部分都是通过知识点的方式将重点提炼出来,方便快速查看。cuda基础cuda的基本概念host: CPUdevice: gpu从软件层面讲:(1)kernel:就原创 2020-10-09 17:21:34 · 1273 阅读 · 1 评论