Altifigence Academy

11 / 20 · 概念

N×Nへ拡張し、完了エッジを数える

空間サイズNと縮約長Kを別々にパラメータ化します。

空間サイズと縮約長を区別する

N×NのPE格子は1つのN×N出力タイルを生成します。Kは縮約次元で、Nと等しい必要はありません。N=3、K=5ではAは3×5、Bは5×3、Cは3×3です。9個のPEが各5項を消費し、45 MACを行います。Nは配線とスキュー、Kは累積幅、項数管理、投入期間を決めます。

既定の規約を使います。E0前にクリア完了、E_t前に入力安定、そのエッジでMACとレジスタ転送を実行し、追加の乗算器パイプラインはありません。A(i,k)はk+iで投入されjホップ移動します。B(k,j)はk+jで投入されiホップ移動します。両者はk+i+jでPE(i,j)へ届きます。

tlast(i,j)=K−1+i+jt_{last}(i,j)=K-1+i+j

最終PEはE_(K+2N−3)の後に完了します。E0を含めて数えるとadvanceエッジ数はK+2N−2です。N=K=2では最終番号は3、回数は4です。N=3、K=5では最終番号8、回数9です。

接続とカウンタをパラメータ化する

列0ではPEのA入力は境界から、他では左隣のレジスタ付きA出力から来ます。Bも上境界と上隣について同様です。validとjob/kタグを同じ接続でつなぎ、格子全体でclearとadvanceを共有します。

N≥1、K≥1、AW≥2Wを要求します。0からKを保存するcountにはmax(1,ceil(log2(K+1)))ビットが必要です。0からK−1のkタグにはmax(1,ceil(log2 K))ビットが必要です。Kが2の累乗なら両者の幅は異なります。K=1で幅ゼロの宣言をしないようにします。

最後の境界投入はE_(K+N−2)で、続いてN−1回の排出エッジがあります。計算回数に初期化、メモリロード、出力転送は含みません。停止エッジがP回なら、経過した物理エッジ数はK+2N−2+Pです。パイプライン段を追加するには新しいタイミング分析が必要です。

自分で考えてみましょう

N=4、K=3で、PE(2,1)の最初と最後のMACエッジ、格子の最終エッジ、計算エッジ数、停止2回を含む物理エッジ数を求めてください。

解説を見る

PE(2,1)はE3でk0、E5でk2を消費します。格子はE8後に完了し、E0..E8の9回のadvanceが必要です。停止2回で物理エッジは11回です。初期化と出力転送は除外します。

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