我读过warp中的线程数可以是32或更多。这是为什么?如果数量小于32个线程,这是否意味着资源未得到充分利用,或者我们无法容忍内存延迟?
答案 0 :(得分:2)
你的问题需要澄清 - 也许你会混淆CUDA" warp"和"阻止"概念
关于warp,记住warp及其大小是硬件的属性非常重要。 Warps是一组硬件线程,每个周期执行相同的指令(现在)。换句话说,大小宽度表示SIMD样式的执行宽度,这是程序员无法改变的。在CUDA中,您可以启动线程块,这些线程在映射到硬件时会以经线大小的串行执行。如果你开始的块的线程数不能被warp大小整除,那么硬件只会用一些线程执行最后一次warp"屏蔽掉" (即它们必须执行,但对GPU /内存的状态没有任何影响)。
有关详细信息,建议您仔细阅读hardware and execution-related sections of the CUDA programming guide。