SumRow

top Top: -

par Par: 160 lines

Problem Statement

LM上に Float \(256\times16\) 行列 \(A\) が与えられます。2 次元目を総和で縮約して、ベクトル \(S\) (size:256)を LM に出力してください。

Explanation

SumRow mini と似た設定ですが、サイズが 16 から 256 と 16 倍に増えており、更に L2B, L1B に分散して配置されています。

今回の問題は、SumCol と違い、出力は DRAM ではなく通常通り LM1 に格納する事になっています。

実は… SumRow mini と同じコードを提出すると、「16 value(s) correct, but 240 value(s) mismatch」と、256 個中 16 個の値が正解になります。これは 4 単語 × 4_L2B の 16 値です。

SumRow mini では $m[0:16] の値を入力に $n[0:4] へ出力しましたが、この調子で続きも書いてみましょう。

コードをスクリプトを使用して生成しても構いません。

考え方・方針

行列の 2 次元目のそれぞれで総和を求めるので、1 次元目ごと独立していると考えられます。つまり、16 要素の合計を求める問題が、256 個独立に存在するとも言えます。

1 次元目の 256 が 4_L2B:2 と、4 個の L2B に分割されていて、出力も同じ 4_L2B:2 で分割されているので、256 個の問題が 4 個の L2B に 64 個ずつ分割されていると考えることができます。

そして、各 PE で考えると、入力が (64:2) のレイアウト、つまり、2 長語間隔で 64 個並んでいます。SumRow mini では (4:2)、つまり 2 長語間隔で 4 個を計算してもらったので、これを 16 回繰り返せば Accept です。

Inputs

Outputs

Testcases

testcase.vsm

Submission

ログイン / 新規登録