1

我正在尝试使用 cupy 加速一些 numpy 代码,但我得到了一些意想不到的结果。

我正在使用 NVIDIA GeForce GTX 1080 Ti 的 Mac Pro 2013 年末 OSX 10.13.6 上运行它。我已经能够在如下所示的 ipython 中重现错误。在确定范数时,共轭与自身的乘积应该给出一个实数。在 numpy 中这是符合预期的,但是使用 cupy 我最终得到了一个虚构的部分。

In [54]: import numpy as np
In [55]: import cupy as cp
In [56]: q = np.arange(4)                                                                                                                             
In [57]: q.shape=[2,2]                                                                                                                                
In [58]: q=(0.23+0.33j)*(q+0.43)                                                                                                                      
In [59]: np.dot(np.conj(q).flatten(),q.flatten())                                                                                                     
Out[59]: (3.21975528+0j)
In [60]: q_gpu = cp.asarray(q)                                                                                                                        
In [61]: cp.dot(cp.conj(q_gpu).flatten(),q_gpu.flatten())                                                                                             
Out[61]: array(3.21975528-1.93612215e-17j)
In [62]: cp.sum(cp.abs(q_gpu)**2)                                                                                                                     
Out[62]: array(3.21975528)
In [63]: sys.version                                                                                                                                  
Out[63]: '3.7.3 | packaged by conda-forge | (default, Jul  1 2019, 14:38:56) \n[Clang 4.0.1 (tags/RELEASE_401/final)]'
In [64]: sys.version_info                                                                                                                             
Out[64]: sys.version_info(major=3, minor=7, micro=3, releaselevel='final', serial=0)

我已经意识到在 cupy 和 numpy 中运行代码之间的其他精度不一致。

我究竟做错了什么?

4

0 回答 0