Julia with Intel® Math Kernel Library for Improved Performance

Published: 12/31/2013, Last Updated: 09/21/2017

Overview

This guide is intended to help users of Julia language to get better performance by using Intel® Math Kernel Library (Intel® MKL) for their high performance compute intensive applications that rely on mathematical routines.

Download Julia source code

Download Open source Julia as a zip file or use your GitHub* account to download Julia source.

Prerequisites

Intel MKL can be obtained from the following options

•  A. Download a FREE evaluation version of the Intel MKL product
•  B. Download the FREE non-commercial* version of the Intel MKL product.


Intel MKL can also be obtained by downloading free evaluation versions or non-commercial versions of the following products.

•  Intel® Parallel Studio XE

If you already have a commercial license of MKL and compilers, we recommend you to use the latest versions.

Configuration

Set up the Intel MKL envrionment, for Intel64 architecture with 8 bytes integer support (ILP64)

$source /opt/intel/mkl/bin/mklvars.sh intel64 ilp64

and for ia32 architecture

$source /opt/intel/mkl/bin/mklvars.sh ia32

Edit Make.inc file located in julia folder and change USE_MKL = 0  variable to USE_MKL = 1

Also, change the MKLLIB variable to point to the appropriate library, by default it is set to intel64 architecture.

MKLLIB = $(MKLROOT)/lib/intel64

Alternately, you can also pass USE_MKL=1 option to make.

Building Julia with Intel MKL

Once you have set the Intel MKL environment and modified the Make.inc file to use MKL, building Julia with Intel MKL support is straightforward and proceed to building and installing Julia using the following command

$make install

To rebuild a pre-built Julia source installed with Intel MKL support, delete the OpenBLAS, ARPACK, and SuiteSparse dependencies from deps folder of and run

$make cleanall install

We would like to hear your feedback on using julia with MKL support on installation, performance or any suggestions.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804