FAM 8
Top: 14 lines / sosuupoyo
Par: 20 lines
Problem Statement
LM0上の Float
配列 X の各要素 X[i] について、 Y[i]=(X[i]+8)×8 を計算し、LM1上に出力してください。
Explanation
PE の中からは ALU の他に MAU(行列演算ユニット) という、浮動小数点数の積和演算ができるユニットが使えます。
MAU という名前ですが行列演算の他に要素ごとの演算も可能であり、A×B+C の形で演算可能な、積和 fma
、乗算 mul
、加算 add
、転送 passa
が行えます。
例えば、Float
で積を求める fvmul
命令を用いて、$lm[0:8]
の 8 要素それぞれの二乗を求めるコードは以下のとおりです。
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
また MAU にも ALU と同様に、直前の MAU 命令の出力を利用できるフォワーディングパス $mauf
があります。
その他の命令および詳細(符号の指定、入出力精度の変換など)は SDM 3.6.9「MAU 命令式」 をご覧ください。
なお、MAU の出力は正規化されます。指数部が 0 なら全ビットが 0 に、指数部のビットが全て 1 なら仮数部が 0 になるので、浮動小数点数でない小さい整数などを vpassa
命令によってコピーできないことに注意してください。
Inputs
Outputs
-
Y:
Float
$ln[0:128]
/ ((16_MAB:1, 4_PE:1, 64:1, 2_W:1))
?
/ 0.0001 以下の絶対誤差が許容されます
Testcases
Submission
ログイン / 新規登録