Top: -
Par: 7 lines
LM に ((8_L2B:1, 4:2, 8_L1B:1), (2:1, 4_PE:1, 2_W:1)) のレイアウトで分割されて配置された shape = (256, 16) の Float Tensor \(L\) を、DRAM にある Tensor \(D\) に指定のレイアウトで格納してください。
PE の LM にある値を DRAM に転送する操作を、MN-Core 用語でアップロードと呼びます。問題名の UL は Upload の略です。
DL PE 256_16 の反対方向の問題です。Download 操作の逆に対応した命令があるので、それを使います。l1bmm@0 (MAB) 16x1 個別転送 命令 [Link]l2bmd L1BM → L2BM 結合 [Link] mvp/n256 $lc0@.0 $d0 L2BM → DRAM 並列個別転送命令 [Link]を使います。
MN-Core の命令は、同じオペコードで、オペランドの指定を変えることで、アップロードとダウンロードが切り替わるものが多いです。
例えば、DRAM → L2BM → L1BM の順に分配する
の逆方向、L1BM → L2BM → DRAM の結合は
のようになります。
L1BM → PE で MAB 放送(PE分配)を行うときは
のように行いました。放送の逆命令は縮約か個別転送になるので、個別転送命令で MAB 0 番の値を使うことにして、
を使うと良いでしょう。
(今回は縮約要素間すべて同じ値なので l1bmr 命令を使って l1bmrffmax のように最大値で縮約を行うことも一応可能ですが、個別転送の方が目的に合うでしょう)
$lm[0:16], (256,16)/((8_L2B:1, 4:2, 8_L1B:1), (2:1, 4_PE:1, 2_W:1); B@[MAB])
$d[0:512]@0, (256,16)/((4_L2B:2, 64:8), (8:1, 2_W:1))