About this book

This book describes software development and optimization for OpenCL on Mali™ GPUs.

Product revision status

The rmpn identifier indicates the revision status of the product described in this book, for example, r1p2, where:
rmIdentifies the major revision of the product, for example, r1.
pnIdentifies the minor revision or modification status of the product, for example, p2.

Intended audience

This guide is written for software developers with experience in C or C-like languages who want to develop OpenCL on Mali™ Midgard GPUs

Using this book

This book is organized into the following chapters:
Chapter 1 Introduction

This chapter introduces Mali™ GPUs, OpenCL, and the Midgard OpenCL driver.

Chapter 2 Parallel Processing Concepts

This chapter describes the main concepts of parallel processing.

Chapter 3 OpenCL Concepts

This chapter describes the OpenCL concepts.

Chapter 4 Developing an OpenCL Application

This chapter describes the development stages of an OpenCL application.

Chapter 5 Execution Stages of an OpenCL Application

This chapter describes the execution stages of an OpenCL application.

Chapter 6 Converting Existing Code to OpenCL

This chapter describes converting existing code to OpenCL.

Chapter 7 Retuning Existing OpenCL Code

This chapter describes how to retune existing OpenCL code so you can run it on Mali™ GPUs.

Chapter 8 Optimizing OpenCL for Mali GPUs

This chapter describes the procedure to optimize OpenCL applications for Mali™ GPUs.

Chapter 9 OpenCL Optimizations List

This chapter lists several optimizations to use when writing OpenCL code for Mali™ GPUs.

Chapter 10 The kernel auto-vectorizer and unroller

This chapter describes the kernel auto-vectorizer and unroller.

Appendix A OpenCL Data Types

This appendix describes OpenCL data types.

Appendix B OpenCL Built-in Functions

This appendix lists the OpenCL built-in functions.

Appendix C OpenCL Extensions

This appendix describes the OpenCL extensions that the Midgard OpenCL driver supports.

Appendix D Using OpenCL Extensions

This appendix provides usage notes on specific OpenCL extensions.

Appendix E OpenCL 1.2

This appendix describes some of the important changes to the Mali OpenCL driver in OpenCL 1.2.

Glossary
The ARM Glossary is a list of terms used in ARM documentation, together with definitions for those terms. The ARM Glossary does not contain terms that are industry standard unless the ARM meaning differs from the generally accepted meaning.
See the ARM Glossary for more information.
Typographic conventions
italic
Introduces special terminology, denotes cross-references, and citations.
bold
Highlights interface elements, such as menu names. Denotes signal names. Also used for terms in descriptive lists, where appropriate.
monospace
Denotes text that you can enter at the keyboard, such as commands, file and program names, and source code.
monospace
Denotes a permitted abbreviation for a command or option. You can enter the underlined text instead of the full command or option name.
monospace italic
Denotes arguments to monospace text where the argument is to be replaced by a specific value.
monospace bold
Denotes language keywords when used outside example code.
<and>
Encloses replaceable terms for assembler syntax where they appear in code or code fragments. For example:
MRC p15, 0, <Rd>, <CRn>, <CRm>, <Opcode_2>
SMALL CAPITALS
Used in body text for a few terms that have specific technical meanings, that are defined in the ARM glossary. For example, IMPLEMENTATION DEFINED, IMPLEMENTATION SPECIFIC, UNKNOWN, and UNPREDICTABLE.

Additional reading

This book contains information that is specific to this product. See the following documents for other relevant information.
ARM publications
See Infocenter, http://infocenter.arm.com, for access to ARM documentation.
Other publications
OpenCL 1.2 Specification, www.khronos.org
Non-ConfidentialPDF file icon PDF versionARM 100614_0300_00_en
Copyright © 2012, 2013, 2015, 2016 ARM. All rights reserved.