Я пытаюсь выделить несколько массивов внутри for
l oop внутри ядра. Ядро выглядит так:
@cuda.jit
def forcecudatiling(p_num,d_num,r,force):
threadsInBlock=cuda.blockDim.x
threadsInGrid=threadsInBlock*cuda.gridDim.x
tid=cuda.threadIdx.x + cuda.blockIdx.x*cuda.blockDim.x
tiles=p_num/cuda.blockDim.x + 1
shared_p_mx = cuda.shared.array(0,dtype=np.float32)
shared_p_my = cuda.shared.array(0,dtype=np.float32)
alpha=(1.5)
rho=(1.0)
beta=(1.5*(1.0+alpha))
for k in range(tid,p_num,threadsInGrid):
r_k=cuda.device_array((d_num,p_num))
forcetemp=cuda.device_array((d_num,p_num))
r_k[0,k]=r[0,k]
r_k[1,k]=r[1,k]
forcetemp[0,k]=0.0
forcetemp[1,k]=0.0
Массивы, которые я пытаюсь выделить: r_k
и forcetemp
, но с приведенным выше кодом я получаю следующую ошибку:
TypingError: Ошибка в конвейере без python (шаг: внешний интерфейс nopython) Неизвестный атрибут 'device_array' типа Module ()
File "", строка 117: принудительное принудительное определение def (p_num, d_num, r, сила): для k в диапазоне (tid, p_num, threadsInGrid): r_k = cuda.device_array ((d_num, p_num))