FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

TensorFlow+Kerasに入門(8. RISC-V Spike ISS でkeras2cppを動作させる)

前回まででx86上でのkeras2cppの改造はひとまず完成したので、とりあえず目的のRISC-Vアーキテクチャへの移植を行ってみたい。

移植と言っても、GCCのターゲットを変えてリコンパイルするだけである。 あとはRISC-VのISSであるSpikeで動作させるだけだ。

run_cifar10_riscv: keras_model.cc example_main.cc
    riscv64-unknown-elf-g++ -g -Wall -O0 -std=c++11 $^ -o $@

コンパイルはすぐに終了する。Spike ISSを使えば、File I/O やstdoutなどもシミュレートしてくれるのでとりあえず動かすことが可能だ。

$ spike pk run_cifar10_riscv
This is simple example with Keras neural network model loading into C++.
Keras model will be used in C++ for prediction only.
DataChunk2D 3x32x32
DataChunkFlat values:
0.047180 0.018506 0.038732 0.423161 0.039156 0.216958 0.079558 0.064518 0.030912 0.041319
DataChunk2D 3x32x32
DataChunkFlat values:
0.000142 0.193220 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.806296 0.000342
DataChunk2D 3x32x32
DataChunkFlat values:
0.000636 0.244844 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.746910 0.007610
DataChunk2D 3x32x32
...

動作はかなりもっさりしているけど...

f:id:msyksphinz:20180705233234p:plain