Сегментированное сканирование

В информатике сегментированное сканирование представляет собой модификацию префиксной суммы с равным по размеру массивом битов флагов для обозначения границ сегментов, на которых должно выполняться сканирование. [1]

Пример

Далее биты флага «1» указывают начало каждого сегмента.

1 2 3 4 5 6 вход 1 0 0 1 0 1 биты флага 1 3 6 4 9 6 сегментированное сканирование + {\displaystyle {\begin{array}{|rrrrrr|l|}1&2&3&4&5&6&{\text{input}}\\\hline 1&0&0&1&0&1&{\text{flag bits}}\\\hline 1&3&6&4&9&6&{\text{сегментированное сканирование +}}\\\end{array}}}
Группа1
  • 1 = 1
  • 3 = 1 + 2
  • 6 = 1 + 2 + 3
Группа2
  • 4 = 4
  • 9 = 4 + 5
Группа3
  • 6 = 6

Альтернативный метод, используемый в High Performance Fortran, заключается в том, чтобы начинать новый сегмент при каждом переходе значения флага. Преимущество этого представления в том, что оно полезно как при префиксном, так и при суффиксном (обратном) сканировании без изменения его интерпретации. В HPF для представления сегментов используется логический тип данных Fortran. Таким образом, эквивалентный массив флагов для приведенного выше примера будет следующим:

1 2 3 4 5 6 вход Т Т Т Ф Ф Т значения флага 1 3 6 4 9 6 сегментированное сканирование + {\displaystyle {\begin{array}{|rrrrrr|l|}1&2&3&4&5&6&{\text{input}}\\\hline T&T&T&F&F&T&{\text{flag values}}\\\hline 1&3&6&4&9&6&{\text{сегментированное сканирование +}}\\\end{array}}}

Смотрите также

Ссылки

  1. ^ Блеллок, Гай Э. «Сканирование как примитивные параллельные операции». Компьютеры, IEEE Transactions 38.11 (1989): 1526-1538.


Получено с "https://en.wikipedia.org/w/index.php?title=Сегментированное_сканирование&oldid=1205467640"