FAM 8

top Top: 14 lines / sosuupoyo

par Par: 20 lines

Problem Statement

LM0上の Float 配列 \(X\) の各要素 \(X[i]\) について、 \(Y[i] = (X[i] + 8) \times 8\) を計算し、LM1上に出力してください。

Explanation

PE の中からは ALU の他に MAU(行列演算ユニット) という、浮動小数点数の積和演算ができるユニットが使えます。

MAU という名前ですが行列演算の他に要素ごとの演算も可能であり、\(A \times B + C\) の形で演算可能な、積和 fma、乗算 mul、加算 add、転送 passa が行えます。

例えば、Float で積を求める fvmul 命令を用いて、$lm[0:8] の \(8\) 要素それぞれの二乗を求めるコードは以下のとおりです。

fvmul $lm0v $lm0v $ln0v

また MAU にも ALU と同様に、直前の MAU 命令の出力を利用できるフォワーディングパス $mauf があります。

その他の命令および詳細(符号の指定、入出力精度の変換など)は SDM 3.6.9「MAU 命令式」 をご覧ください。

なお、MAU の出力は正規化されます。指数部が \(0\) なら全ビットが \(0\) に、指数部のビットが全て \(1\) なら仮数部が \(0\) になるので、浮動小数点数でない小さい整数などを vpassa 命令によってコピーできないことに注意してください。

Inputs

Outputs

Testcases

testcase.vsm

Submission

ログイン / 新規登録