문제

I am new to NumbaPro in Python. I have the following code which I want to parallelize in x,y grid in CUDA (Anaconda Accelerate), however everytime I run this it gives a NotImplementedError at the Decorator line, I am not sure what is wrong, can someone please help me? Many Thanks:

@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();
도움이 되었습니까?

해결책

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

This mean that the slice operation a[i:j] = b is not implemented yet. ref

And looking at the function you're trying to use cuda on, it looks like you do not fully understand how cuda works. I suggest you look up some general guides on for example cuda/pycuda or opencl/pyopencl, to get a quick grasp on how function for parallalizing for gpu's need to be designed. It a too big of a topic to go through here. The doc's for these kinds of things is sadly pretty bad on continiums pages. Probably because there is still a lot of development going on.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top