Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Numba python3获取错误[GPU ufunc要求数组参数具有确切的类型。]_Python_Python 3.x_Numpy_Numba - Fatal编程技术网

Numba python3获取错误[GPU ufunc要求数组参数具有确切的类型。]

Numba python3获取错误[GPU ufunc要求数组参数具有确切的类型。],python,python-3.x,numpy,numba,Python,Python 3.x,Numpy,Numba,我正在尝试使用numba在我的GPU上执行np.diff。 这是我使用的脚本 import numpy as np import numba @numba.vectorize(["float32(float32, float32)"], target='cuda') def vector_diff_axis0(a, b): return a + b def my_diff(A, axis=0): if (axis == 0): return vector_di

我正在尝试使用numba在我的GPU上执行np.diff。
这是我使用的脚本

import numpy as np
import numba

@numba.vectorize(["float32(float32, float32)"], target='cuda')
def vector_diff_axis0(a, b):
    return a + b

def my_diff(A, axis=0):
    if (axis == 0):
        return vector_diff_axis0(A[1:], A[:-1])
    if (axis == 1):
        return vector_diff_axis0(A[:,1:], A[:,:-1])

A = np.matrix([
    [0, 1, 2, 3, 4],
    [5, 6, 7, 8, 9],
    [9, 8, 7, 6, 5],
    [4, 3, 2, 1, 0],
    [0, 2, 4, 6, 8]
    ], dtype='float32')

C = my_diff(A, axis=1)
print (str(C))
这是我得到的错误

TypeError: No matching version.  GPU ufunc requires array arguments  
to have the exact types.  This behaves like regular ufunc with casting='no'.
有人知道原因吗

PS:我用这个视频来做我的脚本;

编辑: 谢谢你的快速回答

我在np.matrix中添加了dtype='float32',但现在出现了这个错误; 已知签名: *(float32,float32)->float32 文件“”,第5行 [1] 期间:解析被调用方类型:函数( 签名=(float32,float32)->float32>) [2] 期间:在(5)处键入呼叫


我还尝试在签名中使用float32[:],但它不起作用,在我随后的视频中,他们没有这样做

矩阵的数据类型将是
int32
,这与
向量差异轴0
的签名不匹配,因为它需要
float32
。您需要使矩阵
float32
,即在调用
np.matrix
时传递参数
dtype='float32'