Cuda 为什么GK110有192个芯和4个翘曲?

Cuda 为什么GK110有192个芯和4个翘曲?,cuda,kepler,Cuda,Kepler,我想感受一下开普勒的建筑,但这对我来说毫无意义 如果一个warp是32个线程,其中4个线程被调度/执行,这意味着128个内核正在使用,64个处于空闲状态。在白皮书中,它提到了一些关于独立指令的内容,那么64核是为这些指令保留的吗 如果是的话,有人能给我举个例子,说明什么时候需要独立的指导吗 开普勒中的每个SM都有192个(SP)内核和4个warp调度程序。每个warp调度程序都能够双重发布,这意味着在某些情况下,它可以在单个发布槽中从给定的threadblock(实际上是针对特定的warp)发出

我想感受一下开普勒的建筑,但这对我来说毫无意义

如果一个warp是32个线程,其中4个线程被调度/执行,这意味着128个内核正在使用,64个处于空闲状态。在白皮书中,它提到了一些关于独立指令的内容,那么64核是为这些指令保留的吗

如果是的话,有人能给我举个例子,说明什么时候需要独立的指导吗

开普勒中的每个SM都有192个(SP)内核和4个warp调度程序。每个warp调度程序都能够双重发布,这意味着在某些情况下,它可以在单个发布槽中从给定的threadblock(实际上是针对特定的warp)发出2条指令

其中一种情况是指令应该是独立的,粗略地说,这意味着niether指令依赖于另一条指令的输出

有了4个warp调度程序,每个都可能有双重问题,理论上最多可以启动8条warp指令。这至少在理论上足以让192个(SP)内核保持忙碌

SM除了通常被称为“核心”的SP单元外,还有执行单元,因此实际的指令组合将决定在任何给定的发布槽中调度哪些执行单元


您可以在中获得更详细的说明。

谢谢您的回复,但假设启动了8个(SP)扭曲,6个可以一起执行,另外2个必须等待下一个周期?是,调度程序不会选择8条SP warp指令在一个周期内启动。@Peezy-为了澄清开普勒和maxwell的问题,每个warp调度程序(每个SM 4条)将选择1条它管理的warp,并从所选warp发出1或2条指令。warp计划程序不能在同一周期中从两个不同的warp发出指令。这就是为什么Robert一直使用术语“warp指令”。@GregSmith因此基本上每个调度器都负责一个warp,但是调度器如何决定是否启动2条指令,例如,一个调度器如何知道另一个调度器何时启动2条指令?它们能相互通信吗?一个warp在启动时分配给warp调度程序。每个扭曲调度器负责一组扭曲(16个用于开普勒/麦克斯韦,24个用于费米)。在每个周期,warp计划程序将选择一个合格的warp(未暂停),并发出1或2条指令。双重发布取决于指令组合和管道可用性。每个warp计划程序都有自己的数学管道。对于共享管道(如LSU),有一个未记录的仲裁方案。