Я пытаюсь использовать Numba и получить доступ к графическому процессору для ускорения кода, но я получаю следующую ошибку:
in jit raise NotImplementedError("bounds checking is not supported for CUDA")
NotImplementedError: bounds checking is not supported for CUDA
Я увидел, что был задан другой вопрос, но он не был полностью указан или не дан ответ здесь . Я реализовал циклы 2-for, когда увидел, что векторизованный код (y = corr*x + np.sqrt(1.-corr**2)*z
) не работает (та же ошибка). Я также пытался поиграть с опцией boundscheck
, но это не изменило результат. Ошибка не появилась, если не указать target
, так как он загружается в ЦП автоматически (я думаю).
import numpy as np
from numba import jit
N = int(1e8)
@jit(nopython=True, target='cuda', boundscheck=False)
def Brownian_motions(T, N, corr):
x = np.random.normal(0, 1, size=(T,N))
z = np.random.normal(0, 1, size=(T,N))
y = np.zeros(shape=(T,N))
for i in range(T):
for j in range(N):
y[i,j] = corr*x[i,j] + np.sqrt(1.-corr**2)*z[i,j]
return(x,y)
x, y = Brownian_motions(T = 500, N = N, corr = -0.45)
Не могли бы вы мне помочь? Python составляет 3,7,6, а Numba - 0,48,0.