0

我是 Python 中 NumbaPro 的新手。我有以下代码,我想在 CUDA(Anaconda Accelerate)的 x,y 网格中并行化,但是每次我运行它时,它都会在 Decorator 行出现 NotImplementedError,我不确定出了什么问题,有人可以帮我吗?非常感谢:

@cuda.jit(argtypes=(float64[:,:], float64[:,:,:], float64, float64, float64), device=True)
def computeflow(PMapping2, Array_hist2, Num_f1, p_depth1, image_width1):
    x, y = cuda.grid(2);
    for y in xrange(0,p_depth1):
        for x in xrange(0,image_width1):
            Array_H, bin_edges = numpy.histogram(Array_hist2[y,x,:], bins=Num_f1, range=None, normed=False, weights=None, density=None);
            Array_H = (numpy.imag(numpy.fft.ifft(Array_H,n=1024)));
            Array_H1 = Array_H[0:len(Array_H)/2];
            Array_H1[20:1024] = 0;
            PMapping2[y,x] = numpy.sum(Array_H1);            
Mapping1=cuda.to_device(PMapping);
Array_hist1=cuda.to_device(Array_hist);
computeflow[(3,3),(3,3)](PMapping, Array_hist, Num_f, p_depth, image_width);
PMapping1.to_host();
4

1 回答 1

0

NotImplementedError: offset=203 opcode=2b opname=STORE_SLICE+3

这意味着切片操作a[i:j] = b尚未实现。参考

查看您尝试使用 cuda 的功能,您似乎并不完全了解 cuda 的工作原理。我建议您查看一些通用指南,例如cuda/pycudaopencl/pyopencl,以快速了解如何设计用于 gpu 的并行化功能。这是一个太大的话题,无法在这里讨论。可悲的是,此类事情的文档在连续页面上非常糟糕。可能是因为还有很多开发正在进行。

于 2014-02-13T20:57:45.133 回答