2021年4月25日日曜日

ultra96v2上でcv::fastをaccelerationするテストを実行した話

cv::fastをaccelerationするテストを実行した話。
nonmaxSupressionは有効とし、Resource Optimizaitonも有効とする。
基本的にはVitis_Librariesのfastをそのまま持ってきて動かしただけ。
他のライブラリも同じようにして導入できそうなことが分かってきた。

準備

前回と同じ

src

vision/L2/examples/fast配下から次のファイルを配置する。

  • xf_fast_accel.cpp
  • xf_fast_config.h
  • xf_fast_tb.cpp
  • xf_config_params.h

extやdataフォルダの中身はresizeと共通して使用できる。
他のものも同じようにして導入できそう。

sw_emu

build(sw_emu)

hashは3eec9b91c8ceba52e219e4b8d0be5e64c1ec1f30
git clone https://github.com/akira-nishiyama/orb_slam_2_ros.git -b feature-fpga
cd hw
mkdir build
cd build
source <vitis-installation-path>/settings64.sh
source <sdk-installation-path>/environment-setup-aarch64-xilinx-linux
cmake .. -GNinja -DPLATFORM_COMPONENTS_PATH=<path-to-platform-components> -DBUILD_TARGET=sw_emu -DBUILD_FAST_TEST=ON

run(sw_emu)

エミュレータを起動する。次はビルドディレクトリからのコマンド例である。

cd hw/hw_link/package_sw_emu/
source <vitis-installation-path>/settings64.sh
./launch_sw_emu.sh -pid-file emulation.pid -no-reboot -forward-port 1440 1534 -forward-port 2222 22

ターミナルで次の通り実行する。 必要なファイルは/mnt/sd-mmcblk0p1にある。

root@ultra96v2-zynqmp:~# cd /mnt/sd-mmcblk0p1/
root@ultra96v2-zynqmp:/mnt/sd-mmcblk0p1# export LD_LIBRARY_PATH=/mnt/sd-mmcblk0p1:/tmp:$LD_LIBRARY_PATH
root@ultra96v2-zynqmp:/mnt/sd-mmcblk0p1# export XCL_EMULATION_MODE=sw_emu
root@ultra96v2-zynqmp:/mnt/sd-mmcblk0p1# export XILINX_XRT=/usr
root@ultra96v2-zynqmp:/mnt/sd-mmcblk0p1# export XILINX_VITIS=/mnt/sd-mmcblk0p1
root@ultra96v2-zynqmp:/mnt/sd-mmcblk0p1# mkdir xclbin
root@ultra96v2-zynqmp:/mnt/sd-mmcblk0p1# cp binary_container_1_sw_emu.xclbin xclbin/krnl_fast.xclbin
root@ultra96v2-zynqmp:/mnt/sd-mmcblk0p1# ./xf_fast_tb 128x128_1.png

result(sw_emu)

INFO: Running OpenCL section.
Found Platform
Platform Name: Xilinx
INFO: Device found - avnet_com_av_ULTRA96V2_1_0
XCLBIN File Name: krnl_fast
INFO: Importing xclbin/krnl_fast.xclbin
Loading: 'xclbin/krnl_fast.xclbin'
ocvpoints:511=
INFO: Verification results:
    Common = 511
    Success = 100
    Loss = 0
    Gain = 0
Test Passed
The maximum depth reached by any of the 4 hls::stream() instances in the design is 2048

hw

build(hw)

ビルドディレクトリからのコマンドを示す。

source <vitis-installation-path>/settings64.sh
source <sdk-installation-path>/environment-setup-aarch64-xilinx-linux
cmake .. -GNinja -DPLATFORM_COMPONENTS_PATH=<path-to-platform-components> -DBUILD_TARGET=hw -DBUILD_FAST_TEST=ON

run(hw)

sdカードはビルドディレクトリから以下の通り作成可能。 sd-deviceはdmesg等で調べたsdカードのデバイスファイルを指定する。

sudo dd if=hw/hw_link/package_hw/sd_card.img of=<sd-device>

ultra96のwifiに接続し、以下の通りsshアクセスを行う。

ssh -l root 192.168.2.1

ターミナルでは次のようにコマンドを実行する。

root@ultra96v2-zynqmp:~# cd /mnt/sd-mmcblk0p1/
root@ultra96v2-zynqmp:/mnt/sd-mmcblk0p1# export LD_LIBRARY_PATH=/mnt/sd-mmcblk0p1:/tmp:$LD_LIBRARY_PATH
root@ultra96v2-zynqmp:/mnt/sd-mmcblk0p1# export XILINX_XRT=/usr
root@ultra96v2-zynqmp:/mnt/sd-mmcblk0p1# export XILINX_VITIS=/mnt/sd-mmcblk0p1
root@ultra96v2-zynqmp:/mnt/sd-mmcblk0p1# mkdir xclbin
root@ultra96v2-zynqmp:/mnt/sd-mmcblk0p1# cp binary_container_1_hw.xclbin xclbin/krnl_fast.xclbin
root@ultra96v2-zynqmp:/mnt/sd-mmcblk0p1# ./xf_fast_tb 128x128_1.png 

result(hw)

INFO: Running OpenCL section.
Found Platform
Platform Name: Xilinx
INFO: Device found - edge
XCLBIN File Name: krnl_fast
INFO: Importing xclbin/krnl_fast.xclbin
Loading: 'xclbin/krnl_fast.xclbin'
ocvpoints:511=
INFO: Verification results:
    Common = 511
    Success = 100
    Loss = 0
    Gain = 0
Test Passed

0 件のコメント:

コメントを投稿