Altifigence Academy

9 / 20 · Теория

Поток с неподвижным выходом и другие варианты

Сравнивайте хранение и передачу, определяя, что остаётся в PE.

Спросите, какое значение остаётся локальным

Систолический массив выполняет параллельную работу, пока операнды движутся через соседние обрабатывающие элементы. «Неподвижный» описывает значение, удерживаемое поблизости для повторного использования в вычислении. Разные варианты меняют регистры PE, пути частичных сумм и граничное расписание даже при одинаковой математической операции.

В варианте с неподвижным выходом этого курса PE(i,j) удерживает частичную сумму C(i,j). A и B движутся при продвижении k. После прибытия всех K членов результат собирается; clear начинает новый выходной блок. Значения A повторно используются вдоль строки, а B — вниз по столбцу. В примере 2×2 значение A(0,0)=1 вносит вклад и в C(0,0), и в C(0,1).

Варианты с неподвижными весами предварительно загружают веса, например B, в PE и повторно используют их для входящих активаций. Частичные суммы должны двигаться или собираться в другом месте. Переименование портов не превращает контроллер OS в WS: меняются хранимое значение, последовательность предварительной загрузки и путь результата. Варианты с неподвижными входами удерживают активации для повторного использования с разными весами или выходными вычислениями. Здесь сравнивается эта идея без реализации массива IS.

Поток данныхУдерживаемое значениеЗатраты для рассмотрения
OSЧастичная сумма выходаШирокие аккумуляторы и сбор результатов
WSВесПредварительная загрузка и передача/хранение частичных сумм
ISАктивацияПодача весов и объединение выходных сумм

Разделяйте три измерения трафика

Рассмотрим два произведения 2×2 с одинаковой B. Наша граничная модель OS подаёт четыре значения A и четыре B на задание: шестнадцать значений операндов для двух заданий. Локальный буфер B позволяет избежать повторного чтения B из внешней памяти для второго задания, продолжая подавать четыре граничных токена. Повторное использование предварительно загруженных весов даёт иной компромисс и требует другого пути частичных сумм.

Внешние чтения, граничные подачи и передачи между PE — разные измерения. README Gemmini Калифорнийского университета в Беркли даёт пример из первоисточника настраиваемых потоков OS и WS. Наш учебный массив имеет собственную спецификацию и не воспроизводит реализацию или интерфейс инструкций Gemmini.

При проверке проекта определите, что остаётся локальным, где накапливаются суммы и какие значения пересекают каждую границу. Одно повторное использование не гарантирует достаточного количества портов памяти или установившейся пропускной способности.

Попробуйте сами

Два задания 2×2 используют общую B, удерживаемую в локальном буфере. A не используется повторно. Сколько нужно внешних чтений операндов и граничных подач OS?

Прочитать объяснение

Внешние чтения составляют 12 значений: две матрицы A по четыре и одна B из четырёх. Граничные подачи составляют 16 значений: четыре A и четыре B на задание. Записи результатов и внутренняя пересылка исключены.

Выбор действует в этом браузере. Его можно изменить внизу страницы.