@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそ、すべては、SystemC v0.9公開から始まった
昨日のブログで Azure で FPGA が利用でき、それが Project Brainwave ベースだということを書きました。
そこで、Project Brainwave について振り返ってみました。
このブログでは、
ビデオでは、55分頃に、Mega-SIMD Architecture として、Project Brainwave Neural Processing Unit (NPU) の情報が載っています。
Stratix 10 FPGAでは、35.9 TFLOPS の性能のようです。
これ以外には、Google君に
Serving DNNs in Real Time at Datacenter Scale with Project Brainwave
というのがありました。こちらにも上のビデオの論文「A Configurable Cloud-Scale DNN Processor for Real-Time AI」と同じようなことが書いてありますね。
NPUでは、下記のような命令があるようです。
v_rd : Vector read
v_wr : Vector write
m_rd : Matrix read
m_wr : Matrix write
mv_mul : Matrix-vector multiply
vv_add : point-wise vector addition
vv_a_sub_b : point-wise vector subtraction
vv_a_sub_a : point-wise vector subtraction
vv_max : point-wise vector max
v_relu : point-wise vector ReLU
v_sign : point-wise vector sigmoid
v_tanh : point-wise vector hyperbolic tangent
s_wr : Write scalar control register
edn_chain : End instruction chain
これらのために、Matrix-Vector Multiplier を何個も搭載しているようですね。この Matrix-Vector Multiplier では、Float16が入力で出力もFloat16です。入力のFloat16をBFP(Block Float)に変換して、Tile Engineにて計算(Multiply)し、その後に、Accumulatorがあって、最後に Vector Add-Reduction を行い、BFP => Float16変換しています。
たくさんの Matrix-Vector Multiplier へのスケジューリングは内部にあるマイコン(Nios)にて制御を行っているようです。
もうちょっと、じっくり読み込む必要がありそう。