packages feed

accelerate-0.8.0.0: cubits/slice.inl

/* -----------------------------------------------------------------------------
 *
 * Module    : Slice
 * Copyright : (c) [2009..2010] Trevor L. McDonell
 * License   : BSD
 *
 * ---------------------------------------------------------------------------*/

extern "C"
__global__ void
slice
(
    ArrOut              d_out,
    const ArrIn0        d_in0,
    const Slice         slice,
    const CoSlice       slix,
    const SliceDim      sliceDim
)
{
    Ix shapeSize      = size(slice);
    const Ix gridSize = __umul24(blockDim.x, gridDim.x);

    for (Ix ix = __umul24(blockDim.x, blockIdx.x) + threadIdx.x; ix < shapeSize; ix += gridSize)
    {
        Slice    dst = fromIndex(slice, ix);
        SliceDim src = sliceIndex(dst, slix);

        set(d_out, ix, get0(d_in0, toIndex(sliceDim, src)));
    }
}