-1

正如 fermi 白皮书所建议的那样,有 16 个 SM(流式多处理器),而每个 SM 由 32 个内核组成。gpu 执行一组 32 个线程中的一个线程,称为 warp。

第一个问题:我是否正确地假设,每个扭曲都可以被视为类似于向量宽度的东西,这意味着:我可以在 32 个“数据”上并行执行一条指令?

如果是这样,这是否意味着费米架构总共允许对 16 * 32 = 512 个数据并行执行操作,而 16 个操作可以分别不同?

如果是这样,它可以在一秒钟内并行执行512个数据多少次?

4

1 回答 1

2

第一个问题:我是否正确地假设,每个扭曲都可以被视为类似于向量宽度的东西,这意味着:我可以在 32 个“数据”上并行执行一条指令?

是的。

如果是这样,这是否意味着费米架构总共允许对 16 * 32 = 512 个数据并行执行操作,而 16 个操作可以分别不同?

是的,可能,取决于操作类型。GPU SM 包括处理不同类型的操作(指令)的功能单元。例如,整数加法可能不会由与浮点加法相同的功能单元处理。由于不同的操作由不同的功能单元处理,并且由于没有特别要求GPU SM为每个指令(类型)包含32个功能单元,因此具体的吞吐量将取决于指令。但是,您所指的 32 个功能单元可以处理float加法、乘法或乘法加法。所以对于那些特定的操作类型,你的计算是正确的。

如果是这样,它可以在一秒钟内并行执行512个数据多少次?

这是由时钟速率除以服务指令的时钟数得出的。例如,对于 32 个 FP 添加单元,GPU 理论上可以在单个时钟周期内为 512 个“数据”淘汰其中一个。如果有另一个操作,例如整数加法,它只有 16 个功能单元来服务它,那么它将需要 2 个时钟来服务它整个 warp-wide。所以我们将这个数字除以 2。如果你有混合操作,比如在 8 个 SM 上发出 8 个浮点加法,在其他 8 个 SM 上发出 8 个整数加法,那么你可能会有更复杂的计算.

以这种方式计算理论最大浮点吞吐量。例如,Fermi M2090 启用了所有 16 个 SM,声称FP32 运算的峰值理论吞吐量为 1332 GF/s。该计算如下:

 16 SMs * 32 functional units/SM * 2 ops/functional unit/hotclk * 2 hotclock/clk * 651M clks/sec = 1333GF/s FP32
于 2022-01-31T19:49:11.340 回答