Gather-scatter es un tipo de direccionamiento de memoria que a menudo surge cuando se direccionan vectores en operaciones de álgebra lineal dispersa . Es el equivalente vectorial del direccionamiento indirecto de registros , con recopilación que implica lecturas indexadas y escrituras indexadas dispersas. Los procesadores vectoriales (y algunas unidades SIMD en CPU ) tienen soporte de hardware para operaciones de recopilación y dispersión, proporcionando instrucciones como Load Vector Indexed para recopilación y Store Vector Indexed para dispersión.
Definiciones
Recolectar
Un vector escasamente poblado. tenencia Los elementos no vacíos se pueden representar mediante dos vectores de longitud densamente poblados ; que contiene los elementos no vacíos de , y dando el índice en dónde Se encuentra el elemento de. La reunión de dentro , denotado , asigna con habiendo sido ya calculado. [1] Suponiendo que no hay alias de puntero entre x [], y [], idx [], una implementación de C es
para ( i = 0 ; i < N ; ++ i ) x [ i ] = y [ idx [ i ]];
Dispersión
La dispersión dispersa, denotada es la operación inversa. Copia los valores de en las ubicaciones correspondientes en el vector escasamente poblado , es decir .
para ( i = 0 ; i < N ; ++ i ) y [ idx [ i ]] = x [ i ];