3.8 SUMMARY

Kerel执行配置参数定义了grid及其块的尺寸。blockldx和threadldx中的唯一坐标允许网格的线程识别自己及其数据域。程序员有责任在内核函数中使用这些变量,以便线程能够正确识别要处理的数据部分。这种编程模式迫使程序员将线程及其数据组织到分层和多维组织中。

一旦启动网格,其块可以按任意顺序分配给SM,从而实现CUDA应用程序的透明可扩展性。透明的可扩展性有一个限制:不同块中的线程不能相互同步为了使内核保持透明的可扩展性,不同块中的线程相互同步的简单方法是终止内核,并在同步点后为活动启动一个新的内核。

**线程被分配给SM,以便逐个块执行。**每个CUDA设备对每个SM的可用资源量施加了潜在的不同限制。每个CUDA设备对每个SM可以容纳的块数量和线程数量设置限制,以先成为限制者为准。对于每个内核,其中一个或多个资源限制可以成为同时驻留在CUDA设备中的线程数量的限制因素。

一旦一个块被分配给一个SM,它就会被进一步分割成warp。warp中的所有线程都具有相同的执行时间。在任何时候,SM只执行其常驻warp的一小部分的指令。这个条件允许其他warp等待长延迟操作,而不会减慢大量执行单元的整体执行吞吐量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值