Intel started its oneAPI journey in 2019. From the beginning, this corporation committed to creating an open ecosystem for developing performant cross-architecture applications for CPUs, GPUs, and other accelerators. An open approach ultimately wins over proprietary systems because it:
- Uses the power of a large community
- Allows developers to choose what works best for them from top to bottom in the software and hardware stack
Intel pursued openness by adopting existing open source technologies, contributing projects when there was a gap, and opening up the design and specification process. The author of this article is an editor of the oneAPI specification and helped organize the oneAPI open source activity at Intel. This article focuses on open source projects.
SYCL* is the heart of oneAPI, enabling cross-platform data parallel programming in modern C++. SYCL is a standard from the Khronos* Group with broad participation across research institutions and companies. Intel contributes to the development of SYCL by participating in the SYCL standard committee and contributing SYCL support to the LLVM* project. The SYCL support—combined with SPIR-V*, Parallel Thread Execution (PTX), and CPU back ends from LLVM—enable targeting SYCL programs to a wide variety of CPUs and accelerators. SYCL is augmented with the oneAPI DPC++ Library, which provides STL-like capabilities for programming accelerators. When you need high-performance math, the oneAPI Math Kernel Library (oneMKL) includes Basic Linear Algebra Subprograms (BLAS) and the Linear Algebra Package (LAPACK), fast Fourier transforms (FFT), and random number generation. Many good math libraries are available, and open source oneMKL provides a common SYCL-based interface that lets you integrate low-level proprietary and open source libraries.
Beyond C++, Intel and the community are enabling open source implementations of Python*, Julia*, and Java* for oneAPI. Intel developed oneAPI accelerated, drop-in replacements for the popular NumPy, pandas, and scikit-learn* packages and enabled writing accelerator kernels directly in Python with Numba*. You can write accelerator kernels using Julia and in Java through the efforts of Julia Computing and Advanced Processor Technologies group at the University of Manchester, respectively.
The languages all sit on top of the Level Zero runtime. Level Zero provides services for loading and running programs, allocating memory, and more. Looking forward, Intel is using its experiences with Python, Julia, and Java to provide better runtime support for language in Level Zero.
Open source, deep-learning frameworks such as TensorFlow* and PyTorch* continue to be a focus for oneAPI. The computationally intensive parts are usually implemented with low-level libraries. Over the years, Intel has successfully integrated the oneAPI Deep Neural Network Library (oneDNN) into the leading frameworks to provide optimal performance on its CPUs and more recently extended that capability to GPUs. It can be challenging to change a framework to take advantage of new hardware capabilities. To solve this problem, we collaborated with the TensorFlow community to develop a pluggable interface that makes it easy to add accelerator support. This has become the flagship example for pluggable interfaces. This opens up opportunities for more aggressive hardware-specific optimization in TensorFlow. For example, Intel is using the pluggable interface to enable graph-level optimization in oneDNN. The integration of oneDNN into these frameworks and its open source license makes it an attractive shortcut for porting deep-learning frameworks to new platforms. This results in increased activity in porting oneDNN to new architectures. In fact, Fujitsu* took the open source oneDNN library and ported it to support its Arm*-based CPUs. That library runs on Fugaku, the world's fastest supercomputer.
Intel is tirelessly improving and augmenting open source software for the oneAPI platform, ensuring it integrates into popular frameworks, and working with the ever-growing community of developers. The future is bright for accelerator development tools to be truly open.