Issue link: https://resources.mouser.com/i/1437726
32 REIMAGINING WHAT'S NEXT of hardware architecture -- CPUs, GPUs, FPGAs, or any other accelerator microchip (collectively referred to as XPUs) released in the future. Put another way, at the bottom of the AI stack, Intel makes a variety of processors (e.g., CPUs, GPUs, and FPGAs) with different architectures. At the top of the stack are third-party middleware and frameworks that AI application developers use routinely (e.g., TensorFlow, PyTorch, OpenVINO, NumPy, etc.). Instead of developers having to rewrite code every time they want to target a new architecture, they leverage Intel's oneAPI to take care of the laborious work of bridging the gap between hardware and frameworks. You might ask why do we have to support multiple hardware architectures? The answer is that each architecture is optimized for different types of datasets. For example, CPUs are better suited for scalar data, whereas GPUs are better at handling vector data. Understanding the various strengths and weaknesses of different hardware architectures is key to ensuring that the applications built atop the hardware run fast and efficiently. Intel has made it relatively easy to get started with oneAPI by creating a one-stop website to download the suite of tools that comprise oneAPI. That site can be accessed here. The Intel® oneAPI product family includes a combination of internally developed and third-party software tools that have been optimized for a variety of Intel hardware. The software tools roughly fall into three broad buckets, each of which builds on the previous. When combined, they provide an integrated AI development toolchain: Figure 3: Intel Arria 10 GX FPGA development kit lets engineers evaluate Intel FPGA hardware for their applications. (Source: Intel) • Performance-oriented libraries and programming languages • Optimized ML frameworks • Domain-specific toolkits, including libraries and accelerated workload tools Let's take a look at some of the critical tools in each category. 1. Libraries/Languages: At this most fundamental level, Intel provides the building blocks of AI -- mathematical and data analysis functionality in the form of software libraries that are optimized for running on Intel hardware. That includes everything from datacenter grade Xeon processors to Altera Arria FPGAs and even low-power Atom processors for endpoint devices. Optimization of code execution and memory utilization ultimately means speed. Deep Neural Network Library (oneDNN): Helps developers improve productivity and enhance their deep learning frameworks' performance. Use the same API to develop for CPUs, GPUs, or both. Then implement the rest of the application using Data-Parallel C++. This library is included in both the Intel® oneAPI Base Toolkit and Intel® oneAPI DL Framework Developer Kit. Math Kernel Library (MKL) and Data Analytics Acceleration Library (DAAL): The MKL, written in C/ C++ and Fortran, provides a numeric library capable of efficiently performing complex mathematical operations such as Fourier transforms and vector math. It remains the de facto numeric library in MATLAB and NumPy. However, one constraint of MKL is that all data to be processed must reside in memory concurrently. The more recent DAAL (written in C++, Java, and Python) addresses this constraint and provides even more data analysis functionality from data acquisition to model validation. Intel has worked with various communities, including Apache (Hadoop and Spark), R, and MATLAB, to integrate Figure 4: nGraph is a software library that lets developers target machine learning frameworks to Intel hardware. (Source: Intel)