A mailing list improves communication for all the people interested in a 01.org Project: developers, final users and contributors. A more direct channel to solve your questions and help others to get involved.
The Intel® C for Metal development package is a software development package for Intel® Graphics Technology. It includes the Intel® C for Metal Compiler, the Intel® C for Metal Runtime, Intel® Media Driver for VAAPI, and reference examples, which can be used to develop applications accelerated by Intel® Graphics Media Accelerator. A typical application contains two kinds of source code, kernel and host. The kernel is written in Intel® C for Media language, compiled to GPU ISA binary by the Intel® C for Metal Compiler, and executed on the GPU. Host manages workloads through the Intel® C for Metal Runtime and user mode media driver.
C for Metal (CM) is a programming language that allows for creation of high-performance compute and media kernels for Intel® GPUs using explicit SIMD programming model. CM is based on restricted C++ specification, with extensions to support new SIMD constructs and data types, inline assembly, and access to architecture-specific hardware features.
Features of CM language include (but not limited to):
- Predefined vector and matrix types, which are mapped to registers (GRF)
- Explicit control of data layout (e.g., transpose) in GRF
- Explicit control of data movement and caching
- Explicit parallelism expressed via vector and matrix operations
- Mixing SIMD widths within single kernel
- Cross SIMD-lane operations via vector/matrix operations
OpenCL and DPCPP utilize an implicit SIMD programming model where a kernel (code running on GPU) operates on a single unit of the data space, e.g. work-item in OpenCL. Intel® Graphics Compiler is responsible for vectorizing kernel code based on hardware-supported SIMD width, with each SIMD lane corresponding to a work-item. Implicit model is simple and relatively easy to program for purely data-parallel programs and can satisfy most of usage cases.
CM utilizes an explicit SIMD programming model where a kernel contains SIMD constructs that provide fine control of data space layout and operations. Intel® Graphics Compiler is responsible for translating these constructs into appropriate vector instructions. Explicit model is harder to program, but provides higher throughput for the programs with mixed serial/parallel execution and irregular memory accesses.
C for Metal Software Development Kit (CM SDK) is a collection of software components that allows for creation of applications written in CM language. To accomodate industry focus on using GPU for HPC and AI applications, CM SDK's primary target are developers designing high-performance compute applications for Intel® GPUs. Intel® C for Metal development package targetting development of media kernels is deprecated in favor of CM SDK.
A typical application developed for GPU is comprised of kernel code and host code. Kernel code is written in languages such as CM or OpenCL, and contains instructions that will be executed on GPU. Host code is written in languages such as C or C++, and utilizes runtime API functions to setup kernel for GPU execution: load kernel code into memory, setup arguments and runtime parameters, etc. There are currently 2 distinct runtime APIs that are available in CM SDK:
- OpenCL runtime API - industry-standard OpenCL runtime API that can be used with CM and OpenCL applications. Provided primarily for compatibility with legacy applications. Supported, with no new features being planned
- Level0 runtime API* - open-source unified Level0 runtime API that provides fine control of GPU execution. It is a part of OneAPI and reflects Intel’s long-term software contract. Actively developed and maintained by Intel®
* we encourage all users to use Level0 API for CM application development
To obtain more information, please refer to docs folder inside package
We encourage you to contact us with any questions you may have via GitHub Issues