9 / 20 · 概念
出力固定とその他のデータフロー
PEに何が留まるかを特定して、記憶と転送を比較します。
レッスンは無料で読めます。受講登録すると進捗を保存できます。
どの値が局所に留まるかを問う
シストリックアレイは、オペランドを隣接処理要素間で動かしながら並列処理します。「固定」は計算中の再利用のため近くに保持する値を表します。数学的演算が同じでも、選択が異なるとPEレジスタ、部分和経路、境界スケジュールが変わります。
この出力固定設計では、PE(i,j)がC(i,j)の部分和を保持します。kが進むとAとBが移動します。全K項が到着後、結果を回収し、クリアで新しい出力タイルを始めます。A値は行内で、B値は列内で再利用されます。2×2の例ではA(0,0)=1がC(0,0)とC(0,1)の両方へ寄与します。
重み固定設計はBなどの重みをPEへ事前ロードし、到着する活性値に対して再利用します。部分和は移動するか、別の場所で集める必要があります。ポートの名前を変えるだけではOSコントローラはWSになりません。保存値、事前ロード順序、結果経路がすべて変わります。入力固定設計は活性値を保持し、重みや出力計算にわたって再利用します。ここではその考えを比較しますが、ISアレイは実装しません。
| データフロー | 保持する値 | 調べるコスト |
|---|---|---|
| OS | 出力の部分和 | 広いアキュムレータと結果回収 |
| WS | 重み | 事前ロードと部分和の転送・記憶 |
| IS | 活性値 | 重み供給と出力和の結合 |
3つの通信量を別々に測る
同じBを使う2つの2×2積を考えます。このOS境界モデルは1ジョブにつきAを4値、Bを4値供給し、2ジョブで16オペランド値です。局所Bバッファがあれば2番目のジョブで外部メモリからBを再読せずに済みますが、4個の境界トークンはなお供給します。重み事前ロードの再利用は異なるトレードオフで、部分和経路も変える必要があります。
外部読み出し、境界への投入、PE間転送は別々の測定です。UC Berkeley Gemmini READMEは、OSとWSを設定可能なデータフローの一次資料例です。この学習用アレイには独自の契約があり、Gemminiの実装や命令インターフェースを再現しません。
設計レビューでは、局所に留まるもの、和を累積する場所、各境界を横断する値を特定します。再利用だけで十分なメモリポートや継続スループットは保証されません。
自分で考えてみましょう
2つの2×2ジョブが局所バッファに保持したBを共有し、Aは再利用しません。外部オペランド読み出し数とOS境界投入数はいくつですか。
解説を見る
外部読み出しは計12値で、4値のA行列2個と4値のB行列1個です。境界投入は計16値で、各ジョブにAを4値、Bを4値供給します。結果書き込みと内部転送は含みません。