据我所知,在CUDA中,同一块中的32个相邻线程将被安排为warp.但我经常发现一些教程CUDA代码有多个块,每个块有1个线程.在这个模型中,来自32块的32个线程是否会被安排为warp?如果没有,我可以说这个模型不如每个块组织成32个线程一样有效吗?谢谢!
不,不能在同一个warp中安排来自不同块的线程.如果仅使用单个线程创建线程块网格,则肯定无法从计算机获得完整性能.它的效率低于每块32个(或32的整数倍)线程.例如,Fermi SM具有可以使用的32个经线.如果您正在调度单个线程的块,那么在任何给定时间,这32个通道中只有一个可以使用.
线程具有线程ID(threadIdx内置变量),该线程ID在单个块内定义(并且仅对其唯一).
C编程指南的硬件多线程部分给出了一个公式,该公式定义了单个块中的warp总数.
归档时间: |
|
查看次数: |
179 次 |
最近记录: |