Top: -
Par: 29 lines
LM に ((4_L2B:2, 32:1, 2_W:1)) のレイアウトで分割されて配置された長さ \(256\) の Float Vector \(L\) を、DRAM にある Vector \(D\) に指定のレイアウトで格納してください。
l1bmp(PE 放送命令)の逆操作に相当する命令はありません。
なんとか頑張りましょう。
l1bmp の逆操作にあたるような、1 PE から連続したメモリを L1BM に転送する命令は存在せず、必ず 4 PE が同時に転送されます。
そこで、4 PE で共有で、レイアウトの転置が行える行列レジスタを使った転置命令を使うことで、1 PE のメモリを 4 PE の先頭に移動することができます。
その状態で、長語 16x1 個別転送命令 l1bmm@0 を使うことで、L1BM の先頭 4 長語に、PE0 の 4 長語を転送することができます。
なお、倍精度の dmwrite, dmread を使用しないと、例えば f(mwrite|mread) を使用すると、長語内の (2_W) も転置されてひっくり返ってしまいます。
まとめると、
dmwrite, dmread, l1bmm@0 をそれぞれ 8 回l2bm@0 L1BM → L2BM 個別転送 l2bm@0mvp/n64 $lc0@.0 $d0 DRAM → L2BM 並列個別転送命令 mvpで実現できます。
$lm[0:64], (256)/((4_L2B:2, 32:1, 2_W:1); B@[PE,MAB,L1B])
$d[0:32]@0, (256)/((4_L2B:2, 32:1, 2_W:1))