OpenCL mode provides a visual representation of OpenCL code. It shows which command is being run on each thread over the course of the capture session and provides mechanisms to explore command dependencies.
Streamline can display an OpenCL timeline showing kernel dependencies and execution using information from Mali T6/7xx devices. This is an early access feature available to Mali licensees only. Contact your support team for more information.
The Open Computing Language, or OpenCL is a framework for parallel execution of jobs or kernels using task-based and data-based parallelism. To help you visualize the behavior of OpenCL code, Streamline provides the OpenCL mode in the Timeline view.
Figure 6-13 OpenCL mode in the Timeline view
In OpenCL, commands are added to queues, then executed in parallel on one of the available hardware devices, usually a CPU, GPGPU, or DSP. Commands in a queue execute in series, but commands can also be dependent on the completion of commands in other queues.
Command names are shown inside colored areas, representing the duration of their execution. If there are two or more commands in a bin, and there is enough room, the number of commands in the bin is shown in light gray. Dependencies between commands are shown using connecting lines. These have circles at each end to indicate the direction of the dependency. A command shown with a closed circle is dependent on a command shown with an open circle.
Gaps might appear between the execution of commands in a queue. In the following figure, a gap occurs although six commands are queued. To find out why commands are not executing, Streamline allows you to click on a command to give it focus, hide any non-relevant information, and show its dependency connections.
Figure 6-14 A gap between commands in OpenCL mode
The following figure shows the selected command highlighted with a yellow border and connecting lines linking it to the commands it depends on. This shows that the reason for the gap is the selected command is waiting for the completion of a command in a different queue, on a different device.
Figure 6-15 A selected command in OpenCL mode
All of the data in OpenCL mode is presented as a tabbed hierarchy. Click on any of the tabs on the left of the OpenCL mode to select that tab and each of its subordinates. For example, if you click on a specific device, Streamline highlights each queue for that device and the Execution, Sync., and Memory rows for each of those queues.
Zooming out or scrolling reveals the point at which the selected command was enqueued. Yellow lines show where selected commands enter and exit a queue.
Figure 6-16 Zooming out in OpenCL mode
Hovering over a command in OpenCL mode displays a tooltip that shows the command name, the time that it was initiated, the time it took the command to start after it was initiated, and its duration.
Figure 6-17 OpenCL mode tooltip
At the bottom of the chart in OpenCL mode is a search and filter field. Enter a string in the field and OpenCL mode updates to show only the commands that contain that string.
When the Show all dependencies option is selected, dependencies are displayed for all commands, whether or not they are selected.
Figure 6-18 Filtering in OpenCL mode