![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CUDA
文章平均质量分 86
知识搬运工人
这个作者很懒,什么都没留下…
展开
-
CUDA 编程入门(2):CUDA 调度模型
Block 对应的物理硬件概念是 SM,也就是说 SM 负责 block 中线程的执行,SM 会为每个 block 分配需求的资源,比如寄存器,共享内存等,由于 SM 自身资源有限,因此它被分配到的 block 数量也是有限的,这取决于 block 中线程的资源需求。每个 SM 中有 4 个处理块,每个处理块都有一个独立的 Warp Scheduler,Warp Scheduler 负责调度分配到当前处理块上的 warp,所有这些 warp 构成一个叫做 Active Warps 的集合,调度器在每个。转载 2024-09-09 16:47:31 · 26 阅读 · 0 评论 -
理一理Latency、Bandwidth、Throughput、Response Time概念的区别
在性能测试术语中,“在给定的时间段内从一个位置成功移动到另一个位置的数据量,通常以每秒比特数(bps)来度量,或每秒兆比特数(Mbps)、每秒千比特数(Gbps)”。带宽(Bandwidth):它显示了管道(通信通道)的容量。假设ISDN的带宽是64K,则我们可以增加一个64K的通道,所以总带宽是128K。经常,一些性能测试人员对延时(Latency)、吞吐(Throughput)、带宽(Bandwidth)和响应时间(Response Time)感到迷惑,今天,就用一些简单的例子来说明它们之间的区别。原创 2024-09-09 16:45:42 · 784 阅读 · 0 评论 -
GPU 峰值算力及性能优化参考资料汇总
另外,这里用的是F32浮点峰值做例子,如果你的任务不需要浮点运算或是精度不是F32,这个值就意义不大,需要转换成你需要的那个操作。其实不看Tensor core的话,满血版一般有:F64:F32:F16=1:2:4,正好与占用的GPR成反比,这个其实是与GPR的带宽有很大的关联的,一般满血版的卡的功能单元配比就会尽量按极限的GPR带宽来设计。一般说来,实际应用中,较大尺寸的矩阵乘法(GEMM)是难得的能接近峰值性能的程序,有些实现能到98%峰值的效率。指令,这是很苛刻的条件。都是一个指令一个flop,转载 2024-09-09 13:44:12 · 60 阅读 · 0 评论 -
simd vs simt
SIMD 架构是指在同一时间内对多个数据执行相同的操作,适用于向量化运算。例如,对于一个包含多个元素的数组,SIMD 架构可以同时对所有元素执行相同的操作,从而提高计算效率。在实际应用中,根据具体的计算需求和硬件环境选择合适的架构可以提高计算性能。SIMT 架构是指在同一时间内执行多个线程,每个线程可以执行不同的指令,但是这些线程通常会执行相同的程序。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。常见的 SIMD 架构包括。原创 2024-09-09 13:42:02 · 289 阅读 · 0 评论 -
CUDA编程:warp
因为一个warp中的线程必须执行相同的指令,不能一部分执行if中的指令,一部分执行else中的。由两个线程块组成的线程结构。,这些资源都被thread瓜分了,由于资源是有限的,所以,如果thread数量比较多,那么每个thread占用资源就比较少,反之如果thread数量较少,每个thread占用资源就较多,这需要根据自己的需求作出一个平衡。SM中的warp调度器会选择warp执行,被选中的成为selected,没选中但已经具备执行条件的成为eligible,没准备好的成为stalled。转载 2024-09-09 11:38:59 · 56 阅读 · 0 评论 -
CUDA编程方法论
GPGPU中一些问题的理解与思考(3)- 指令执行吞吐与指令集设计 gpu中的warp的divergence问题? 写CUDA到底难在哪? GPGPU中一些问题的理解与思考(2)- 各级存储的吞吐问题 NV GPU(SM50)的Register Bank Conflict和Reuse Cache的一些测试 GPGPU中一些问题的理解与思考(1)-上层架构 发布一个CUDA SASS转载 2024-09-09 11:24:51 · 45 阅读 · 0 评论 -
谈谈 cuda 线程束与内存模型
参考:1、2、Cuda thread 组成 block,block 组成 grid,形成嵌套网格状结构,目的是为了矩阵并行计算时,能对应矩阵位置。转载 2024-09-09 11:13:05 · 217 阅读 · 0 评论 -
CUDA编程4-执行模型
执行模型会提供一个操作视图,说明如何在特定的计算架构上执行指令。CUDA执行模型解释了GPU并行架构的抽象视图,有助于编写指令吞吐量和内存访问高效的代码。GPU架构围绕一个流式多处理器(SM)的可扩展阵列搭建,通过复制这种架构的构件来实现硬件并行。每个GPU通常有多个SM,每个SM都能支持数百个线程并发执行。当启动一个内核网格时,它的线程被分布在可用的SM上执行。线程块一旦被调度到一个SM上,其中的线程只会在那个指定的SM上并发执行;多个线程块可能被分配到同一个SM上,且根据SM资源的可用性进行调度;转载 2024-09-08 18:11:25 · 293 阅读 · 0 评论 -
GPU软件抽象:Grid,Block,Thread,Warp定义说明与硬件的映射执行细节 学生教室楼层的例子
一个Warp中的线程必然在同一个block中,如果block所含线程数目不是Warp大小的整数倍,那么多出的那些thread所在的Warp中,会剩余一些inactive的thread,也就是说,即使凑不够Warp整数倍的thread,硬件也会为Warp凑足,只不过那些thread是inactive状态,需要注意的是,即使这部分thread是inactive的,也会消耗SM资源。在执行功能上是没有问题的,那些不应该被执行分支的线程会被禁用,因此始终获得正确的结果,但是如果双方都很长,那么性能损失就很重要。转载 2024-09-08 18:07:44 · 169 阅读 · 0 评论 -
CUDA02 - 访存优化和Unified Memory
CUDA02 - 访存优化和Unified Memory - 猫猫子 - 博客园 (cnblogs.com)CUDA02 - 的内存调度与优化前面一篇(传送门)简单介绍了CUDA的底层架构和一些线程调度方面的问题,但这只是整个CUDA的第一步,下一个问题在于数据的访存:包括数据以何种形式在CPU/GPU之间进行通信、迁移,以及在GPU内部进行存储、访问。1 global 、shared 、constant、local通常来讲,待计算的数据都存放在内存或者硬盘(外部存储设备)中,由CPU转载 2024-09-07 23:13:25 · 185 阅读 · 0 评论 -
CUDA01 - 硬件架构、warp调度、指令流水线和cuda并发流
超级棒这一部分打算从头记录一下CUDA的编程方法和一些物理架构上的特点;从硬件入手,写一下包括线程束的划分、流水线的调度等等微结构的问题,以及这些物理设备是如何与软件对应的。下一部分会写一下cuda中的几种内存划分,进行数据同步,以及优化cuda运行效率的几种方法。转载 2024-09-07 23:01:46 · 129 阅读 · 0 评论