The Intercept Layer for OpenCL Applications is a tool that can intercept and modify OpenCL calls for debugging and performance analysis. Using the Intercept Layer for OpenCL Applications requires no application or driver modifications.
To operate, the Intercept Layer for OpenCL Applications masquerades as the OpenCL ICD loader (usually) or as an OpenCL implementation (rarely) and is loaded when the application intends to load the real OpenCL ICD loader. As part of the Intercept Layer for OpenCL Application's initialization, it loads the real OpenCL ICD loader and gets function pointers to the real OpenCL entry points. Then, whenever the application makes an OpenCL call, the call is intercepted and can be passed through to the real OpenCL with or without changes.
This project adheres to the Intercept Layer for OpenCL Application's code of conduct. By participating, you are expected to uphold this code.
All controls are documented here.
Instructions to build the Intercept Layer for OpenCL Applications can be found here.
Instructions to use the Intercept Layer for OpenCL Applications Loader (cliloader
) can be found here.
Instructions for the old loader (cliprof
) can still be found here.
Instructions to install the Intercept Layer for OpenCL Applications can be found here.
Troubleshooting steps and answers to frequently asked questions can be found here.
Detailed instructions:
- How to Inject Modified Programs
- How to Dump and Disassemble Kernel ISA
- How to Capture AUB Files
- How to Collect MDAPI Performance Metrics
- How to Use the Intercept Layer for OpenCL Applications with VTune
- How to Use the Intercept Layer for OpenCL Applications with Chrome
- How to Dump Single Standalone Kernels which can be replayed independently for debugging and profiling
A tutorial demonstrating common usages of the Intercept Layer for OpenCL Applications can be found here.
The Intercept Layer for OpenCL Applications is licensed under the MIT License.
Notes:
- These files are partially generated and hence do not include license file headers, however they are also licensed under the MIT License:
The Intercept Layer for OpenCL Applications uses third-party code licensed under the following licenses:
- These files are licensed under the Khronos(tm) License:
- These files are licensed under the Boost Software License - Version 1.0:
Please file a GitHub issue to report an issue or ask questions. Private or sensitive issues may be submitted via email to this project's maintainer (Ben Ashbaugh - ben 'dot' ashbaugh 'at' intel 'dot' com), or to any other Intel GitHub maintainer (see profile for email address).
Contributions to the Intercept Layer for OpenCL Applications are welcomed and encouraged. Please see CONTRIBUTING for details how to contribute to the project.
OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos.
* Other names and brands may be claimed as the property of others.
Copyright (c) 2018-2023, Intel(R) Corporation