也许我错过了一些东西。我正在使用 pycuda,我有以下矩阵 m_gpu:
>>> m_gpu
array([[ 0., 2., 4., 1., 3.],
[ 2., 0., 5., 2., 1.],
[ 4., 5., 0., 3., 2.],
[ 1., 2., 3., 0., 4.],
[ 3., 1., 2., 4., 0.]], dtype=float32)
我打印出第一列和第二行以进行完整性检查:
>>> m_gpu[:,1]
array([ 2., 0., 5., 2., 1.], dtype=float32)
>>> m_gpu[2,:]
array([ 4., 5., 0., 3., 2.], dtype=float32)
然后我进行元素比较以返回一个最大值数组,这是错误的,因为第三个元素应该是“5”但它是“1”:
>>> gpuarray.maximum(m_gpu[:,1], m_gpu[2,:])
array([ 4., 5., 1., 3., 2.], dtype=float32)
可能是 gpuarray.maximum 中的错误?似乎不太可能。我使用常规 numpy 执行相同的操作,它返回正确的值。在 Windows 上使用 pycuda-2017.1.1+cuda8061-cp27。帮助?谢谢。