To run the software application, go to the directory called sw_run
, and launch the application as follows:
cd $CONV_TUTORIAL_DIR/sw_run
./run.sh
When the application is launched, it should produce an output similar to the following. The software application will process a randomly generated set of images and report performance. Here you have used randomly generated images to avoid any extra library dependencies, such as OpenCV. But in the next labs, while working with the hardware implementation, the option to use the OpenCV library for loading images or use randomly generated images will be provided given you have OpenCV 2.4 installed on the machine. If another version of OpenCV is needed, you can modify the host application to use different APIs to load and store images from the disk.
----------------------------------------------------------------------------
Number of runs : 60
Image width : 1920
Image height : 1080
Filter type : 6
Generating a random 1920x1080 input image
Running Software version on 60 images
CPU Time : 24.4447 s
CPU Throughput : 14.5617 MB/s
----------------------------------------------------------------------------
The application run measures performance using high precision timers and reports it as throughput. The machine used for experiments produced a throughput of 14.51 MB/s. The following machine details are listed:
CPU Model : Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz
RAM : 64 GB
The measured performance is “2.34 FPS” only, whereas the required throughput is 60 FPS. The acceleration needed to meet the required performance of 60 FPS:
Acceleration Factor = Throughput (Required)/Throughput(SW only)
Acceleration Factor = 373/14.56 = 25.6X
So to meet the required performance of processing 60 frames per second, the software implementation needs to be accelerated by a factor of 26x.