【发布时间】:2013-07-08 14:43:18
【问题描述】:
我在 pycuda 中有一个有效的共轭梯度方法实现,我想对其进行优化。它使用自写的矩阵向量乘法和 pycuda-native gpuarray.dot 和 gpuarray.mul_add 函数
使用kernprof.py/line_profiler 分析程序返回了大部分时间 (>60%),直到收敛花费在一个 gpuarray.dot() 调用中。 (约 0.2 秒)
gpuarray.dot() 的所有后续调用大约需要 7 微秒。所有调用都有相同类型的输入向量(大小:400 双精度)
有什么原因吗?我的意思是最后它只是一个常数,但它使分析变得困难。
我想在 pycuda 邮件列表中提问。但是我无法使用@gmail.com 地址订阅。如果有人对奇怪的.dot() 行为或我无法订阅该邮件列表有任何解释,请给我一个提示;)
【问题讨论】:
-
空闲的 GPU 经常有一个与之相关的“启动延迟”。这可能是由于将 GPU 从睡眠模式唤醒,或者仅仅是与创建 GPU CUDA 上下文相关的开销。有多种方法可以缓解这种情况。如果“第一次调用”实际上是代码中创建 GPU 上下文的第一件事,那么这可能是一种可能的解释。您可以尝试在您关心的第一个操作之前创建一个虚拟 GPU 操作,当然是在任何循环之前。
-
FWIW,订阅列表确实可以从 GMail 工作——我认为。检查您的垃圾邮件文件夹中是否有订阅确认电子邮件。
-
感谢您的输入,是的,它在垃圾邮件文件夹中。不应该使用我无法处理我猜想的界面的邮件提供商。感谢您,给您带来的不便,我们深表歉意
标签: python cuda pycuda mailing-list