Python:使用Numba在GPU上执行简单函数`带参数的*的用法无效(数组(float64、1d、C、float64)`

Python:使用Numba在GPU上执行简单函数`带参数的*的用法无效(数组(float64、1d、C、float64)`,python,cuda,numba,Python,Cuda,Numba,我正在尝试使用target='cuda'运行以下与Numba Nopyton兼容的函数: 如何进行乘法运算?您可能需要类似以下内容: for j in range(L): out[j, n + 1] = X[j] * out[j, n] - n * out[j, n - 1] 但是请注意,编写这个内核的整个过程都是徒劳的。引述有关资料: 为了获得最佳性能,用户应该编写这样的代码:每个线程 一次处理一个元素 您编写的内核将是完全串行的。它将比CPU版本慢。您需要以完全不同的方式编写代码,

我正在尝试使用target='cuda'运行以下与Numba Nopyton兼容的函数:


如何进行乘法运算?

您可能需要类似以下内容:

for j in range(L):
    out[j, n + 1] = X[j] * out[j, n] - n * out[j, n - 1]
但是请注意,编写这个内核的整个过程都是徒劳的。引述有关资料:

为了获得最佳性能,用户应该编写这样的代码:每个线程 一次处理一个元素


您编写的内核将是完全串行的。它将比CPU版本慢。您需要以完全不同的方式编写代码,才能使其在GPU上具有任何价值。

@Talonmes我更改了相应的行
@numba.jit(target = 'cuda')
def hermite_polynomials2(X, N,out):
    r'''
    Evaluate the orthonormal Hermite polynomials on 
    :math:`(\mathbb{R},\frac{1}{\sqrt{2\pi}}\exp(-x^2/2)dx)` in :math:`X\subset\mathbb{R}`


    :param X: Locations of desired evaluations
    :type X:  One dimensional np.array
    :param N: Number of polynomials
    :rtype: numpy.array of shape :code:`X.shape[0] x N`
    '''
    deg = N-1
    L = X.shape[0]
    if deg  == 0:
        return
    else:     
        out[:, 1] = X
        for n in range(1, deg):
            for j in range(L):
                out[j, n + 1] = X * out[j, n] - n * out[j, n - 1]
    factorial = 1
    for i in range(1,N):
        factorial *= i
        for j in range(L):
            out[j,i] /= np.sqrt(factorial)
    return 
for j in range(L):
    out[j, n + 1] = X[j] * out[j, n] - n * out[j, n - 1]