赞
踩
1.GPU硬件相关:
使用卡的型号:
总结一下英伟达显卡的型号,N卡自发展至今经历了这几个架构:
第一代G80:tesla架构
第二代:费米架构
第三代:开普勒架构
第四代:麦克斯韦架构
第五代:帕斯卡架构
其中我们所用到的设是1050ti、1080ti、和TITAN X。
其中1050ti的结构是6核(sm),每个sm中有128个计算单元(sp),共768个sp。
其中1080ti的结构是6个GPC,按照原GP102-350核心模板,应该是每个核5个SM,共30个SM,但对于1080ti消减了2个sm,共28个sm,每个sm中有128个计算单元(sp),共28*128=3584个sp。
TiTan X是30个SM,每个sm128个sp,共3840个sp。
思考:sp为什么不是“核”、"线程“?
答:sp事实上是最基本的逻辑运算单元,它完成的工作使它更像是一个加法器。
sm是逻辑处理的最小硬件结构,其中包含了逻辑控制单元、高速访存、和sp。一个sm,处理完一个block中的所有线程才会处理下一个block中的数据,因此我们进行划分时,最好保证每个block里的warp比较合理(分多个warp,threads个数是32的整倍数),那样可以一个sm可以交替执行里面的warp,从而提高效率。
此外,在分配block时,要根据GPU的sm个数,分配出合理的block数,让GPU的sm都利用起来,提利用率。分配时,也要考虑到同一个线程block的资源问题,不要出现对应的资源不够。
——进阶:一个sm内部通过warp分发器对来的命令(以warp为单位)分发到不同port(端口)上,一个port内部有16个sp,对于warp内的32个thread,需要for循环两次。
时间线概念,一个port的sp在一个时间片上完成一次逻辑运算,然后等待一定逻辑时钟周期得到本次运算的回馈值,才能做下一条运算,在等待的这段时间,该port的计算资源闲置了。为了避免它的闲置,硬件通过warp分发器将其他warp的指令分发到这个port上 。这是为什么一个block最好安排排出来多个warp(N*32threads)。
——二次进阶: 事实上,即使对于一个block中只有一个warp的情况,我们认为对于算法内部逻辑依赖较少的代码,编译器会自动识别哪些语句不存在相关性,warp在执行完这一条命令之后可以去获取其他命令,通过warp分发器再分发到prot上,而不一定在时间线上等待逻辑运算的返回值,从而复用计算资源。
https://blog.csdn.net/chhuach2005/article/details/39759165
语言基础,操作系统,计算机网络,数据库,设计模式,算法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。