Top: -
Par: 10 lines
DRAM に分割されて配置された shape = (1024, 16) の Float Tensor \(D\) を、
LM にある Tensor \(L\) に((8_L2B:1, 16:2, 8_L1B:1), (2:1,4_PE:1, 2_W:1))のレイアウトで格納してください。
サイズが 4 倍になりましたが、DL 256_16 と同様の命令で、解くことができます。
L2B について、入力が 4_L2B:2 で出力が 8_L2B:1 なので、各グループの DRAM にある 2048 長語を、2 個ずつの L2B に 1024 長語ずつ分配する必要があります。
出力に 8_L1B:1 が含まれるので、L2BM に下ろした値を 8 個の L1BM に分配する必要があります。
最後に、MAB が含まれずに 4_PE:1 が含まれるので、L1BM にある値を 4 個の PE に分配する必要があります。
使用する命令は以下のとおりです。
mvp/n1024 $d0 $lc0@.0 DRAM → L2BM 並列個別転送命令 mvpl2bmd $lc0 $lb0 L2BM → L1BM 分配命令 l2bmdl1bmm $llb0 $llm0v 16x1MAB 放送 命令(2長語) l1bmmを使います。
L2BM → L1BM 分配にて、L2BM にある 1024 長語を分配しないといけませんが、l2bmd 命令は一命令で 256長語を L2BM から読み、8 個の L1B に 32長語の分配を行うので、4 命令必要です。
同様に、L1BM → PE でも、L1BM にある 128 長語を分配しないといけませんが、l1bmm 命令は一命令で 32 長語を L1BM から読み、4 PE に 8 長語(16単語)ずつ分配するので、4 命令必要です。
$d[0:2048]@0, (1024,16)/((4_L2B:2, 256:8), (8:1, 2_W:1); B@[4_L2B:2])
$lm[0:64], (1024,16)/((8_L2B:1, 16:2, 8_L1B:1), (2:1,4_PE:1, 2_W:1))