MKL - 中国科学院理论物理研究所

Download Report

Transcript MKL - 中国科学院理论物理研究所

数学核心函数库MKL
赵永华
中国科学院计算机网络信息中心
超级计算中心
[email protected]
内容
BLAS
 LAPACK
 随机数生成器

MKL库
 MKL
• Intel® Math Kernel Library
• Intel公司开发,针对Intel处理器,Pentium、Xeon、
Itanium
• 包括诸如BLAS和LAPACK等线性代数功能,离散傅
利叶变换(DFT)以及向量超越函数(向量数学库
/VML),以及向量统计函数(VSL )
• Linux版本和Windows版本
• 需要购买,但可以从网上得到30天试用版本
http://www.intel.com/software
• 最新版本:8.0
BLAS

基本线性代数子程序 (BLAS) 提供作为许多线性代数问题
基础的基本矢量和矩阵运算。包括:
 BLAS 1(Level 1):向量与向量操作
 BLAS 2(Level 2):矩阵与向量操作
 BLAS 3(Level 3):矩阵与矩阵操作
英特尔 MKL 内的所有 BLAS 函数都是线程安全的。使用
来自英特尔 MKL 的并行化(线程化)BLAS 例程,您无
需改变应用程序即可获得增强的多处理性能。
 Cblas接口 – 为了方便C/C++程序员调用BLAS
 BLAS命名规则

DGEMV - perform one of the matrix-vector operations y := alpha*A*x + beta*y, y :=
alpha*A'*x + beta*y
SUBROUTINE DGEMV ( TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY )
DOUBLE PRECISION ALPHA, BETA INTEGER INCX, INCY, LDA, M, N
CHARACTER*1 TRANS DOUBLE PRECISION A( LDA, * ), X( * ), Y( * ) P
PURPOSE DGEMV performs one of the matrix-vector operations
or
y := alpha*A*x + beta*y
or
y := alpha*A'*x + beta*y
where alpha and beta are scalars, x and y are vectors and A is an m by n matrix.

NAME DGEMM - perform one of the matrix-matrix operations C := alpha*op( A )*op( B ) +
beta*C
SUBROUTINE DGEMM ( TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC )
CHARACTER*1 TRANSA, TRANSB
INTEGER M, N, K, LDA, LDB, LDC DOUBLE PRECISION ALPHA, BETA
DOUBLE PRECISION A( LDA, * ), B( LDB, * ), C( LDC, * )
PURPOSE DGEMM performs one of the matrix-matrix operations
where op( X ) is one of op( X ) = X or op( X ) = X‘, alpha and beta are scalars, and A, B and
C are matrices, with op( A ) an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
稀疏BLAS
稀疏 BLAS 包含对稀疏数据(大多数元素都是零的数
据)执行常见矢量和矩阵运算的一组函数。稀疏
BLAS 涵盖了针对双精度实函数选定的级别 1、2 和 3
BLAS 例程。稀疏 BLAS 通常会与稀疏矩阵解算器结
合使用。英特尔 MKL 支持 NIST* 和 SparseKit* 类型
的接口。
 稀疏 BLAS支持以下矩阵类型和数据存储格式:
压缩稀疏行 (CSR)
压缩稀疏列 (CSC)
块稀疏行 (BSR)
对角 (DIA)
坐标 (COO)

LAPACK





LAPACK (Linear Algebra PACKage) 是Oak Ridge国家实验
室、加州大学Davis分校和Illinois大学等联合开发,用Fortran
77开发的数值线性代数库。
线性代数程序包LAPACK(Linear Algebra Package)提供了
求解以下问题的子程序:
 线性方程组求解
 特征值问题求解
 最小二乘问题
 奇异值分解
LAPACK是建立在BLAS 1、BLAS 2和BLAS 3基础之上。
使用了线性代数中最新、最精确的算法, 支持实数和复数数据。
开放源码,http://www.netlib.org/lapack
随机数生成器VSL

MKL矢量统计库VSL是用于许多概率分布的随机数生成器的集
合。可以通过 VSL 显著提高性能的应用包括常用于物理、化
学、医学模拟和财务分析软件中的多种模拟算法。该库为所有
VSL 函数提供 Fortran 接口和 C 接口。

所有 VSL 函数都经过高度优化,能够在英特尔® 架构上提供
出色性能。

VSL 提供了 9 个基本随机数生成器,它们在速度和统计质量上
都有所不同。

VSL 支持多种创建随机流的方法,包括蛙跳方法和块分割方法。
对于大型 Monte Carlo 模拟,VSL 提供了例程,用于将随机数
据流存储到文件,或从文件还原数据流。抽象流为使用分布生
成器处理缓冲区中存储的随机数据提供了更大的灵活性。
伪随机
MCG59
乘同余法生成器 59 位
MCG31m1
乘同余法生成器 31 位
MRG32k3a
复合递回生成器 32 位
R250
通用反馈移位寄存器
Wichman-Hill
273 个基本生成器
MT19937
Mersenne Twister
MT2203
1024 个 Mersenne Twister 基本生
成器
准随机数
Sobol
基于 Gray 代码的 32 位生成器
Niederreiter
基于 Gray 代码的 32 位生成器
MKL库连接

静态连接(static link)

动态连接(dynamic link)

例子说明
谢谢!