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 на задание. Записи результатов и внутренняя пересылка исключены.