2019年 07月 23日
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