Our non CUDA code has a 'point' subroutine that points to a subset of data in a 2D or 3D array - by default it points to everything apart from the outside 'faces', e.g. in 2D it would point to the central value of a 3x3 array, the middle 2x2 values of a 4x4 array etc. We also have built shifting into the point function which can shift the point in any dimension depending on input. We would like to be able to move the original array over to the GPU and then perform the points and shifted points on the device rather than having to point on the host and transfer over as this leads to far too many memory copies and makes memory management trickier.

Sorry if that isn't too clear - but being able to just index subsections of the array, like you can in vanilla fortran, rather than 'getting' sections of it, would be very beneficial for how I need Arrayfire to work. Also, sorry if I have completely misunderstood how the get and set commands work!

If this isn't possible, do you have any alternatives?

EDIT: On a broader point, the ability to index/change single points or slices of an array using standard indexing methods would be great. For example if I could just type A(2,3) to refer to that element in the array, that would be very very useful. If I could write A(2,3)=7 that would be great too. I know these aren't necessarily GPU/CUDA specific tasks but the ability to do them would make integrating Arrayfire into existing code a whole lot easier. Unless i'm being particularly stupid this doesn't seem to be a feautre of ArrayFire arrays at the moment (with only 'get' and 'set' listed under the Indexing section of the guide). I have no idea how easy it would be to implement at this moment in time but if it is possible it would really help out.