# GPU621/Maths

## Contents

# Project Name

Intel Math Kernal Library

## Group Members

## Intel Math Kernel Library

## What is it?

Intel Math Kernel Library (MKL) as the name implies is a library of math functions created by Intel and launched in May 2003. It is optimized for use in systems using an Intel Processor and is available in both C and Fortran. It was created for use in Engineering, Financial, and Scientific software to allow for easy and efficient calculations of common math functions. MKL is fully parallelized for shared memory systems with OpenMP and for distributed memory systems with MPI.

## What does it contain?

MKL contains many of the common mathematical functions and routines that one might need in a software for engineering, financial, or scientific purposes. These functions are broken up into eight major functional categories.

**Basic Linear Algebra Subroutines (BLAS)**

BLAS contains many operations for working with vectors and matrices. The BLAS functions and routines are broken up into three levels: Level 1: Vector - Vector Operations Level 2: Vector - Matrix Operations Level 3: Matrix - Matrix Operations

**SparseBLAS**

A subset of BLAS containing functions and routines for operating on sparse vectors which is a vector where the majority of the elements are 0 or null. SparseBLAS is also split up into the same three levels as BLAS.

**Linear Algebra Package (LAPACK)**

A library functions for solving linear equations, linear least squares problems, eigenvalue and singular value problems.

**Parallel Direct Sparse Solver Interface (ParDiSo)**

A package for solving large sparse linear systems on shared memory multiprocessor systems using level 3 BLAS functions.

**Vector Mathematics Functions**

A library containing functions for operating on the elements of one or more vectors, performing operations such as arithmetic, power, trigonometric, exponential, rounding, and others.

**Vector Statistics Functions**

A library containing functions for generating vectors of pseudo-random numbers according to specified distributions and performs convolution and correlation computations.

**Fourier Transform Functions**

A library containing functions for calculating Fast Fourier Transforms (FFT).

**Deep Neural Network Functions (DNN)**

A library of functions intended for use in deep neural network applications that use things like machine learning or image/speech recognition.

## How Do You Use It?

**Getting It**

Before you can use MKL you need to first set it up, a pretty easy process. MKL is available from intel in two different ways. Firstly, it is included as a part of Intel Parallel Studio XE and you simply have to ensure it is selected during the installation process. The second way is by downloading the stand alone library which is available on Intel’s website for no charge.

**Using It**

Once you have it set up you can easily use the library through one of two ways depending on how you got it. If you installed it with parallel studio it can be easily enabled by first enabling the Intel compiler for your project, then going to the project properties and under the Intel Performance Libraries Section, changing “Use Intel MKL” to any of the three settings. Sequential is a version of MKL that isn’t parallelized, Parallel is a version that is parallelized using OpenMP for shared memory systems, finally, cluster is intended for use with MPI in a distributed memory system. If you downloaded MKL as a standalone library you can use it by adding the include directory to your projects Include list.

Once MKL is enabled or included in your project you can use the functions by simply adding a “#include <mkl.h>” to your code.

## Links

Intel Math Kernel Library Main Site: [1]

MKL Documentation: [2]

MKL Function Naming Conventions: [3]