1

我在 pycuda 中有一个有效的共轭梯度方法实现,我想对其进行优化。它使用自写的矩阵向量乘法和 pycuda-nativegpuarray.dotgpuarray.mul_add函数

kernprof.py/line_profiler在一次调用中使用最多返回时间 (>60%)的程序进行分析,直到收敛花费gpuarray.dot()。(大约 0.2 秒)所有后续调用gpuarray.dot()大约需要 7 微秒。所有调用都具有相同类型的输入向量(大小:400 双打)

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

4

1 回答 1

2

一个原因是 Pycuda 在上传内核之前对其进行编译。据我记得认为这应该只在它第一次执行时发生。

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

于 2013-07-10T21:18:08.710 回答