Intel® FPGA SDK for OpenCL™ Standard Edition: Best Practices Guide

ID 683176
Date 9/24/2018
Public
Document Table of Contents

4.2.2. Kernel Execution Tab

The Kernel Execution tab in the GUI provides a graphical representation of the overall kernel program execution process. It illustrates the execution time of each kernel and provides insight into the interactions between different kernel executions.

For example, if you run the host application from a networked directory with slow network disk accesses, the GUI can display the resulting delays between kernel launches while the runtime stores profile output data to disk.

Attention: To avoid potential delays between kernel executions and increases in the overall execution time of the host application, run your host application from a local disk.
Figure 66. The Kernel Execution Tab in the GUI

The horizontal bar graph represents kernel execution through time. The combination of the two bars shown in the first entry (fft1d) represents the total time. The second and last entries show kernel executions that occupy the time span. These bars represent the concurrent execution of output_kernel and input_kernel, and indicate that the kernels share common resources such as memory bandwidth.

Tip: You can examine profile data for specific execution times. In the example above, when you double-click the bar on the left for fft1d, another window opens to display profile data for that specific kernel execution event.

The Kernel Execution tab also displays information on memory transfers between the host and your devices, shown below:

Figure 67. Kernel Execution Tab: Host-Device Memory Transfer Information
Attention: Adjusting the magnification by zooming in or out might cause subtle changes to the granularity of the time scale.

To enable the display of memory transfer information, set the environment variable ACL_PROFILE_TIMER to a value of 1 and then run your host application. Setting the ACL_PROFILE_TIMER environment variable enables the recording of memory transfers. The information is stored in the profile.mon file and is then parsed by the GUI.