FC2カウンター FPGAの部屋 Vitis 2019.2 アプリケーション・プロジェクト ラプラシアン・フィルタAXI4-Streamバージョン5
fc2ブログ

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

FPGAの部屋

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

Vitis 2019.2 アプリケーション・プロジェクト ラプラシアン・フィルタAXI4-Streamバージョン5

Vitis 2019.2 で自作カーネルを使用してストーミング接続を試す10(streaming_lap_filter3 のプロファイル)”で、カーネル間のストリーミング接続は、カーネルを起動するレイテンシがかかっていることが分かった。ここでは、2 個のカーネルを連続して起動していた。それでは、カーネルが 1 個の時はどうなのだろうか? 同じ、ラプラシアン・フィルタの実装で確かめてみよう。もうすでに、Vitis のプロジェクトは作ってあって、ブログも書いてある。
Vitis 2019.2 アプリケーション・プロジェクト ラプラシアン・フィルタAXI4-Streamバージョン2
Vitis 2019.2 アプリケーション・プロジェクト ラプラシアン・フィルタAXI4-Streamバージョン3
Vitis 2019.2 アプリケーション・プロジェクト ラプラシアン・フィルタAXI4-Streamバージョン4”参照

Vitis 2019.2 アプリケーション・プロジェクト ラプラシアン・フィルタAXI4-Streamバージョン3”でプロファイル無しの状態での平均実行時間は、430 us だった。
Vitis 2019.2 アプリケーション・プロジェクト ラプラシアン・フィルタAXI4-Streamバージョン4”では、Appliction Timeline を表示したが、カーネルのプロパティは変更していなかったので、ソフトウェアだけのプロファイルを取っているようだった。この時の実行時間は 712 us だった。

今回は、カーネルのプロパティの Data Transfer を Counter + Trace に変更し、Stall Profiling にチェックを入れて、Appliction Timeline を表示してみよう。

Vitis 2019.2 の lap_filter_axis_dma プロジェクトを示す。
streaming_lap_filter_77_200213.png

Assistant ウインドウの lap_filter_axis_dma_system -> lap_filter_axis_dma -> Hardware -> lap_filter_axis_dma -> lap_filter_axis_dma を右クリックし、右クリックメニューから Settings... を選択する。
すると、Hardware Function Settings ダイアログが立ち上がる。そこで、、Data Transfer を Counter + Trace に変更し、Stall Profiling にチェックを入れた。
streaming_lap_filter_78_200213.png

ビルドを行って終了した。成功だ。
streaming_lap_filter_79_200213.png

Vivado のプロジェクトを見ると、”Vitis 2019.2 で自作カーネルを使用してストーミング接続を試す10(streaming_lap_filter3 のプロファイル)”と同様に System DPA が追加されている。
streaming_lap_filter_80_200213.png

ビルドが成功したので、BOOT.BIN をUltra96-V2 のPetaLinux の /rum/media/mmcblk0p1 ディレクトリに転送した。つまり、MicroSD カードの第 1 パーティションに転送した。
/home/masaaki/Vitis_Work/2019.2/lap_filter_axis_dma/Hardware/sd_card に移動する。
scp BOOT.BIN 192.168.3.23:/run/media/mmcblk0p1

Ultra96-V2 の PetaLinux をリブートして、Ultra96-V2 のPetaLinux で zocl ドライバをロードした。
insmod /lib/modules/4.19.0-xilinx-v2019.2/extra/zocl.ko

Assistant ウインドウの Hardware を右クリックして、右クリックメニューから Run -> Run Configurations... を選択する。
Vitis 2019.2 アプリケーション・プロジェクト ラプラシアン・フィルタAXI4-Streamバージョン4”ですでに設定は終了しているので、Run ボタンをクリックして、起動した。
streaming_lap_filter_81_200213.png

実行時間は 917 us だった。
streaming_lap_filter_82_200213.png

Assistant ウインドウの lap_filter_axis_dma_system -> lap_filter_axis_dma -> Hardware の下に、Debugger_lap_filter_axis_dma -> Run Summary(xclbin) をダブルクリックして Viits Analyzer を起動した。
Appliction Timeline をクリックして表示した。
streaming_lap_filter_83_200213.png

clEnqueueTask からカーネルの lap_filter_axis_dma が起動するまでの時間を計測した。 636 us だった。長い。。。
streaming_lap_filter_84_200213.png

clEnqueueTask から clFinish が終了するまでの時間は、1.830 ms だった。実行時間と合わない。
streaming_lap_filter_85_200213.png

これは、時間計測に OpenCL の event.getProfilingInfo() を使用しているからだろうか? ”Vitis 2019.2 で自作カーネルを使用してストーミング接続を試す10(streaming_lap_filter3 のプロファイル)”では、gettimeofday() を使用している。以前測った時は、どちらでも値は変わらなかったのだが。。。

m_axi_gmem-DDR (inm|outm) などのトランザクションを拡大してみた。
streaming_lap_filter_86_200213.png

更に拡大すると、AXIインターフェースのトランザクションが見える。
streaming_lap_filter_87_200213.png

最後に Profile Summary を示す。
streaming_lap_filter_88_200213.png

streaming_lap_filter_89_200213.png

streaming_lap_filter_90_200213.png

streaming_lap_filter_91_200213.png

やはり、2 個のカーネルをカーネル間のストリーミング接続するよりも、ハードウェアで接続したほうが速い。
  1. 2020年02月14日 04:44 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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