Altifigence Academy

7 / 20 · 概念

Validフラグ、タグ、フラッシュ

数値のゼロ、バブル、別ジョブのトークンを区別します。

トークンは数値以外も運ぶ

参照トークンにはvalue、valid、job、kが含まれます。無効なトークンはバブルです。valueがゼロの有効トークンは実際の行列オペランドです。jobはトランザクション、kは縮約項を識別します。配線が各PEのAの行とBの列を固定し、ラッパがタイル座標を記憶します。

両入力が有効なら、乗算前にjobとkタグの一致を検証します。A(0,1)=2とB(0,0)=5の対は10を生みますが、正当な項ではありません。対応するk=1の対は2と7で、14を生みます。タグ不一致は通常のバブルとして黙って捨てず、見える検証エラーとして扱います。

クロックではなく項を数える

クリアでacc=0、count=0から始めます。一致した対ごとにk=countを要求し、countを増やします。k=K−1の消費により、そのエッジ直後に局所的な結果が完成します。バブルと停止はcountを増やしません。この簡単な制御はkの順序を要求します。任意順に対応するには、受信済み項のビットマップと重複検出が必要です。

K=2では1と5を消費するとacc=5、count=1です。バブルでは両方とも変わりません。k=1として2と7を消費するとacc=19、count=2になり、完了します。下流の消費側が結果を受け入れ済みでも、k=1の繰り返しはエラーです。

排出とクリアは目的が異なる

最後の境界入力が入った時点では、アレイはまだ空ではありません。内部の転送レジスタにトークンが残っています。最後のPEが最終項を消費するまで、無効な境界入力でadvanceを続けます。この排出中は、結果を回収するまで完成したアキュムレータを保持します。一方、新しいジョブを始めるには、アキュムレータ、count、valid、タグの状態をまとめてクリアする必要があります。

このコースのラッパは一度に1ジョブを実行します。完了し、結果を回収し、クリアしてから次を始めます。ジョブの重ね合わせには追加の状態またはアキュムレータと出力プロトコルが必要です。タグだけではその能力を提供できません。テストにはタグ不一致、項の欠落と重複、クリア後のvalidの残留、そして項数を増やす有効なゼロオペランドを含めます。

自分で考えてみましょう

K=3のPEがk=0の対(2,4)、バブル、k=1の対(0,9)、k=2の対(−1,3)を消費します。accとcountを求めてください。最後のjobタグが不一致ならどうなりますか。

解説を見る

タグが一致すればacc=5、count=3で、結果は完成です。バブルは数えず、有効なゼロは数えます。jobの不一致は検証エラーにし、正常完了として報告してはいけません。

選択はこのブラウザに適用されます。フッターからいつでも変更できます。