pycuda.gpuarray.dot()第一次调用时速度很慢

时间:2013-07-10 15:19:50

标签: python cuda pycuda mailing-list

我在pycuda中有一个工作的conjungate梯度方法实现,我想优化。它使用自写矩阵向量乘法和pycuda原生gpuarray.dotgpuarray.mul_add函数

使用kernprof.py/line_profiler对程序进行概要分析返回大部分时间(> 60%),直到在一次gpuarray.dot()来电中收敛。 (约.2秒) 以下gpuarray.dot()的所有呼叫大约需要7微秒。所有调用都具有相同类型的输入向量(大小:400双精度)

有什么理由吗?我的意思是最后它只是一个常数,但它使分析变得困难。 我想在pycuda邮件列表上提问。但是我无法订阅@ gmail.com地址。如果有人对奇怪的.dot()行为有解释或者我无法订阅该邮件列表,请给我一个提示;)

1 个答案:

答案 0 :(得分:2)

一个原因是Pycuda在上传之前正在编译内核。据我所知,只有在第一次执行它时才会发生。

一种解决方案可能是通过执行一次“预热”内核然后启动分析过程。