Introduction to the PowerVR Compute Development Recommendations#
The PowerVR family of Graphics Cores from Imagination Technologies is designed to perform both compute and graphics tasks. Its programmable core architecture allows for extremely efficient and high-performance compute execution.
Document Overview#
This document describes the recommended usage guidelines for achieving optimal performance when using compute on Imagination’s PowerVR Graphics Cores. Most of the guide describes constructs and patterns that directly emerge from the PowerVR cores architecture. This enables the developer to make the correct decisions irrespective of the preferred approach as far as APIs and programming languages are concerned. Additionally, several specific details are included for OpenCL, OpenGL, and OpenGL ES Compute. These details have been written against the following API versions:
OpenGL ES 3.1
OpenGL 4.3
OpenCL 1.x and 2.0
This document assumes that the reader has a good working knowledge of at least one of these APIs. It is also assumed that the reader has worked through the examples of the relevant PowerVR Compute SDK.
After reading this document, readers should have a solid understanding of how compute works on PowerVR Graphics Cores, as well as a good understanding of how to develop efficient and well-optimised code for these devices.
This document also provides an optimisation strategy quick reference sheet.
Glossary#
Throughout this document, extensive use is made of terminology identified in the table below.
Common terms#
Term |
Also referred to as |
Description |
---|---|---|
USC (Unified Shading Cluster) |
Shading Cluster, Shading Unit, Execution Unit |
A semi-autonomous part of the Graphics Core that can typically execute an entire work-group. Other large parts like Texture Units can be shared among USCs. |
Core |
Processor, Graphics Core |
An almost completely autonomous part of the Graphics Core. Typically, a collection of USCs and possibly supporting hardware such as texture units. |
Task |
Thread Group, Warp, Wavefront |
The native grouping of threads that a USC executes. Number of threads varies per PowerVR Core. |
API-specific terms#
Term |
OpenGL and OpenGL ES |
OpenCL |
RenderScript |
---|---|---|---|
Kernel / shader |
Compute Shader |
Kernel |
Kernel |
Thread |
Thread, shader instance |
Work-item |
Kernel invocation |
Work-group |
Work-group |
Work-group |
N/A |
Shared memory |
|
|
N/A |
Image |
Texture, image |
Image |
Image |
Constant, constant memory |
|
|
Constants |
Private memory |
Local variables, temporaries |
Variables, |
Local variables, temporaries |
Dataset |
Dispatch size, dataset |
|
Dataset |
Architecture Types#
Architecture Type |
Core |
---|---|
Type 1 |
6/6XT, 7/7XT, 8XE/XEP, 9XE/XM |
Type 2 |
AXE, AXM, BXE, BXM, BXS (64 and Smaller) |
Type 3 |
9XTP |
Type 4 |
AXT/BXT, BXS (256 and Larger) |