人気ブログランキング | 話題のタグを見る

雑多な趣味の記録帳

tom01h.exblog.jp

tiny-dnn-fpga アクセラレータを MaxPooling 順方向伝搬に対応する1

Zynq (Arm CPU 内蔵の FPGA) 上でオープンソースの tiny-dnn を使った MNIST の学習をしています。
tiny-dnn を改変し、計算に時間のかかる畳み込みをプログラマブルロジック(PL)に作ったアクセラレータで並列に計算し、その他は PS 中の CPU で tiny-dnn をそのまま計算します。

今回は、MaxPooling レイヤの順方向伝搬に対応します。
Poolig の計算では入力データを 1度しか使用しないので、入力データバッファは使わない方法で考えています。
入力データを直接比較して、出力データバッファに結果を書き込みます。
CPU 側でデータを整列する必要があるので、そこがネックになったら考え直しますが…
シミュレーションでは、アクセラレータ回路の実行時間は 340ms 位になっています。

逆方向伝搬はもともとあまり遅くないので、ソフトウェアのチューニングで対応することにしました。
それでも Intel で試した限りではだいぶ速くなりました。

by tom01h | 2019-07-23 22:02