Theano中是否有GPU加速的numpy.max(X,axis = 0)实现?

hrs*_*hrs 5 numpy pycuda theano deep-learning

我们是否numpy.max(X, axis=None)在Theano 版本中加速了GPU .我查看了文档并发现theano.tensor.max(X, axis=None),但它比numpy实现慢4-5倍.

我可以向你保证,由于矩阵尺寸选择不当,它并不慢.theano.tensor.exp下的相同矩阵比其numpy对应物快40倍.

有什么建议?

nou*_*uiz 5

以前的答案是不完整的.该建议不应该起作用,因为解决方案是最终编译代码中使用的.有优化可以自动进行此转换.

问题的标题与内容不同.它们因轴参数而不​​同.我会回答这两个问题.

如果轴为0或无,我们在GPU上支持矩阵的操作.如果轴是None,我们有一个基本的实现没有很好地优化,因为它更难并行化.如果轴为0,我们有一个基本实现,但它更快,因为它更容易并行化.

另外,你是如何做你的时间的?如果您只使用该操作创建一个函数并通过device = gpu标志进行测试以进行比较,则将包括CPU和GPU之间的传输时间.这是一个内存绑定操作,所以如果你在调整中包含传输,personnaly我不希望任何速度操作.要仅查看GPU操作,请使用Theano profiler:使用Theano标志profile = True运行.

  • 正如我在答案中试图说的那样,如果您将转移时间包含在任何系统中,我认为您无法加速最大限度的减少,而不仅仅是Theano.为了减少CPU,瓶颈是从内存中读取.执行传输到GPU的速度较慢,然后通过CPU内核从CPU内存读取.如果您希望GPU加速包括传输,则需要在GPU上进行更多计算. (2认同)