Top: -
Par: 18 lines
DRAM に分割されて配置された shape = (16, 16) の Float Tensor \(D\) を、
LM にある Tensor \(L\) に((16:2), (2:1, 4_PE:1, 2_W:1))のレイアウトで格納してください。
出力レイアウトに L2B, L1B, MAB は含まれていないので、すべての MAB で同じ内容を放送することが分かります。4_PE:1 は含まれているので、4 個の PE には分配します。
4 つの DRAM に 32 長語ずつ分割して配置された値を、8 個の L2BM に同じ内容を放送したいです。
様々な方法がありますが、DL 16 と似た方針で、グループ 0 の PDM に、DRAM → PDM 単独個別転送命令 mvp を 4 回行い、特定の PDM に集めたあと、PDM → L2BM グループ間放送命令 mvb を 1 回行い、8 個の L2B に放送する方法が良いでしょう。
ただし、mvp の動作単位は 64 長語なので、
とは書けません。
そこで、
と 64 長語転送し、その後 256 長語を L2BM に放送します。
このとき、この256 長語のうち有効値の範囲は [0:32], [64:96], [128:160], [192:224] の場所の 128 長語であり、いわゆるパディングが入った状態です。
この 32 × 4 長語を L1BM に放送する際に、
のように、パディングを飛ばして L1BM に放送すると、L1BM に 128 長語が詰まった状態になります。
その後、 l1bmm 命令で PE に分配すれば良いでしょう。
$d[0:32]@0, (16,16)/((4_L2B:2, 4:8), (8:1, 2_W:1); B@[4_L2B:2])
$lm[0:64], (16,16)/((16:2), (2:1, 4_PE:1, 2_W:1))