Gather-scatter (vector addressing)


Gather-scatter is a type of memory addressing that often arises when addressing
vectors in sparse linear algebra operations. It is the
vector-equivalent of register indirect addressing, with gather involving indexed
reads and scatter indexed writes. Vector processors have
hardware support for gather-scatter operations, providing instructions such as
Load Vector Indexed for gather and Store Vector Indexed for scatter.

Definitions

Gather

A sparsely populated vector
holding non-empty elements
can be represented by two densely-populated vectors of length ;
containing the non-empty elements of,
and giving the index in where 's element is located.
The gather of into,
denoted,
assigns with having already been calculated.
A C implementation is

for
x = yidx[i;

Scatter

The sparse scatter, denoted is the reverse [operation.
It copies the values of into the corresponding
locations in the sparsely populated vector, i.e..

for
y;