我是GPGPU和CUDA的新手。从我的阅读中,在当代CUDA GPU上,线程被捆绑成32个线程的变形。变形中的所有线程都执行相同的指令,所以如果分支中存在分歧,所有线程基本上都花费相应的时间来获取所有发生的分支。然而,似乎在GPU上同时执行的不同warps可以具有不同的分支而没有这个成本,因为不同的warp是由单独的计算资源执行的。所以我的问题是,在发散不会导致这种情感的情况下,可以如此执行多少个并发变形...即,我应该在规格表中查找哪个编号。 “着色器处理器”的数量还是与此处相关的“流式多处理器”的数量?GPU编程模型 - 多少个同时发散的线程无惩罚
此外,AMD Radeon的相同问题:这里的相关术语可能是“统一着色器”和“计算单位”。
最后,假设我有一个跨线程高度分歧的工作负载,所以我基本上只想每个线程有一个线程。基本上使用GPU作为普通的多核CPU。这是可能的,我应该如何布置线程和线程块才能发生?我可以避免为warp中的31个冗余线程分配内存等。我意识到这可能不是GPGPU的理想工作负载,但它可用于在后台运行活动而不会阻塞主机CPU。