cuda.tile.gather#
- cuda.tile.gather(
- array,
- indices,
- /,
- *,
- padding_value=0,
- check_bounds=True,
- latency=None,
Loads a tile from the array elements specified by indices.
indices must be a tuple whose length equals the array rank. All elements of this tuple must be integer tiles or scalars of the same shape, or different shapes that are broadcastable to a common shape.
The result shape will be the same as the broadcasted shape of indices.
For example, consider a 2-dimensional array. In this case, indices must be a tuple of length 2. Suppose that
ind0andind1are integer tiles of shapes(M, N, 1)and(M, 1, K). Then the result tile will have the broadcasted shape(M, N, K):>>> t = ct.gather(array, (ind0, ind1)) # `t` has shape (M, N, K)
The result tile t will be computed according to
t[i, j, k] = array[ind0[i, j, 0], ind1[i, 0, k]] (for all 0<=i<M, 0<=j<N, 0<=k<K)
If the array is 1-dimensional, indices can be passed as a tile rather than a tuple. This is a convenience notation that is strictly equivalent to passing a tuple of length 1:
>>> ct.gather(array, ind0) # equivalent to ct.gather(array, (ind0,))
gather() checks that indices are within the bounds of the array. For indices that are out of bounds, padding_value will be returned (zero by default). It must be a scalar or a tile whose shape is broadcastable to the common shape of indices.
To disable bounds checking, set check_bounds to
False. In this mode, the caller is responsible for ensuring that all indices are within the bounds of the array, and any out-of-bounds access will result in undefined behavior.Negative indices are interpreted as out of bounds, i.e. they don’t follow the Python’s negative index convention.