我正在尝试使用 NumbaPro CUDA Python 在矩阵上执行一个非常基本的邻居算法。
功能:
@autojit(target="gpu")
def removeNeighboursMatCUDA(tmp_frame):
for j in range(255):
for i in range(255):
if tmp_frame[i][j]!=0:
if tmp_frame[i+1][j]!=0:
tmp_frame[i][j]=0
tmp_frame[i][j+1]=0
if tmp_frame[i][j+1]!=0:
tmp_frame[i][j]=0
tmp_frame[i+1][j]=0
if tmp_frame[i+1][j+1]!=0:
tmp_frame[i][j]=0
tmp_frame[i+1][j+1]=0
if i>0 and tmp_frame[i-1][j-1]!=0:
tmp_frame[i][j]=0
tmp_frame[i-1][j-1]=0
return tmp_frame
函数输入是一个二维数组 (256x256):
tmp_frame = coo_matrix((c_tmp,(x_tmp,y_tmp)),shape=(256,256)).todense()
M = removeNeighboursMatCUDA(tmp_frame)
当目标是 CPU 时,此代码执行没有任何问题,但对于 GPU,我收到以下错误:
TypingError: No conversion from array(int16, 2d, C) to none for '$333.2'
我找不到有关此错误的任何信息。任何人都知道出了什么问题或问题可能是什么?
编辑:错误是由return
语句引起的。删除return
修复代码。