Introduction to the PowerVR Compute Development Recommendations

PowerVR Rogue is a family of Graphics Cores from Imagination Technologies designed to perform both compute and graphics tasks. Its programmable core architecture allows for extremely efficient and high-performance compute execution.

Document Overview

Elaboration on context of the document and its goals.

This document describes the recommended usage guidelines for achieving optimal performance when using compute on Imagination's PowerVR Rogue Graphics Cores. Most of the guide describes constructs and patterns that directly emerge from the PowerVR Rogue 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, OpenGL ES Compute, and RenderScript. These details have been written against the following API versions:

  • OpenGL ES 3.1
  • OpenGL 4.3
  • OpenCL 1.x and 2.0
  • RenderScript

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, or has referred to Google's documentation for RenderScript, available here.

After reading this document, readers should have a solid understanding of how compute works on Rogue Graphics Cores, as well as a good understanding of how to develop efficient and well-optimised code for these devices.

Note: This document also provides an optimisation strategy quick reference sheet in Appendix C.

Glossary

A list of commonly used terms and their meanings/alternatives.

Throughout this document, extensive use is made of terminology identified in the table below.

Table 1. 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. Consists of 32 threads on PowerVR Rogue cores.
Table 2. API-specific terminology
Term OpenGL and OpenGL ES OpenCL RenderScript
Kernel or shader Compute shader Kernel Kernel
Thread Thread, shader instance Work-item Kernel Invocation
work-group work-group Work-group N/A
Shared memory shared variables local memory N/A
Image Texture, image Image Image
Constant, constant memory const / uniform variable, uniform block, uniform buffer constant memory Constants
Private memory Local variables, temporaries Variables, private memory Local variables, temporaries
Dataset Dispatch size, dataset Global work, ND Range Dataset