After more than a year in beta, Intel has finished version 1.0 of its unified programming model oneAPI.
The project, first introduced in late 2018, is meant to provide an approach to developing code that can be used across hardware targets from CPUs to accelerator structures like GPUs and field programmable gate arrays (FPGAs).
The oneAPI specification describes standard programming interfaces for oneAPI, which have been developed in an open source fashion by representatives from Intel and other interested parties such as HPE, Codeplay, MathWorks, Xilinx, and the universities of Bristol and Washington. It consists of nine elements, one of which is Data Parallel C++ (DPC++).
DPC++ is the project’s core language for programming accelerators and multiprocessors and is built upon C++ and The Khronos Group’s SYCL cross-platform abstraction layer. It can be used to write APIs and programs, while a so-called Level Zero interface offers a common abstraction for underlying devices.
The oneAPI project also includes the oneDPL library, which provides and extends C++ standard functionality, as well as deep neural network library oneDNN, and accompanying oneCCL to realise communication in deep learning applications. Other modules accumulate algorithms for accelerated data science, thread-based parallelism, high performance calculations, and video processing.
Systems used in the oneAPI context tend to consist of a host, usually a multi-core CPU, and devices such as GPUs and FPGAs that have a command queue associated to them. oneAPI applications run on the host and should the help of a GPU be needed, for example, the app sends a command group with functions and variables to the device’s queue.
Communication between apps and devices is done via various memory sharing mechanisms. A scheduler decides when a command group runs, and events help to keep hosts and device functions in-sync.
Intel isn’t the only one trying a performance-pushing initiative: Nvidia’s CUDA and AMD’s ROCm are also looking to help their users make the most of their accelerators. Intel, however, seems to be slightly more active when it comes to extending oneAPI beyond its own hardware portfolio – or at least at getting folks together who are.
Contributor Codeplay, for example, has been busy making progress by getting the interface to work with Nvidia GPUs, while sub-projects like oneDNN are already pretty good at using Arm.
AMD Radeon support is in the works as well. For that, Intel has partnered with Heidelberg University, who just announced a new oneAPI Academic Center of Excellence. The team there plans to add DPC++ capabilities to hipSYCL, a project supporting systems working with AMD and Nvidia GPUs, though AMD is said to be the primary focus of the current endeavour.