”
laplacian_filter1_host.cpp に時間計測コードを追加”の続き。
前回は、OpenCL の getProfilingInfo() を使用した時間計測を試みたがセグメンテーション・フォールトで出来なかった。そこで、 gettimeofday() を使用した時間計測コードを作成して時間計測した。ツィッターで @KSuzukiii さんに「enqueueTaskに event渡してないのが気になりました。」というコメントをいただいたので、調べてみるとたしかにそうだった。コードを修正して、やってみると成功したので、OpenCL の getProfilingInfo() を使用した時間計測を行った。
OpenCL の getProfilingInfo() を使用した時間計測のコードを示す。
cl::Event event;
uint64_t lapf_start, lapf_end;
//Launch the Kernel
q.enqueueTask(krnl_lap_filter, NULL, &event);
// The result of the previous kernel execution will need to be retrieved in
// order to view the results. This call will transfer the data from FPGA to
// source_results vector
q.enqueueMigrateMemObjects({hw_lapd_buf},CL_MIGRATE_MEM_OBJECT_HOST);
q.finish();
// 時間計測
event.getProfilingInfo<uint64_t>(CL_PROFILING_COMMAND_START, &lapf_start);
event.getProfilingInfo<uint64_t>(CL_PROFILING_COMMAND_END, &lapf_end);
auto lapf_time = lapf_end - lapf_start;
printf("laplacian_filter1: %lu ns\n", lapf_time);
enqueueTask()に event を渡すようにした。
更に、”
Ultra96-V2 をUSB-LAN 変換アダプタでネットワークに接続”でUltra96-V2 がネットワークに接続されたので、Vitis からラプラシアン・フィルタ処理を行ってみよう。
Vitis 2019.2 の laplacian_filter1 アプリケーション・プロジェクトを示す。

まずは、前準備をする。まだ、SFTP でUltra96-V2 にファイルをアップロードできていないため、MicroSD カードの rootfs の /mnt に test.bmp をコピーした。lap_filter_axim.xclbin, laplacian_filter1.exe はアップロード出来ているので、Vitis は Ultra96-V2 にファイルをアップロードできているのだが。。。


MicroSD カードを Ultra96-V2 に挿入して電源ON した。
ifconfig を行うと、ネットワークに接続されていることが分かる。

最初に、zocl ドライバを insmod でロードしておかないとダメなようなので、それを行う。
insmod /lib/modules/4.19.0-xilinx-v2019.2/extra/zocl.ko
Vitis 2019.2 の Assistant ウインドウで lalacian_fiter1_system -> Hardware を右クリックし右クリックメニューからRun -> Run Configuratio を選択した。

Debugger_laplacian_filter1 を作成した。
Connection は Ultra96-V2 の IP アドレスを入れた Remote を作成した。


Run ボタンをクリックしてアプリケーションを起動した。
結果が表示された。
経過時間は 5064440 ns だった。つまり約 5.1 ms だった。
gettimeofday() で計測したのとほとんど変わらない。

後 3 回実行してみよう。
Vitis 2019.2 の Assistant ウインドウで lalacian_fiter1_system -> Hardware を右クリックし右クリックメニューからRun -> Debugger_laplacian_filter1 を選択した。

laplacian_filter1 アプリケーションが起動した。

同様に後 2 回実行した。


平均すると約 5.0 ms だった。
シリアル・コンソールには[drm] メッセージが表示されている。

/mnt ディレクトリには、lap_filter_axim.xclbin, laplacian_filter1.exe がアップロードされていた。
- 2019年12月22日 06:25 |
- Vitis
-
| トラックバック:0
-
| コメント:0