CUBLAS dgemm性能查询

时间:2012-01-03 13:17:19

标签: performance cuda blas cublas

这是我在4个GPU上运行cublas DGEMM的结果,每个GPU使用2个流(Tesla M2050):

enter image description here

我测试了我的结果,他们没事;与使用默认流的版本相比,我担心我获得的Gflops值很高。我正在使用以下公式计算Gflops:

Gflops = {2.0*10^-9*(N^3+N^2)}/elapsed_time_in_s

对于使用多个流的版本,我是否需要以任何方式修改此公式?

HtoD-ker-DtoH是主机到设备数据传输,内核执行和设备在几秒钟内主机数据传输所花费的时间(这是上面公式的分母)。 Crosspost到Nvidia论坛 - http://forums.nvidia.com/index.php?showtopic=219910&st=0#entry1350908

编辑:在@talonmies的评论之后,我在计算时间之前添加了cudaStreamSynchronize,结果如下:

enter image description here

谢谢,

萨扬

1 个答案:

答案 0 :(得分:3)

单个C2050可提供大约550 GFLOP / s峰值,或大约2200 GFLOP / s(4个峰值,双精度),而DGEMM远低于峰值),所以我猜你的时序在流情况下是错误的(可能在默认流情况下同步的东西现在是异步的。无论你如何进行计算,FLOP / s计算都不应该改变。

我会检查您的代码,以确保您使用的任何计时机制都与您启动的所有流同步,或者通过所有流中的cudaStreamWaitEvent机制,或者每个流cudaStreamSynchronize。在GPU完成CUBLAS操作之前,您可能会尝试计算时间的时间偏差。