”
AXI4-Stream インターフェースの畳み込みニューラルネットワーク1(概要説明)”の続き。
(2018/04/26 : 修正、バグフィックス)前回は、AXI4-Stream インターフェースの各層をつないだ AXI4-Stream インターフェースの畳み込みニューラルネットワークの概要を説明した。今回は、AXI4-Stream インターフェースの畳み込みニューラルネットワークのC コードの合成と Export RTL を行った。
最初に、”
AXI4-Stream インターフェースの畳み込みニューラルネットワーク1(概要説明)”で示したAXI4-Stream インターフェースの畳み込みニューラルネットワークのハードウェア化関数が書かれている all_layers.cpp は最終形なので、そこから DATAFLOW 指示子をコメントアウトする。これで C コードの合成を行ったが、エラーになった。

エラー内容の最初の 1 個を示す。
ERROR: [XFORM 203-733] An internal stream 'outs_conv_layer.V.data.data0.V' (all_layers/all_layers.cpp:42) with default size is used in a non-dataflow region, which may result in deadlock. Please consider to resize the stream using the directive 'set_directive_stream' or the 'HLS stream' pragma.
結局、各層の実行が1つの関数が実行を終了するまでブロックされるので、ストリームのバッファサイズを指定する必要があるようだ。そこで、コメントアウトされていた STREAM 指示子を生かそう。これらは、その層で出力されるデータのサイズを指定してある。

これで、C コードの合成を行った。今度はエラー無しでコンパイルすることができた。結果を示す。

Estmated は 9.40 ns だった。ただし、Uncertainty は 3.00 ns にしてある。これは、Estmated がタイミング制約をオーバーしてしまったからである。
Latency は 10065 クロックで、100 MHz で動作した場合には、100.66 us となる。
リソース使用量は、BRAM_18K は 28 個、DSP48E も 28 個となった。FF は 5235 個、LUT は 9215 個となった。
さて、この状態では、各層がオーバーラップしていないので、DATAFLOW 指示子を生かしてみよう。各層がオーバーラップ動作するので、STREAM 指示子は無くても動作できるためコメントアウトした。

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

Latency は 9626 クロックで、100 MHz で動作した場合には、96.27 us となる。Interval は 8427 クロックで、これは affine_layer1 とほぼ同じクロック数となる。
現在、
白線間を走行するロボットカーで使用している畳み込みニューラルネットワークのLatency は 194433 クロックだったので、100 MHz で動作しているためレイテンシは約 1.94 ms だった。今回の AXI4-Stream インターフェースの畳み込みニューラルネットワークの Latency は 9627 クロックだったので、194433 / 9627 ≒ 20.2 倍の性能向上となった。ただし、現在使用している畳み込みニューラルネットワークは、最初に画像を切り取る機能があるので、AXI4-Stream インターフェースの畳み込みニューラルネットワークをそれに対応させると多少の性能低下はあると思う。
リソース使用量は、STREAM 指示子をコメントアウトして、DATAFLOW 指示子を付ける前よりもBRAM_18K の使用量が半分になった。これは、STREAM 指示子でのバッファが無くなったためだと思われる。FF は 4613 個、LUT は 6999 個でいずれも減っているのが分かる。
Export RTL を行った。結果を示す。
なお、Vivado synthesis, place and route にチェックを入れてある。

LUT は 1874 個、FF は 2280 個使用している。DSP は 28 個、BRAM は 14 個で合成の時と同じ数になった。
CP achieved post-implementation は、8.661 ns で問題無さそうだ。
- 2018年03月16日 04:20 |
- DNN
-
| トラックバック:0
-
| コメント:0