Altifigence Academy

1 / 20 · Теория

Отобразите скалярные произведения на обрабатывающие элементы

Разделяйте индексы строки, столбца и свёртки и вычислите небольшую эталонную матрицу.

Зафиксируйте вычисление до его планирования

Пусть A имеет размер M×K, а B — K×P. Их произведение C имеет размер M×P. Индекс i выбирает выходную строку, j — выходной столбец, а k — индекс свёртки внутри суммы. Во всём курсе индексы начинаются с нуля.

Ci,j=∑k=0K−1Ai,kBk,jC_{i,j}=\sum_{k=0}^{K-1} A_{i,k}B_{k,j}

Наше проектирование с неподвижным выходом назначает C(i,j) элементу PE(i,j). Этот обрабатывающий элемент удерживает свою частичную сумму, пока A движется вправо, а B — вниз. Движение обеспечивает повторное использование; уравнение задаёт, какие операнды можно перемножать. Тактовое время определим отдельно, чтобы ошибка расписания не могла незаметно изменить задуманную математику.

Рассчитайте полный эталон

Используйте A=[[1,2],[3,4]] и B=[[5,6],[7,8]]. PE(0,1) соединяет строку [1,2] со столбцом [6,8]. Он накапливает 1×6=6 и 2×8=16, получая 22. Использование вместо этого второй строки B [7,8] даёт 23 — полезный признак ошибки строки/столбца.

PEЧлен k=0Член k=1Результат
(0,0)51419
(0,1)61622
(1,0)152843
(1,1)183250

Ожидаемая матрица — [[19,22],[43,50]]. Каждый PE выполняет два достоверных MAC, поэтому массив выполняет восемь MAC. Соглашение, считающее умножение и сложение отдельно, сообщает о шестнадцати арифметических операциях. Всегда указывайте единицу при сравнении пропускной способности.

Свяжите координаты с хранением

При хранении по строкам A(i,k) имеет смещение элемента iK+k, а B(k,j) — kP+j. Для столбца j=1 в этом примере B использует смещения 1 и 3. Поэтому интерфейс памяти, выдающий последовательные строки, требует буферизации или перестановки для подачи столбцов сверху массива.

Стройте арифметический эталон с широкими целыми числами, применяя выбранное выходное преобразование потом. Эти малые положительные входы не проверяют переполнение. В последующие тесты нужно добавить отрицательные значения, минимальный отрицательный операнд и более длинную свёртку. Единичная B должна воспроизводить A, а полностью нулевая строка A — полностью нулевую строку C. Записывайте список членов k каждого PE вместе с итоговой суммой: тогда отсутствующий или повторённый член виден, даже когда две ошибки численно компенсируются.

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

Для A=[[2,-1],[0,3]] и B=[[4,5],[-2,1]] найдите C, число MAC и смещение элемента B(1,0) при хранении по строкам.

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

C=[[10,9],[-6,3]]: четыре суммы равны 8+2, 10−1, 0−6 и 0+3. Имеется 2×2×2=8 MAC. B(1,0) имеет смещение элемента 1×2+0=2.

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