Bogdan, Strangely, I don't observe the same behavior. Slicing should produce another GPUArray that is not a copy of the original but just a view; the same as is done in numpy.
Can you try the following? import pycuda.autoinit import numpy import pycuda.gpuarray N=8 a = pycuda.gpuarray.to_gpu(numpy.zeros(N)) sub_region1 = a[0:N/4] sub_region1 += 5 sub_region2 = a[3*N/4:N] sub_region2 -= 4 print type(a), type(sub_region1), type(sub_region2) print sub_region1 print sub_region2 print a The output that I get is: <class 'pycuda.gpuarray.GPUArray'> <class 'pycuda.gpuarray.GPUArray'> <class 'pycuda.gpuarray.GPUArray'> [ 5. 5.] [-4. -4.] [ 5. 5. 0. 0. 0. 0. -4. -4.] On Sat, Feb 9, 2013 at 7:01 PM, Bogdan Opanchuk <[email protected]> wrote: > Moreover, I do not need the actual data to be copied. I just need a > view to the middle of an existing array. > > On Sun, Feb 10, 2013 at 10:53 AM, Bogdan Opanchuk <[email protected]> > wrote: > > Hi Alex, > > > >> Maybe I am misunderstanding, I am not so familiar with the buffer > terminology (having not dealt much with opencl), > > > > It is not really OpenCL-specific; basically it's just a wrapper on top > > of pointer arithmetic. > > > >> Would the following be sufficient? > >> > >> a = pycuda.gpuarray.to_gpu(numpy.zeros(N)) > >> > >> sub_region1 = a[0:N/4] > >> sub_region2 = a[3N/4:N] > > > > Unfortunately, this produces numpy.ndarray, not another GPUArray. >
_______________________________________________ PyCUDA mailing list [email protected] http://lists.tiker.net/listinfo/pycuda
