CUDA架构围绕可扩展的多线程流式多处理器(SM)阵列构建。当主机CPU上的CUDA程序调用内核网格时,将枚举网格块并将其分配给具有可用执行容量的多处理器。线程块的线程在一个多处理器上并发执行,并且多个线程块可以在一个多处理器上并发执行。当线程块终止时,在空出的多处理器上启动新块。
这是否意味着如果我有一个2个多处理器x n-cuda核心的视频卡,并且如果启动了像
这样的内核MyKernel<<<1,N>>>(sth);
其中一个多处理器将处于空闲状态,因为我正在启动一个N个线程的块?
答案 0 :(得分:2)
你是对的。
在所有当前的CUDA架构中,只能在一个多处理器上调度和运行块。如果在具有多个多处理器的设备上运行一个块,则除这些多处理器之外的所有多个处理器都将处于空闲状态。