FC2カウンター FPGAの部屋 「ゼロから作るDeep Learning」の2層ニューラルネットワークのハードウェア化6(指示子を入れる)

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

「ゼロから作るDeep Learning」の2層ニューラルネットワークのハードウェア化6(指示子を入れる)

「ゼロから作るDeep Learning」の2層ニューラルネットワークのハードウェア化5(推論の検証)”の続き。

前回は、FPGAに実装しようとしているMNISTの推論ハードウェアが本当にうまく行っているのか?を確かめた。300個の手書き数字を認識した結果、精度は97.3 % であることが分かった。しかし、人間が判別しやすい手書き文字が必ずしもMNISTの推論ハードウェアに判別しやすいわけではないということが分かった。
今回は、実際にIP として使用できるようにVivado HLS に指示子を入れてみよう。

最初に、入力と出力をバラバラにポートに出してみよう。それは、ARRAY_PARTITION complete 指示子を使用する。
その際に、入力にデータを入れたということを示せるように入力ポートのインターフェースを ap_hs にしてみよう。このように指定するとハンドシェーク信号が追加される。OUTポートも同様にバラバラにして、出力はデフォルトでも ap_vld は出ると思うのだが、一応 ap_ovld に指定する。入力ポート、出力ポート共にレジスタを入れる設定にする。
更に、buf に転送するコードは、入力ポートからたくさん入力しないようにするコードなので、これは削除しても問題ないし、かえってレイテンシが増えるので、削除する。
nn_fpga_ch5_27_170607.png

これで、C コードの合成を行った。
nn_fpga_ch5_28_170607.png

buf にコピーするコードを削除したせいもありレイテンシは 278711 から 277162 に減少した。BRAM_18K も使用量が減ったが、FF と LUT は大幅に増えている。これは、ハンドシェークのポートも増えたし、それに対しての回路も増えたせいだと思われる。

出力されたHDL コードを見てみよう。
nn_fpga_ch5_29_170607.png
nn_fpga_ch5_30_170607.png

入力ポートは、in_0_V, in_0_V_ap_vld, in_0_V_ap_ack というように、ap_vld のデータ有効信号とap_ack の応答信号が1つのポートごとに出力されている。入力ポートは 784 個ある。
出力ポートは、out_0_V, out_0_V_ap_vld というように、ap_vld のデータ有効信号のみ出ている。出力ポートは 10 個だ。

次に、これに、for ループの最初にPIPELINE指示子 II=1 を入れてみよう。
nn_fpga_ch5_31_170607.png

C コードの合成を行った。これは時間がかかった。
nn_fpga_ch5_35_170607.png

レイテンシは 1766 に劇的に減ったが、BRAM_18K は 5040 % 、FF は 118 % 、LUT は 398 % でPYNQ ボードのリソースを大幅に超過してしまった。
Analysis 画面を示す。
nn_fpga_ch5_36_170607.png

C/RTL協調シミュレーションをしようとしたが、エラーになってしまった。大きすぎるのかもしれない?

次に、BRAM_18Kのリソース消費量を0 にしてみよう。つまり、重みやバイアスのパラメータをLUT にマップしてみる。
重みやバイアスがBRAM_18Kに実装されているので、BRAMが使われているため、それにARRAY_PARTITION complete 指示子を使用する。なお、ヘッダファイルに重みやバイアスを置いておくと、指示子が付けられなかったので、mnist_nn.cpp に持ってきた。更にブロックレベルのインターフェースは AXI4 Lite に設定している。ただし、in, out ポートの指示子は削除した。out ポートはap_ovld で変化がないが、in ポートは ap_none となって、ハンドシェークポートが削除されている。
nn_fpga_ch5s_1_170609.png

これで、C コードの合成を行った。
nn_fpga_ch5s_2_170609.png

BRAM_18Kの使用量は 0 になった。その代り、FFとLUT がオーバーしているが、前回ほどではない。
  1. 2017年06月09日 05:17 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3824-9e1a03e0
この記事にトラックバックする(FC2ブログユーザー)