知り合いの人からCARRV 2019 (Third Workshop on Computer Architecture Research with RISC-V)でTensorFlow Lite on RISC-Vの発表があったと聞いたので、さっそく論文をダウンロードしてみた。
- Towards Deep Learning using TensorFlow Lite on RISC-V
https://carrv.github.io/2019/papers/carrv2019_paper_7.pdf
きちんと読んだわけではなく流し読みなので、詳細まで把握したわけではないけれど、ざっと流し読みをした。
この人たちは、TensorFlow LiteをRISC-Vアーキテクチャで動かすために、まずはRISC-Vのベクトル命令をTensorFlowのソースコードに移植した。 次に命令セットシミュレータを拡張してDeep Learningのテストパタンを動かし、ARMと比べてどの程度の性能が出たのか調査した。
まず、
- Intrinsicを使って、TensorFlowのコードでRISC-Vのベクトル命令に変換できるところを書き直した。以下の表に示すベクトル命令を用いて移植を行った。
どうもTensorFlow Liteにはreference_opt
とoptimized_opt
という2つのソースコードの分類があって、
reference_opt
はポータブルな実装、つまり汎用命令しか使ってはいけないのかな?optimized_opt
はハードウェア実装に依存した実装にしてよい。つまりアクセラレータとか使っても良いのかな?
という分類らしい。
まずはソースコード移植 → コンパイル → シミュレータでシミュレーション(Spike-ISSを改造) → 実行命令数比較
となるらしい。まだ現物のハードウェアで実行したわけではなさそうだから、Commited Instruction、つまり命令数での比較となっている。 命令数比較ならば、ベクトル命令を導入すれば命令数としては短くなるのは当たり前で、その比較はどうだろう...?という気分になる。
その結果、最適化をすると命令数的にはARMに勝った。そりゃそうだろ。命令数だもん。
とりあえず、移植できたというのは大きな成果なのかなという印象。あとは、
- 現物ハードウェアで動作させる。
- 性能を上げる
といったところが課題かな。