前回までで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 ...
動作はかなりもっさりしているけど...