Altifigence Academy

7 / 20 · Теория

Флаги valid, метки и очистка

Различайте числовой ноль, пустые токены и токены другого задания.

Токен несёт больше, чем число

Наш эталонный токен содержит value, valid, job и k. Недостоверный токен — пустой. Достоверный токен с нулевым value — реальный операнд матрицы. Job идентифицирует транзакцию; k — член свёртки. Соединения фиксируют строку A и столбец B каждого PE, а оболочка помнит координаты блока.

Когда оба входа достоверны, проверяйте равенство меток job и k до умножения. A(0,1)=2 в паре с B(0,0)=5 даёт десять, но это недопустимый член. Соответствующая пара k=1 — два и семь, дающая четырнадцать. Рассматривайте несовпадение меток как явную ошибку верификации, а не молча отбрасывайте его как обычный пустой токен.

Считайте члены, а не такты

Clear устанавливает acc=0 и count=0. Для каждой совпавшей пары требуйте k=count, затем увеличивайте count. Потребление k=K−1 завершает локальный результат сразу после этого фронта. Пустые токены и паузы не увеличивают count. Этот простой контроллер требует упорядоченных значений k. Поддержка произвольного порядка нуждается в битовой карте полученных членов и выявлении дубликатов.

При K=2 потребление одного и пяти даёт acc=5, count=1. Пустой токен оставляет оба неизменными. Потребление двух и семи с k=1 даёт acc=19, count=2 и done. Повторный k=1 — ошибка, даже если нижестоящий потребитель уже принял результат.

Опустошение и очистка служат разным целям

Массив не пуст, когда входит последний граничный вход. Токены остаются во внутренних регистрах пересылки. Продолжайте продвигать с недостоверными граничными входами, пока последний PE не потребит последний член. При таком опустошении сохраняйте готовые аккумуляторы до сбора результатов. Запуск нового задания, напротив, требует совместной очистки аккумулятора, count, valid и меток.

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

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

PE с K=3 потребляет пару k=0 (2,4), пустой токен, пару k=1 (0,9) и пару k=2 (−1,3). Найдите acc и count. Что если последняя метка job не совпадает?

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

При совпадающих метках acc=5 и count=3, поэтому результат завершён. Пустой токен не считается; достоверный ноль считается. Несовпадающее job должно вызвать ошибку верификации и не может считаться успешным завершением.

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