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

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

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)