MN-Core の行列積演算 \(A \times B = C\) の図をまとめました。行列演算についての解説はこちらです。
\(4\) PE 動作させたときの最小単位を表しています。PE ごとに色を分けて表示しています。
乗算の左要素 \(A\) は行列レジスタの内容と、レジスタ書き込み時にどの PE が担当しているのかを表しています。
太い黒枠でまとめられているセルは、\(1\) 長語の単位を示しています。
なお行列積命令 mmul
として図示していますが、\(AB + X = C\) を計算する行列積和命令 mfma
の場合、加算項 \(X\) は出力 \(C\) と同様のレイアウト・精度であるとお考えください。
図の下にあるコードは、GRF0 $r
に格納された \(A\) を、ブロックフロート化して行列レジスタに書き込み、LM0 $m
に格納された \(B\) と乗算を行い、演算結果 \(C\) を LM1 $n
に出力する例です。コード例では \(B\) はブロックフロート化済みと仮定して変換を省略しています。なお命令を重ねずに表記していますが、bfn
, mwrite
, mmul(mfma)
の \(3\) 種は同時に実行することができます。
・\(2\) 長語を使用した BF 化・行列レジスタ書き込み
・長語を使用した BF 化・行列レジスタ書き込み
※ hmmul
の出力は単精度であることに注意