我正在尝试使用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中运行代码之间在精度方面存在其他不一致之处。
我在做什么错了?