首页 > 其他分享 >GPU中的几个基本概念

GPU中的几个基本概念

时间:2023-01-20 11:39:45浏览次数:37  
标签:thread 几个 32 warp 线程 memory GPU 基本概念 block



物理概念:

streaming processor(sp): 最基本的处理单元。GPU进行并行计算,也就是很多个sp同时做处理。现在SP的术语已经有点弱化了,而是直接使用thread来代替。一个SP对应一个thread
Warp:warp是SM调度和执行的基础概念,通常一个SM中的SP(thread)会分成几个warp(也就是SP在SM中是进行分组的,物理上进行的分组),一般每一个WARP中有32个thread.这个WARP中的32个thread(sp)是一起工作的,执行相同的指令,如果没有这么多thread需要工作,那么这个WARP中的一些thread(sp)是不工作的
每一个线程都有自己的寄存器内存和local memory,一个warp中的线程是同时执行的,也就是当进行并行计算时,线程数尽量为32的倍数,如果线程数不上32的倍数的话;假如是1,则warp会生成一个掩码,当一个指令控制器对一个warp单位的线程发送指令时,32个线程中只有一个线程在真正执行,其他31个 进程会进入静默状态。)
streaming multiprocessor(sm):多个sp加上其他的一些资源组成一个sm, 其他资源也就是存储资源,共享内存,寄储器等。可见,一个SM中的所有SP是先分成warp的,是共享同一个memory和instruction unit(指令单元)。从硬件角度讲,一个GPU由多个SM组成(当然还有其他部分),一个SM包含有多个SP(以及还有寄存器资源,shared memory资源,L1cache,scheduler,SPU,LD/ST单元等等)

软件概念:

thread–>block–>grid:
CUDA在执行的时候是让host里面的一个一个的kernel按照线程网格(Grid)的概念在显卡硬件(GPU)上执行。当要执行这些任务的时候,每一个Grid又把任务分成一部分一部分的block,block再分线程来完成。每个Grid中的任务是一定的。二维线程块的索引关系为如下:
unsigned int xIndex = blockDim.x * blockIdx.x + threadIdx.x;
unsigned int yIndex = blockDim.y * blockIdx.y + threadIdx.y;

GPU中的几个基本概念_寄存器

cuda内存模型

GPU中的几个基本概念_cuda_02


每个 thread 都有自己的一份 register 和 local memory 的空间。

一组thread构成一个 block,这些thread 则共享有一份shared memory。

所有的 thread(包括不同 block 的 thread)都共享一份global memory、constant memory、和 texture memory。

不同的 grid 则有各自的 global memory、constant memory 和 texture memory。

每一个时钟周期内,warp(一个block里面一起运行的thread,其中各

个线程对应的数据资源不同(指令相同但是数据不同)包含的thread数量是有限的,现在的规定是32个。一个block中含有16个warp。所以一个block中最多含有512个线程.每次Device(就是GPU)只


标签:thread,几个,32,warp,线程,memory,GPU,基本概念,block
From: https://blog.51cto.com/u_15202985/6020563

相关文章

  • 主析取范式DNF以及离散数学的一些基本概念
    1、命题:能判断真假的陈述句为命题2、命题公式:若在复合命题中,p\q\r等不仅可以代表命题常项,还可以代表命题变项,这样的复合命题形式称为命题公式3、命题的赋值:A为命题公式,p......
  • 前两天刚接触Linux系统,想请教几个问题
    因为需要安装一个库,所以开始配置Linux系统,下载了Ubuntu22.04,但是这个下载后一打开就只有一个终端界面,而且网上找到的快捷键方式都不适用,这个正常吗?还有就是我在浏览器进官......
  • HBASE列族不能太多的真相 (一个table有几个列族就有几个 Store)
    HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了table中的一个region,HRegion中由多个HStore组成。每个HStore对应了Table中的一个columnfamily的存储,可以看......
  • 线性空间的基本概念与定理1
    线性空间的基本概念与定理1.线性空间:给定集合$V$与数域$\mathbb{K}$,在$V$上定义加法运算$"+"$,以及数域$\mathbb{K}$与集合$V$之间的数乘运算,并要求上述加法运算满足交换......
  • Kubernetes 基本概念
    ContainerContainer(容器)是一种便携式、轻量级的操作系统级虚拟化技术。它使用namespace隔离不同的软件运行环境,并通过镜像自包含软件的运行环境,从而使得容器可以很方便的......
  • ubuntu16.04安装Nvidia显卡驱动,CUDA8.0,cuDNN6,TensorFlow-gpu
    ​​WelcomeToMyBlog​​​实验室学姐让跑一个深度学习模型的程序,需要配置环境,查阅各种资料后安装成功,记录一下安装过程,确实挺刺激,也算是开启了自己的深度学习之......
  • 【纠错编码原理】1-纠错编码的基本概念:简单入门
    纠错编码的基本概念纠错编码就是在信息序列中加入一些冗余码元,组成一个相关的码元序列——码字,译码时利用码元之间的相关性质类检测错误和纠正错误。不同的纠错编码方法有......
  • 几个《软件方法》测试链接,欢迎有空自测,争取做到全对
    几个《软件方法》测试链接,欢迎有空自测,争取做到全对!《软件方法》第1章测试1​​http://www.umlchina.com/book/quiz1_1.htm​​​《软件方法》第1章测试2​​http://www.uml......
  • win11配置深度学习环境GPU
    参考网址:https://zhuanlan.zhihu.com/p/460806048CUDA11.6 + CUDNN+ Anaconda+ pytorch 电脑信息RTX2060GPU01.CUDA11.61.1 确认信息C:\Users\thzn>n......
  • ifc 基本概念
    基本概念和假设该规范包括定义数据类型的模式,以及指示数据类型在特定场景中的使用的常见概念。本章定义了此类通用概念,适用于具有特定用途的实体。这样的概念也构成了模型......