- Work Directory(Step 1)
The steps for library download and environment setup can be found in README of L3 folder. For getting the design,
cd L3/examples/cornertracker
- Build kernel(Step 2)
Run the following make command to build your XCLBIN and host binary targeting a specific device. Please be noticed that this process will take a long time, maybe couple of hours.
export OPENCV_INCLUDE=< path-to-opencv-include-folder > export OPENCV_LIB=< path-to-opencv-lib-folder > export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:< path-to-opencv-lib-folder > export PLATFORM=< path-to-platform-directory >/< platform >.xpfm make host xclbin TARGET=hw
- Run kernel(Step 3)
To get the benchmark results, please run the following command.
make run TARGET=hw
- Example output(Step 4)
-----------Corner Tracker Design--------------- Found Platform Platform Name: Xilinx XCLBIN File Name: krnl_cornertracker INFO: Importing vision/L3/tests/cornertracker/cornertrack/Xilinx_Cornertrack_L3_Test_vitis_hw_u200/build_dir.hw.xilinx_u200_xdma_201830_2/krnl_cornertracker.xclbin Loading: 'vision/L3/tests/cornertracker/cornertrack/Xilinx_Cornertrack_L3_Test_vitis_hw_u200/build_dir.hw.xilinx_u200_xdma_201830_2/krnl_cornertracker.xclbin' *************************************************** Test Case no: 1 Harris Execution Harris: Buffers created Harris: data copied to device Harris: args set Harris kernel called Harris Done Pyrdown Execution Pyrdown: Buffers created Pyrdown: data copied to device Pyrdown Args set pyr in ht = 144 pyr in wd = 256 pyr out ht = 72 pyr out wd = 128 Pyrdown kernel called Pyrdown data copied to host Pyrdown Execution done Pyrdown: Buffers created Pyrdown: data copied to device Pyrdown Args set pyr in ht = 72 pyr in wd = 128 pyr out ht = 36 pyr out wd = 64 Pyrdown kernel called Pyrdown data copied to host Pyrdown Execution done Pyrdown: Buffers created Pyrdown: data copied to device Pyrdown Args set pyr in ht = 36 pyr in wd = 64 pyr out ht = 18 pyr out wd = 32 Pyrdown kernel called Pyrdown data copied to host Pyrdown Execution done Pyrdown: Buffers created Pyrdown: data copied to device Pyrdown Args set pyr in ht = 18 pyr in wd = 32 pyr out ht = 9 pyr out wd = 16 Pyrdown kernel called Pyrdown data copied to host Pyrdown Execution done **********Optical Flow Computation******************* Buffers created *********OF Computation Level =4********* *********OF Computation iteration =0********* Data copied from host to device kernel args set flow_rows =9flow_cols=16flow_in_rows =9flow_in_cols =16 level4calls done0 *********OF Computation iteration =1********* Data copied from host to device kernel args set flow_rows =9flow_cols=16flow_in_rows =9flow_in_cols =16 level4calls done1 *********OF Computation iteration =2********* Data copied from host to device kernel args set flow_rows =9flow_cols=16flow_in_rows =9flow_in_cols =16 level4calls done2 *********OF Computation iteration =3********* Data copied from host to device kernel args set flow_rows =9flow_cols=16flow_in_rows =9flow_in_cols =16 level4calls done3 *********OF Computation iteration =4********* Data copied from host to device kernel args set flow_rows =9flow_cols=16flow_in_rows =9flow_in_cols =16 level4calls done4 Buffers created *********OF Computation Level =3********* *********OF Computation iteration =0********* Data copied from host to device kernel args set flow_rows =18flow_cols=32flow_in_rows =9flow_in_cols =16 level3calls done0 *********OF Computation iteration =1********* Data copied from host to device kernel args set flow_rows =18flow_cols=32flow_in_rows =18flow_in_cols =32 level3calls done1 *********OF Computation iteration =2********* Data copied from host to device kernel args set flow_rows =18flow_cols=32flow_in_rows =18flow_in_cols =32 level3calls done2 *********OF Computation iteration =3********* Data copied from host to device kernel args set flow_rows =18flow_cols=32flow_in_rows =18flow_in_cols =32 level3calls done3 *********OF Computation iteration =4********* Data copied from host to device kernel args set flow_rows =18flow_cols=32flow_in_rows =18flow_in_cols =32 level3calls done4 Buffers created *********OF Computation Level =2********* *********OF Computation iteration =0********* Data copied from host to device kernel args set flow_rows =36flow_cols=64flow_in_rows =18flow_in_cols =32 level2calls done0 *********OF Computation iteration =1********* Data copied from host to device kernel args set flow_rows =36flow_cols=64flow_in_rows =36flow_in_cols =64 level2calls done1 *********OF Computation iteration =2********* Data copied from host to device kernel args set flow_rows =36flow_cols=64flow_in_rows =36flow_in_cols =64 level2calls done2 *********OF Computation iteration =3********* Data copied from host to device kernel args set flow_rows =36flow_cols=64flow_in_rows =36flow_in_cols =64 level2calls done3 *********OF Computation iteration =4********* Data copied from host to device kernel args set flow_rows =36flow_cols=64flow_in_rows =36flow_in_cols =64 level2calls done4 Buffers created *********OF Computation Level =1********* *********OF Computation iteration =0********* Data copied from host to device kernel args set flow_rows =72flow_cols=128flow_in_rows =36flow_in_cols =64 level1calls done0 *********OF Computation iteration =1********* Data copied from host to device kernel args set flow_rows =72flow_cols=128flow_in_rows =72flow_in_cols =128 level1calls done1 *********OF Computation iteration =2********* Data copied from host to device kernel args set flow_rows =72flow_cols=128flow_in_rows =72flow_in_cols =128 level1calls done2 *********OF Computation iteration =3********* Data copied from host to device kernel args set flow_rows =72flow_cols=128flow_in_rows =72flow_in_cols =128 level1calls done3 *********OF Computation iteration =4********* Data copied from host to device kernel args set flow_rows =72flow_cols=128flow_in_rows =72flow_in_cols =128 level1calls done4 Buffers created *********OF Computation Level =0********* *********OF Computation iteration =0********* Data copied from host to device kernel args set flow_rows =144flow_cols=256flow_in_rows =72flow_in_cols =128 level0calls done0 *********OF Computation iteration =1********* Data copied from host to device kernel args set flow_rows =144flow_cols=256flow_in_rows =144flow_in_cols =256 level0calls done1 *********OF Computation iteration =2********* Data copied from host to device kernel args set flow_rows =144flow_cols=256flow_in_rows =144flow_in_cols =256 level0calls done2 *********OF Computation iteration =3********* Data copied from host to device kernel args set flow_rows =144flow_cols=256flow_in_rows =144flow_in_cols =256 level0calls done3 *********OF Computation iteration =4********* Data copied from host to device kernel args set flow_rows =144flow_cols=256flow_in_rows =144flow_in_cols =256 level0calls done4 OF done **********Corner Update Computation******************* kernel args set flow_rows =144flow_cols=256num of corners=47harris_flag=1 Corner Update called Corner Update done OF done Num of corners = 47 *************************************************** *************************************************** Test Case no: 2 Harris Execution Harris: Buffers created Harris: data copied to device Harris: args set Harris kernel called Harris Done Pyrdown Execution Pyrdown: Buffers created Pyrdown: data copied to device Pyrdown Args set pyr in ht = 144 pyr in wd = 256 pyr out ht = 72 pyr out wd = 128 Pyrdown kernel called Pyrdown data copied to host Pyrdown Execution done Pyrdown: Buffers created Pyrdown: data copied to device Pyrdown Args set pyr in ht = 72 pyr in wd = 128 pyr out ht = 36 pyr out wd = 64 Pyrdown kernel called Pyrdown data copied to host Pyrdown Execution done Pyrdown: Buffers created Pyrdown: data copied to device Pyrdown Args set pyr in ht = 36 pyr in wd = 64 pyr out ht = 18 pyr out wd = 32 Pyrdown kernel called Pyrdown data copied to host Pyrdown Execution done Pyrdown: Buffers created Pyrdown: data copied to device Pyrdown Args set pyr in ht = 18 pyr in wd = 32 pyr out ht = 9 pyr out wd = 16 Pyrdown kernel called Pyrdown data copied to host Pyrdown Execution done **********Optical Flow Computation******************* Buffers created *********OF Computation Level =4********* *********OF Computation iteration =0********* Data copied from host to device kernel args set flow_rows =9flow_cols=16flow_in_rows =9flow_in_cols =16 level4calls done0 *********OF Computation iteration =1********* Data copied from host to device kernel args set flow_rows =9flow_cols=16flow_in_rows =9flow_in_cols =16 level4calls done1 *********OF Computation iteration =2********* Data copied from host to device kernel args set flow_rows =9flow_cols=16flow_in_rows =9flow_in_cols =16 level4calls done2 *********OF Computation iteration =3********* Data copied from host to device kernel args set flow_rows =9flow_cols=16flow_in_rows =9flow_in_cols =16 level4calls done3 *********OF Computation iteration =4********* Data copied from host to device kernel args set flow_rows =9flow_cols=16flow_in_rows =9flow_in_cols =16 level4calls done4 Buffers created *********OF Computation Level =3********* *********OF Computation iteration =0********* Data copied from host to device kernel args set flow_rows =18flow_cols=32flow_in_rows =9flow_in_cols =16 level3calls done0 *********OF Computation iteration =1********* Data copied from host to device kernel args set flow_rows =18flow_cols=32flow_in_rows =18flow_in_cols =32 level3calls done1 *********OF Computation iteration =2********* Data copied from host to device kernel args set flow_rows =18flow_cols=32flow_in_rows =18flow_in_cols =32 level3calls done2 *********OF Computation iteration =3********* Data copied from host to device kernel args set flow_rows =18flow_cols=32flow_in_rows =18flow_in_cols =32 level3calls done3 *********OF Computation iteration =4********* Data copied from host to device kernel args set flow_rows =18flow_cols=32flow_in_rows =18flow_in_cols =32 level3calls done4 Buffers created *********OF Computation Level =2********* *********OF Computation iteration =0********* Data copied from host to device kernel args set flow_rows =36flow_cols=64flow_in_rows =18flow_in_cols =32 level2calls done0 *********OF Computation iteration =1********* Data copied from host to device kernel args set flow_rows =36flow_cols=64flow_in_rows =36flow_in_cols =64 level2calls done1 *********OF Computation iteration =2********* Data copied from host to device kernel args set flow_rows =36flow_cols=64flow_in_rows =36flow_in_cols =64 level2calls done2 *********OF Computation iteration =3********* Data copied from host to device kernel args set flow_rows =36flow_cols=64flow_in_rows =36flow_in_cols =64 level2calls done3 *********OF Computation iteration =4********* Data copied from host to device kernel args set flow_rows =36flow_cols=64flow_in_rows =36flow_in_cols =64 level2calls done4 Buffers created *********OF Computation Level =1********* *********OF Computation iteration =0********* Data copied from host to device kernel args set flow_rows =72flow_cols=128flow_in_rows =36flow_in_cols =64 level1calls done0 *********OF Computation iteration =1********* Data copied from host to device kernel args set flow_rows =72flow_cols=128flow_in_rows =72flow_in_cols =128 level1calls done1 *********OF Computation iteration =2********* Data copied from host to device kernel args set flow_rows =72flow_cols=128flow_in_rows =72flow_in_cols =128 level1calls done2 *********OF Computation iteration =3********* Data copied from host to device kernel args set flow_rows =72flow_cols=128flow_in_rows =72flow_in_cols =128 level1calls done3 *********OF Computation iteration =4********* Data copied from host to device kernel args set flow_rows =72flow_cols=128flow_in_rows =72flow_in_cols =128 level1calls done4 Buffers created *********OF Computation Level =0********* *********OF Computation iteration =0********* Data copied from host to device kernel args set flow_rows =144flow_cols=256flow_in_rows =72flow_in_cols =128 level0calls done0 *********OF Computation iteration =1********* Data copied from host to device kernel args set flow_rows =144flow_cols=256flow_in_rows =144flow_in_cols =256 level0calls done1 *********OF Computation iteration =2********* Data copied from host to device kernel args set flow_rows =144flow_cols=256flow_in_rows =144flow_in_cols =256 level0calls done2 *********OF Computation iteration =3********* Data copied from host to device kernel args set flow_rows =144flow_cols=256flow_in_rows =144flow_in_cols =256 level0calls done3 *********OF Computation iteration =4********* Data copied from host to device kernel args set flow_rows =144flow_cols=256flow_in_rows =144flow_in_cols =256 level0calls done4 OF done **********Corner Update Computation******************* kernel args set flow_rows =144flow_cols=256num of corners=47harris_flag=0 Corner Update called Corner Update done OF done Num of corners = 47 *************************************************** ------------------------------------------------------------