Sorry, you need to enable JavaScript to visit this website.

Feedback

Your feedback is important to keep improving our website and offer you a more reliable experience.

Introducing the Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN)

BY Kent Moffat ON Aug 26, 2016

Deep Neural Networks (DNN) are on the cutting edge of machine learning. Today this approach is used for image recognition and both video and natural language processing, as well as to solve complex visual understanding problems such as autonomous driving. This is the area of active innovation where new algorithms and software tools are being published on a monthly basis. DNN are very demanding in terms of compute resources, and performance-efficient implementations of algorithms are critical for both academia and the industry.

Here at Intel® we work in close collaboration with the leading academic and industry co-travelers to solve the architectural challenges, both in hardware and software, for Intel's upcoming multicore/many-core compute platforms. To help innovators tackle the complexities of machine learning, we are making performance optimizations available to our developers through familiar Intel® software tools, specifically through the Intel® Data Analytics Acceleration Library (Intel® DAAL) and enhancements to the Intel® Math Kernel Library (Intel® MKL).

As we introduced DNN extensions to Intel MKL 2017, we realized that the area was changing very rapidly. Now we would like to bring the collaboration to the next level with the launch of Intel MKL-DNN, an open source performance library for deep learning. We invite researchers, framework developers and production software developers to work together on accelerating deep learning workloads on Intel® architectures.

So what is it?

Intel MKL-DNN is a library of DNN performance primitives optimized for Intel architectures. This is a set of highly optimized building blocks intended to accelerate compute intensive parts of deep learning applications, particularly DNN frameworks such as Caffe, Tensorflow, Theano and Torch. The library is distributed as source code via a GitHub repository and is licensed under the Apache 2.0 license. The library is implemented in C++ and provides both C++ and C APIs,  which allow the functionality to be used from a wide range of high-level languages, such as Python or Java.

This release is a technical preview that demonstrates the library architecture, API, and performance. The functionality includes all the primitives necessary to accelerate AlexNet and VGG topologies for scoring (or inference) on processors with Intel® Advanced Vector Extensions 2 (Intel® AVX2) support:

·       Direct 2D convolution

·       Local response normalization (LRN)

·       Rectified linear unit neuron activation (ReLU)

·       Maximum pooling

·       Inner product

Most of these primitives include low-level optimizations up to SIMD instruction level implemented with the Xbyak JIT engine. To resolve a dependency on matrix-matrix multiplication in inner product, this release uses a subset of Intel MKL functionality included in the distribution.

Intel MKL-DNN vs. Intel MKL

Intel MKL-DNN and Intel MKL are developed by the same team of engineers and even share certain parts of the implementation. We developed Intel MKL-DNN as an open source product from scratch with the goal of seamless integration into open source software stacks. Intel MKL-DNN will be used as a playground for experiments, innovation, and collaboration with our partners. Functionality added into Intel MKL-DNN will eventually make its way into Intel MKL as well.

This technical preview has limited functionality compared to the functionality available in Intel MKL, as shown in the table below. As we continue development of Intel MKL-DNN, we will match all of the features currently available in Intel MKL 2017 DNN domain. From a performance perspective, the Intel MKL-DNN functionality provides the same or better performance than Intel® MKL, as of the Intel MKL-DNN v0.1 release date.

 

Intel MKL-DNN v0.1

Intel MKL 2017

Convolution

Direct 3D

Direct 3D

Pooling

Maximum

Maximum

Minimum

Average

Activation

ReLU

ReLU

Normalization

LRN (cross-channel, within-channels)

LRN (cross-channel)

Batched

Training/scoring support

Scoring

Scoring

Training

Topologies supported

AlexNet

VGG

AlexNet

VGG

GoogleNet

ResNet

API

C

C++

C

 

Intel MKL-DNN provides a brand new C++ API that allows easier integration of new primitives into applications. While both Intel MKL-DNN and Intel MKL feature a C API, these libraries are not API compatible. A transition between these two is straightforward as most design concepts are shared between these libraries. As we continue development and Intel MKL-DNN API reaches its maturity, it will become available in Intel MKL, making the libraries API-compatible.