Application Acceleration With FPGAs
Programmable Acceleration Cards (PACs), DCP, FPGA AI Suite, Software Stack, and Reference Designs
477 Discussions

Fluctuation in the execution time results for OpenCL applications on Stratix V FPGA board.

fpgalearner
Beginner
1,472 Views

Hi,

I have a concern with the execution time results that I get from the Intel SDK Profiler. I am running rodinia applications using the Intel SDK HLS 16.0 on the Stratix V board. The profiler reports execution time results fluctuating in the order of ~ 20-30ms. I have tested and observed the same pattern for a number of applications including the vector add example that is included in the test example, although the results I get are right. Can anyone please help with why I see such results?

0 Kudos
1 Solution
HRZ
Valued Contributor III
742 Views

The profiler is not made for timing measurement, it is made for detecting bottlenecks. Since the profiler dumps data onto the disk during execution, it could cause significant overhead and fluctuation in the run time. Use a host side timer (e.g. gettimeofday()) or the "clGetEventProfilingInfo()" function provided by the OpenCL standard to measure run time instead. 20-30 ms of fluctuation could be normal if run time is in the order of multiple seconds. Furthermore, for short benchmarks with random memory accesses, run time fluctuation could be high due to variable run-time scheduling of memory accesses.

 

P.S. You might want to take a look at this repository which already has some of the Rodinia benchmarks ported for Intel FPGAs and already has host side timers in place:

 

https://github.com/fpga-opencl-benchmarks/rodinia_fpga

View solution in original post

0 Kudos
1 Reply
HRZ
Valued Contributor III
743 Views

The profiler is not made for timing measurement, it is made for detecting bottlenecks. Since the profiler dumps data onto the disk during execution, it could cause significant overhead and fluctuation in the run time. Use a host side timer (e.g. gettimeofday()) or the "clGetEventProfilingInfo()" function provided by the OpenCL standard to measure run time instead. 20-30 ms of fluctuation could be normal if run time is in the order of multiple seconds. Furthermore, for short benchmarks with random memory accesses, run time fluctuation could be high due to variable run-time scheduling of memory accesses.

 

P.S. You might want to take a look at this repository which already has some of the Rodinia benchmarks ported for Intel FPGAs and already has host side timers in place:

 

https://github.com/fpga-opencl-benchmarks/rodinia_fpga

0 Kudos
Reply