List of Nvidia GPU - GeForce 900 Series - 有写道:
4单精度性能计算为 2次的数量 着色器乘以基本核心时钟速度。
即。例如,对于GeForce GTX 970,我们可以计算性能:
1664核心* 1050 MHz * 2 = 3 494 GFlops峰值(3 494 400 MFlops)
我们可以在列中看到这个值 - 处理能力(峰值)GFLOPS - 单精度。
但为什么我们必须乘以2 ?
写有:http://devblogs.nvidia.com/parallelforall/maxwell-most-advanced-cuda-gpu-ever-made/
SMM使用基于象限的设计,具有四个32核处理块 每个都有一个专用的warp调度程序,能够调度两个 每个时钟的说明。
好的,nVidia Maxwell是超标量体系结构,每个时钟发送两条指令,但1个CUDA核心(FP32-ALU)每个时钟可以处理多于1条指令吗?
我们知道1个CUDA-Core包含两个单元:FP32-unit和INT-unit。但INT-unit与GFlops无关( FLoating-point 每秒操作数)。
即。一个SMM包含:
要获得 GFlops 的预告,我们应该只使用:128个FP32单位和32个SFU单位。
即。如果我们同时使用128个FP32单元和32个SFU单元,那么我们每个SM每个时钟可以获得160个带浮点运算的指令。
即。我们必须有多个 by 1,2 =(160/132)的instad of 2。
1664核心* 1050 MHz * 1,2 = 2 096 GFlops峰值
为什么在wiki中写入我们必须多个核心* MHz乘以2?
答案 0 :(得分:6)
CUDA“核心”(也称为SP)通常是指SM(流式多处理器)中的单精度浮点单元。 CUDA内核可以在每个时钟周期启动一个单精度浮点指令。 (该单元是流水线的,因此它可以每个时钟启动一条指令,并且每个时钟可以退出一条指令,但它不能在给定的时钟周期内完全处理给定的指令。)
如果该指令是例如单精度加法或单精度乘法,则该核可以为每个时钟贡献一个浮点操作,因为加或乘计为一个浮点运算。另一方面,如果指令是FMA指令(浮点乘加),则核心将在同一时间段内执行浮点乘法 AND 浮点加法运算。这意味着有效的两个操作由一个指令执行。在计算峰值理论吞吐量时,FMA的这种使用会产生2乘数。
因此,核心只能处理(即启动,退出)每个时钟的单个指令,但如果该指令是FMA,则计为两个浮点运算。