下降误差是什么意思?

2024-04-19 08:59:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试执行以下内核


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

Tags: inimportoutputsizebandnprangecol
1条回答
网友
1楼 · 发布于 2024-04-19 08:59:59

当编译器不能为Python代码中的内置操作符和函数发出简化样板文件(“Lowering”)时,就会发生Lowering错误。你知道吗

这里实际上有两个错误。你知道吗

  1. 降低错误来自于使用range,这在Numba CUDA内核中是不受支持的
  2. 一旦错误被修复,您将从np.median得到一个错误。Numba CUDA内核不支持numpy函数

所以实际上,这个错误并没有真正的解决方法。您将不得不重新考虑代码的设计。你知道吗

相关问题 更多 >