GPU 相关的基础知识

整理了认为了解GPU,比较重要的几个概念
###CPU与GPU的区别
CPU需要很强的通用性来处理各种不同的数据类型,还需要进行多种逻辑判断,引入大量的分支跳转和中断处理。GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境,如
下图所示(绿色的是计算单元,橙红色的是存储单元,橙黄色的是控制单元),与CPU擅长逻辑控制、串行的运算、通用类型数据运算不同,GPU擅长的是大规模并发计算,GPU的工作部分计算量大,但没有什么技术含量,
而且需要重复很多次。CPU与GPU相比就类似 教授和小学生,教授积分微分都会算,小学生只会算加减乘除。唯一的限制是,运行在GPU的计算任务可以拆分为多个相同的简单小任务,而且是相互独立的。现在的GPU也能做一些
稍微复制的工作,相当于升级成初中生高中生的水平,但是还需要CPU配合才可以,终究还是需要靠GPU来管理。

GPU上适合运行计算密集型的程序和易于并行的程序

avatar

###SP SM Thread Block grid warp
SP(streaming processor):最基本的处理单元,最终的指令和任务都是在SP上执行,GPU的并行计算,即多个SP同时做处理,一个SP 对应一个thread
warp:SM调度和执行的基础概念,同时也是一个硬件概念,一个SM中的SP会分成几个warp(SM中的SP进行分组)
SM(streaming multiprocessor):多个SP加上一些其他资源组成SM,其他资源包括存储资源、共享内存、寄存器

###GPU Memory

###GPU P2P

###RDMA

###CUDA

###NVLINK

###NCCL