与CPU代码相比,我的内核代码比CPU快10倍.
但我对我的实验有疑问.
我的程序是否完全使用所有GPU内核,适当的共享内存使用,足够的寄存器数量,足够的占用率进行优化?
如何评估内核代码的性能?
如何从理论上计算出CUDA的最大吞吐量?
我是对的比较CPU的GFLOPS和GPU的GFLOPS和GFLOPS率之间的透明理论性能吗?
提前致谢.
Does my program fully be optimized using all GPU cores, proper shared memory use, adequate register count, enough occupancy?
要找到它,请使用其中一个CUDA分析器.见How Do You Profile & Optimize CUDA Kernels?
How can I calcuate CUDA’s maximum throughput theoretically?
这个数学有点牵扯,每个架构都有所不同,容易出错.最好查看芯片规格中的数字.维基百科上有表格,例如this one, for the GTX500 cards.例如,您可以从表中看到GTX580的理论峰值带宽为192.4GB / s,计算吞吐量为1581.1GFLOP.
Am I right that compare between CPU’s GFLOPS and GPU’s GFLOPS and GFLOPS rate is transparent theoretical performance of them?
如果我理解正确的话,你问的是GPU上的理论峰值GFLOP数量是否可以直接与CPU上的相应数字进行比较.比较这些数字时需要考虑一些事项:
>较旧的GPU不支持双精度(DP)浮点,仅支持单精度(SP).>与SP相比,支持DP的GPU会显着降低性能.我上面引用的GFLOP数字是SP.另一方面,CPU引用的数字通常用于DP,并且CPU上SP和DP的性能差异较小.> CPU报价可以是仅在使用SIMD(单指令,多数据)矢量化指令时可实现的速率,并且通常很难编写可接近理论最大值的算法(并且它们可能必须在汇编中写入).有时,CPU引用是通过不同类型的指令可用的所有计算资源的组合,并且通常几乎不可能编写可以同时利用它们的程序.> GPU引用的速率假设您有足够的并行工作来使GPU饱和,并且您的算法不受带宽限制.