1、Intel MKL简介
Intel数学核心函数库(MKL)是一套高度优化、线程安全的数学例程、函数,面向高性能的工程、科学与财务应用。英特尔 MKL 的集群版本包括 ScaLAPACK 与分布式内存快速傅立叶转换,并提供了线性代数 (BLAS、LAPACK 和Sparse
Solver)、快速傅立叶转换、矢量数学 (Vector Math) 与随机号码生成器支持。
主要包括:
① LAPACK (线形代数工具linear algebra package)
② DFTs (离散傅立叶变换 Discrete Fourier transforms)
③ VML (矢量数学库Vector Math Library)
④ VSL (矢量统计库Vector Statistical Library)
2、MKL的主要功能
1)BLAS 和 LAPACK
在英特尔处理器中部署经过高度优化的基本线性代数例程BLAS(Basic Linear Algebra Subroutines)和 线性代数包LAPACK(Linear Algebra Package)例程,它们提供的性能改善十分显著。
2)ScaLAPACK
ScaLAPACK是一个并行计算软件包,适用于分布存储的MIMD并行机。ScaLAPACK提供若干线性代数求解功能,具有高效、可移植、可伸缩、高可靠性的特点,利用它的求解库可以开发出基于线性代数运算的并行应用程序。
ScaLAPACK 的英特尔? MKL 实施可提供显著的性能改进,远远超出标准 NETLIB 实施所能达到的程度。
3)PARDISO稀疏矩阵解算器
利用 PARDISO 直接稀疏矩阵解算器解算大型的稀疏线性方程组,该解算器获得了巴塞尔大学的授权,是一款易于使用、具备线程安全性、高性能的内存高效型软件库。英特尔? MKL 还包含共轭梯度解算器和 FGMRES 迭代稀疏矩阵解算器。
4)快速傅立叶变换 (FFT)
充分利用带有易于使用的新型 C/Fortran 接口的多维 FFT 子程序(从 1 维至 7 维)。英特尔? MKL 支持采用相同 API 的分布式内存集群,支持将工作负载轻松地分布到大量处理器上,从而实现大幅的性能提升。此外,英特尔? MKL 还提供了一系列 C 语言例程(“wrapper”),这些例程可模拟 FFTW 2.x 和 3.0 接口,从而支持当前的 FFTW 用户将英特尔? MKL 集成到现有应用中。
5)矢量数学库(VML)
矢量数学库(Vector Math Library)借助计算密集型核心数学函数(幂函数、三角函数、指数函数、双曲函数、对数函数等)的矢量实施显著提升应用速度。
6)矢量统计库—随机数生成器(VSL)
利用矢量统计库(Vector Statistical Library)随机数生成器加速模拟,从而实现远远高于标量随机数生成器的系统性能提升。
Intel MKL产品介绍:
http://software.intel.com/zh-cn/articles/intel-mkl/ (http://software.intel.com/en-us/articles/intel-mkl/)
Intel MKL相关文档的链接(提供一些和MKL有关的文档):
http://software.intel.com/en-us/articles/intel-math-kernel-library-documentation/
Intel MKL Reference Manual(参考手册)(可以用于查询所有的MKL函数的说明和使用):
http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/index.htm
编译参数说明: -lmkl_intel_c -lmkl_intel_thread -lmkl_core –lpthread
-- 链接Intel MKL 需要包括下面的几个库文件:
1:接口库函数。
2: 线程库函数。( 指定多线程的MKL, 还单线程的MKL库)。
3. 优化核心库。
4. 多线程的支持库。
-lmkl_intel_c: 接口库函数,使用c 方式调用的接口。
-lmkl_intel_thread: 使用多线程的MKL 库。
-lmkl_core: mkl 核心优化函数。
-lpthread: 多线程函数库。