使用Numba CUDA内核的未知cuMemcpyDtoH错误

问题描述

我正在尝试使用Numba将这个相当简单的功能实现为CUDA内核:

@(2,&[0])

功能工作正常,结果符合我的期望。我尝试通过以下代码将其实现为CUDA等效版本:

@Echo Off
SetLocal EnableExtensions disableDelayedExpansion
(   For /F UseBackQ^ Delims^=^ EOL^= %%G In ("DateFile.txt") Do (
        Set "line=%%G"
        SetLocal EnableDelayedExpansion
        Echo(!line:""=!
        EndLocal
    )
) 1> "NewDataFile.txt"

不幸的是,当我调用内核时,得到的不是很有用的错误消息:

@nb.njit(parallel=True)
def sum_pixel_signals_cpu(pixels_signals,signals,index_map):
    
    for it in nb.prange(signals.shape[0]):
        for ipix in nb.prange(signals.shape[1]):
            index = index_map[it][ipix]
            start_tick = track_starts[it] // consts.t_sampling
            for itick in nb.prange(signals.shape[2]):
                itime = int(start_tick+itick)
                pixels_signals[index,itime] += signals[it][ipix][itick]

我不明白我在做什么错。有没有办法至少调试这种错误消息?

解决方法

问题是由向后写的网格参数引起的...正确的方法:

sum_pixel_signals[blockspergrid,threadsperblock](pixels_signals,d_signals,pixel_index_map)