GPU资源分配

GPU 的计算核心是以一定数量的 Streaming Processor(SP) 组成的处理器阵列, NV 称之为 Texture Processing Clusters(TPC) ,每个 TPC 中又包含一定数量的 Streaming Multi-Processor(SM) ,每个 SM 包含 8 SP SP 的主要结构为一个 ALU (逻辑运算单元),一个 FPU (浮点运算单元)以及一个 Register File( 寄存器堆 ) SM 内包含有一个 Instruction Unit 、一个 Constant Memory 、一个 Texture Memory 8192 Register 、一个 16KB Share Memory 8 Stream Processor(SP) 和两个 Special Function Units SFU )。( GeForce9300M GS 只拥有 1 SM  Thread CUDA 模型中最基本的运行单元,执行最基本的程序指令。 Block 是一组协作 Thread Block 内部允许共享存储,每个 Block 最多包含 512 Thread Grid 是一组 Block ,共享全局内存。 Kernel 是在 GPU 上执行的核心程序,每一个 Grid 对应一个 Kernel 任务。 在程序运行的时候,实际上每 32 Thread 组成一个 Warp ,每个  warp  块都包含连续的线程,递增线程  ID  Warp MP 的基本调度单位,每次运行的时候,由于 MP 数量不同,所以一个 Block 内的所有 Thread 不一定全部同时运行,但是每个 Warp 内的所有 Thread 一定同时运行。因此,我们在定义Block Size 的时候应使其为 Warp Size 的整数倍,也就是 Block Size 应为 32 的整数倍。理论上 Thread 越多,就越能弥补单个 Thread 读取数据的 latency  ,但是当 Thread 越多,每个 Thread 可用的寄存器也就越少,严重的时候甚至能造成 Kernel 无法启动。因此每个 Block 最少应包含 64 Thread ,一般选择 128 或者 256 ,具体视 MP 数目而定。一个 MP 最多可以同时运行 768 Thread ,但每个 MP 最多包含 8 Block ,因此要保持 100% 利用率, Block 数目与其 Size 有如下几种设定方式: Ø 2 blocks x 384 threads Ø 3 blocks x 256 threads Ø 4 blocks x 192 threads Ø 6 blocks x 128 threads Ø 8 blocks x 96 threads
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值