# title
Arm Immortalis and Mali GPU OpenCL Developer Guide

# topic.label
Arm® Immortalis™ and Mali™ GPU OpenCL Developer Guide

# topic.topics[].topics[].label
Limitations of parallel processing and Amdahl's law

# topic.topics[].label
Execution stages of an OpenCL application

# topic.topics[].topics[].label
Initializing and creating OpenCL contexts

# topic.topics[].topics[].topics[].label
Determining the optimal global work size

# topic.topics[].topics[].topics[].label
About analyzing code for parallelization

# topic.topics[].topics[].topics[].label
Finding operations with few dependencies

# topic.topics[].topics[].label
Parallel processing techniques in OpenCL

# topic.topics[].topics[].topics[].label
Use the global ID instead of the loop counter

# topic.topics[].topics[].topics[].label
Compute values in a loop with a formula instead of using counters

# topic.topics[].topics[].topics[].label
Perform computations with dependencies in multiple-passes

# topic.topics[].topics[].topics[].label
Pre-compute values to remove dependencies

# topic.topics[].topics[].label
Using parallel processing with non-parallelizable code

# topic.topics[].topics[].label
Differences between desktop-based architectures and GPUs

# topic.topics[].topics[].label
Load balancing between control threads and OpenCL threads

# topic.topics[].topics[].topics[].label
Do not use clFinish() for synchronization

# topic.topics[].topics[].topics[].label
Do not use any of the clEnqueueMap() operations with a blocking call

# topic.topics[].topics[].topics[].label
Use CL_MEM_ALLOC_HOST_PTR to avoid copying memory

# topic.topics[].topics[].topics[].label
Do not create buffers with CL_MEM_USE_HOST_PTR if possible

# topic.topics[].topics[].topics[].label
Sharing memory between I/O devices and OpenCL

# topic.topics[].topics[].topics[].label
Sharing memory in a fully coherent system

# topic.topics[].topics[].topics[].label
Sharing memory in an I/O coherent system

# topic.topics[].topics[].label
Reducing the effect of serial computations

# topic.topics[].topics[].topics[].label
Synchronization when using the cl_khr_egl_image extension

# topic.topics[].topics[].topics[].label
Limitation of the current implementation of cl_ext_cxx_for_opencl

# metadata.contentDescription
This book describes software development and optimization for OpenCL on Immortalis and Mali Valhall and 5th Generation GPUs.