OpenCL™ Developer Guide for Intel® Core™ and Intel® Xeon® Processors
ID
773005
Date
10/30/2018
Public
Legal Information
Getting Help and Support
Introduction
Check-list for OpenCL™ Optimizations
Tips and Tricks for Kernel Development
Application-Level Optimizations
Debugging OpenCL™ Kernels on Linux* OS
Performance Debugging with Intel® SDK for OpenCL™ Applications
Coding for the Intel® Architecture Processors
Why Optimizing Kernels Is Important?
Avoid Spurious Operations in Kernels
Avoid Handling Edge Conditions in Kernels
Use the Preprocessor for Constants
Prefer (32-bit) Signed Integer Data Types
Prefer Row-Wise Data Accesses
Use Built-In Functions
Avoid Extracting Vector Components
Task-Parallel Programming Model Hints
Common Mistakes in OpenCL™ Applications
Introduction for OpenCL™ Coding on Intel® Architecture Processors
Vectorization Basics for Intel® Architecture Processors
Vectorization: SIMD Processing Within a Work Group
Benefitting from Implicit Vectorization
Vectorizer Knobs
Targeting a Different CPU Architecture
Using Vector Data Types
Writing Kernels to Directly Target the Intel® Architecture Processors
Work-Group Size Considerations
Threading: Achieving Work-Group Level Parallelism
Efficient Data Layout
Using the Blocking Technique
Intel® Turbo Boost Technology Support
Global Memory Size
About This Document
Apply the optimizations described in this guide using the Intel® SDK for OpenCL™ Applications, which is available with:
- Intel® Media Server Studio
- Intel® System Studio
- Intel® SDK for OpenCL™ Applications standalone version
NOTE:
This publication, the OpenCL™ Developer Guide for Intel® Core™ and Intel® Xeon® Processors, was previously known as the OpenCL™ Optimization Guide for Intel® Xeon Phi™ Coprocessor and Intel® Xeon® Processor.
Intel SDK for OpenCL Applications includes the Intel® Code Builder for OpenCL™ API. Intel Code Builder for OpenCL API is a software development tool that enables development of OpenCL applications via well-known integrated development environments, targeting the Intel® Architecture processors.
The tool supports local (host-based) and remote (target-based) development on the following platforms, IDEs, and devices:
Operating System | Host/Target | Intel® SDK for OpenCL™ Applications, standalone version | Intel® SDK for OpenCL™ Applications as part of Intel® System Studio | Intel® SDK for OpenCL™ Applications as part of Intel® Media Server Studio |
---|---|---|---|---|
Windows* | Host | Yes | Yes | - |
Target | Yes | Yes | - | |
Linux* | Host | Yes | Yes | Yes |
Target | Yes | Yes | Yes |
To better understand which version of Intel SDK for OpenCL applications is fitting to you, check the Which Version of the Intel® SDK for OpenCL™ Applications Should I Use? page.