Gather-scatter (adresowanie wektorowe) - Gather-scatter (vector addressing)

Gather-scatter to rodzaj adresowania pamięci, który często pojawia się podczas adresowania wektorów w rzadkich operacjach algebry liniowej . Jest to wektorowy odpowiednik adresowania pośredniego rejestrów , z gromadzeniem obejmującym odczyty indeksowane i zapisy indeksowane rozproszone. Procesory wektorowe (i niektóre jednostki SIMD w procesorach ) obsługują sprzętową obsługę operacji zbierania i rozproszenia, udostępniając instrukcje, takie jak Load Vector Indexed dla zbierania i Store Vector Indexed dla rozpraszania.

Definicje

Zbierać

Słabo zaludnionych wektor posiadający bez pustych elementów może być reprezentowane przez dwa gęsto zaludnionych wektory długości ; zawierające niepuste elementy , i podające indeks, w którym znajduje się element . Zbiór w , oznaczony , przypisuje się już obliczonym. Zakładając brak aliasingu wskaźnika między x[], y[],idx[], implementacja w C jest

for (i = 0; i < N; ++i)
    x[i] = y[idx[i]];

Rozpraszać

Rzadki rozrzut, oznaczony jest operacją odwrotną. Kopiuje wartości do odpowiednich miejsc w rzadko zaludnionym wektorze , tj . .

for (i = 0; i < N; ++i)
    y[idx[i]] = x[i];

Zobacz też

Bibliografia