如果每个SM有一个48kB共享内存,并且我创建了一个内核,我在共享内存中分配32kB,这意味着一个SM上只能同时运行一个块?
答案 0 :(得分:3)
是的,这是正确的。
共享内存必须支持所有“常驻”线程块的“足迹”。为了在SM上启动线程块,必须有足够的共享内存来支持它。如果没有,它将等到当前正在执行的线程块完成。
Maxwell GPUs(cc 5.0,5.2)到达时有一些细微差别。这些GPU支持64KB(cc 5.0)或96KB(cc 5.2)的共享内存。在这种情况下,单个线程块可用的最大共享内存仍限制为48KB,但在单个SM上,多个线程块可能总共使用48KB以上。这意味着cc 5.2 SM可以支持2个线程块,即使两者都使用32KB共享内存。