我正在尝试执行以下内核
from numba import cuda
import numpy as np
@cuda.jit
def Dark_Pix_Search_Kernel(all_bands,window_size,output_array):
row_size = all_bands.shape[0]
col_size = all_bands.shape[1]
end_r = row_size - (row_size -row_size*int(row_size/window_size[0])) - window_size[0] + 1
end_c = col_size - (row_size -row_size*int(row_size/window_size[0])) - window_size[0] + 1
row,col,band_n = cuda.grid(3)
if (row in range(0,end_r,window_size[0])) and (col in range(0,end_c,window_size[0])):
row_e = row+window_size[0]
col_e = col+window_size[0]
output_array [row][col][band_n] = np.median(all_bands[row:row_e, col:col_e,band_n])
但我得到以下错误
LoweringError: No definition for lowering <built-in method impl_contains_helper of _dynfunc._Closure object at 0x000002851EB23F98>(range_state_int64, int32) -> bool
当编译器不能为Python代码中的内置操作符和函数发出简化样板文件(“Lowering”)时,就会发生Lowering错误。你知道吗
这里实际上有两个错误。你知道吗
range
,这在Numba CUDA内核中是不受支持的np.median
得到一个错误。Numba CUDA内核不支持numpy函数所以实际上,这个错误并没有真正的解决方法。您将不得不重新考虑代码的设计。你知道吗
相关问题 更多 >
编程相关推荐