FC2カウンター FPGAの部屋 今まで作ってきた層のテンプレートをMNIST のCNN に適用する2(C コードの合成2)
fc2ブログ

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

FPGAの部屋

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

今まで作ってきた層のテンプレートをMNIST のCNN に適用する2(C コードの合成2)

今まで作ってきた層のテンプレートをMNIST のCNN に適用する1(C コードの合成1)”の続き。

前回は、MNISTのCNNを以前実装したときに比べて性能は84 倍になったが、リソース使用量がPYNQボードのZynq のPL 容量をオーバーしてしまった。今回は、PYNQボードのZynq に入るようにパラメータを設定しC コードの合成を行う。
その際に使用するのが、”全結合層のテンプレートの変更”で全結合層のテンプレートに追加した OUTPUT_PIPELINE_II だ。この値を変更することにより、リソース使用量を変更することができる。

というのも、BRAM_18K を使用しているのは全部、全結合層の第1層目だからだ。Analysis 画面を見てみよう。
mnist_conv_nn10_hlss_4_180519.png

左上の Module Hierarchy の affine_layer1 を見ると、434 ですべてのBRAM_18K を使っているのが分かる。
affine_layer1 の現在の OUTPUT_PIPELINE_II の値は、affine_layer_template_1 の Loop4 のInitiation Interval の archived を見れば分かる。
mnist_conv_nn10_hlss_10_180519.png

Loop4 のInitiation Interval の archived の値は 2 だった。現在のPIPELINE指示子のLoop4 の II は 2 ということになる。
さて、affine_layer1 の現在の OUTPUT_PIPELINE_II の値を 4 に設定してみよう。
mnist_conv_nn10_hlss_5_180519.png

これで、C コードの合成を行った。結果を示す。
mnist_conv_nn10_hlss_6_180519.png
mnist_conv_nn10_hlss_7_180519.png

Latency は min が 59656 クロック、max が 61096 クロックになった。
BRAM_18K は 103 % でまだオーバーしている。

affine_layer_template_1 の Loop4 のInitiation Interval の archived は 4 だった。設定通りだ。
mnist_conv_nn10_hlss_8_180519.png
mnist_conv_nn10_hlss_9_180519.png

次に、、affine_layer1 の現在の OUTPUT_PIPELINE_II の値を 8 に設定してみよう。
mnist_conv_nn10_hlss_11_180519.png

これで、C コードの合成を行った。結果を示す。
mnist_conv_nn10_hlss_12_180519.png
mnist_conv_nn10_hlss_13_180519.png

Latency の min は 116680 クロックで、 max は 118120 クロックだった。
BRAM_18K は 146 個、 52 % となった。これならばPYNQボードのZynq に入りそうだ。
この場合の”「ゼロから作るDeep Learning」の畳み込みニューラルネットワークのハードウェア化6(再度Vivado HLS )”との性能向上を計算してみよう。
「ゼロから作るDeep Learning」の畳み込みニューラルネットワークのハードウェア化6(再度Vivado HLS )”の場合は、Latency の max が 2475569 なので、2475569 / 118120 ≒ 21 倍に性能が向上した。
  1. 2018年05月20日 08:12 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/4173-31dd0c1a
この記事にトラックバックする(FC2ブログユーザー)