一个 MFLOPS (megaFLOPS)等于每秒一佰万(=10^6)次的 浮点运算 ,
一个 GFLOPS (gigaFLOPS)等于每秒十亿(=10^9)次的浮点运算,
一个 TFLOPS (teraFLOPS)等于每秒一万亿(=10^12)次的浮点运算,(1太拉)
一个 PFLOPS ( petaFLOPS )等于每秒一千万亿(=10^15)袭铅搜次的浮点运算,
一个EFLOPS( exaFLOPS )等于每秒一佰京(=10^18)次的浮点运激拆算。
浮点计算峰值=处理器个数×处理器主频×每秒可进行的最高浮点运算次数(FMAD,乘加指令)
如下图所示:G80以及至今所有nvidia GPU的流处理器内部有两个ALU单元。
流处理器工作频率 x 流处理器数量 x 每流处理器的FLOPs数量(2个)=总数
每流处理器的FLOPs数量 == 指令吞吐率 = 2
sp可以做一个乘法一个加法
kepler:2880*0.745*2=4290Gflops频率无需x2 sp频率和核心频率相同
fermi: 512*0.650*2*2=1330Gflops 频率需x2 sp频率是核心频率的2倍
CUDA 中FLOPS的计算方法如下:
(1)统计您每个线程的计算次数
(2)将此值乘以您的线程总数
(3)统计出总时间(利用profiler或者自己计时),将2中的值(所有线程的计算次数)除以计算时间,您将得到每秒的计算次数。
(4)因为3中的值往往较大,所以大家一般使用GFlops来衡量(Giga float operations per second),
1G次运算 = 10 ^ 9次方次运算。
参考:
以下均不考虑activation function。
Ci=input channel, k=kernel size, HW=output feature map size, Co=output channel.
2是因为一个MAC算2个operations。不考虑bias时有-1,有bias时没有尘信-1。
上面派稿轮针对一个input feature map,没考虑batch size。
I=input neuron numbers, O=output neuron numbers,2是因为一敬凳个MAC算2个operations。不考虑bias时有-1,有bias时没有-1。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)