1.硬件和软件术语的对应
硬件 | 软件 |
1.1 SP | 1.2 thread |
1.3 SM | 1.4 blocks(很多block构成一个SM) |
1.5device | 1.6 Grid |
1.1SP 是最基本的处理单元,指令和任务最后都是在这里处理, 并行说的也是很多个SP(线程)同时进行
1.2一个SP会执行一个thread,一个thread里会有:instruction,address,counter,状态寄存器,执行路径
1.3SM 可以类比成CPU
CPU | SM |
RAM | shared memory |
register | register |
时钟 | warp scheduler |
ALU | SP |
1.4block,由很多个thread构成,可以通过共享内存通信,
1.6更多个block构成一个Grid(很多个SM构成了GPU device)
2.warp:很多个thread构成一个warp。在同一个warp里的线程,以不同的数据资源执行相同的指令
一个warp是调度和运行的基本单位
(为啥不直接调度block或者thread呢,我才是因为thread单位太小,而block可能又太大,所以才在中间加了这么一个单位,这个是可以被设定好的,我们不能改的单位大小,
那一个block到底有多少个thread呢?是我们自己可以设定的,凡是可自己定义的,都会有优劣之分)
3.一个warp执行时候需要占用整个SM,啥意思?就是我一个SM中可能有贼多个warp,但是我每次只能翻一个warp的牌子,多了受不了,等这个warp执行完了,warp scheduler再调度下一个,所以!一个GPU上驻留线程(resident thread)最多有SM的个数乘上warp个(什么是驻留线程,就是正在工作而非闲置的线程)
4.软件层面上来讲,thread是被分进block里的,block是被分进Grid里的
5.一个warp中的thread可以以任意顺序执行,切换warp是没有什么消耗的(无需保存或读取上下文),而CPU中切换线程是需要的