以下の内容はhttps://msyksphinz.hatenablog.com/entry/2017/08/17/020000より取得しました。


Spike-ISSによるRISC-V向けにコンパイルしたアプリケーション実行(1)

忙しくてずいぶんと放置してしまっていた。RISC-V向けにアプリケーションをコンパイルして、動作させてみるテスト。

いきなり大きなプログラムを実行して、HiFive1を壊してしまったりしたので、今回は慎重に生きたい。まずはISSなどであらかじめプログラムの動作の様子を見て、それからHiFive1にダウンロードするという手順を取ろう。

以前に作ったC言語で記述したMNIST学習プログラム。RISC-V向けにコンパイルしてみた。と言っても、やったことはx86用のgccを渡すべきところを、riscv64-unknown-elf-gccに置き換えただけである。

github.com

CC := riscv64-unknown-elf-gcc

include ../bp/Makefile

printfなどが入っていても、spikeを利用するときにpkオプションを指定すると、proxy kernel付きで実行してくれるようになる。proxy kernelはSyscallの代理を行うもおんで、HTIF(host target interface)の肩代わりをするため、printf()などが使えるようになるというわけだ。

  • Running simulations

Running simulations · lowRISC

以下は、MNISTの学習プログラム。5000回の学習の後に、10000個の画像を判別テストして、正答率を図っている。50000回程度学習させることによって、90%程度の正解率に持って行くシミュレーションが、Spike ISSでも実行できることを確認できた。

$ time spike pk train_twolayernet
2051
60000
28
28
2049
60000
=== TestNetwork ===
Correct = 1597
=== TestNetwork ===
Correct = 3726
=== TestNetwork ===
Correct = 6553
=== TestNetwork ===
Correct = 7882
=== TestNetwork ===
Correct = 8448
=== TestNetwork ===
Correct = 8629
=== TestNetwork ===
Correct = 8713
=== TestNetwork ===
Correct = 8858
=== TestNetwork ===
Correct = 8915
=== TestNetwork ===
Correct = 8908
=== TestNetwork ===
Correct = 8978
=== TestNetwork ===
Correct = 9035

ただし、これめちゃめちゃ遅い。これだけ動作させるのに10分程度かかった。次は、もう少しステップを踏みながら、HiFive1でMNISTが実行できるところまで持って行きたい。

f:id:msyksphinz:20170817010249p:plain




以上の内容はhttps://msyksphinz.hatenablog.com/entry/2017/08/17/020000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14