1 / 20 · Теория
Отобразите скалярные произведения на обрабатывающие элементы
Разделяйте индексы строки, столбца и свёртки и вычислите небольшую эталонную матрицу.
Уроки доступны бесплатно. Запишитесь, чтобы сохранять прогресс.
Зафиксируйте вычисление до его планирования
Пусть A имеет размер M×K, а B — K×P. Их произведение C имеет размер M×P. Индекс i выбирает выходную строку, j — выходной столбец, а k — индекс свёртки внутри суммы. Во всём курсе индексы начинаются с нуля.
Наше проектирование с неподвижным выходом назначает 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) | 5 | 14 | 19 |
| (0,1) | 6 | 16 | 22 |
| (1,0) | 15 | 28 | 43 |
| (1,1) | 18 | 32 | 50 |
Ожидаемая матрица — [[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.