基本术语
BLAS : Basic Linear Algebra Subprograms 基本线性代数子程序
BLACS : Basic Linear Algebra Communication Subprograms 基本线性代数通信子程序
LAPACK : Linear Algebra PACKage 线性代数包
ScaLAPACK : Scalable LAPACK
PBLAS : Parallel Basic Linear Algebra Subprograms 可并行基本代数子程序
FFT : Fast Fourier Transform 快速傅里叶变换
VM : Vector Mathematics 矢量数学
VS : Vector Statistics 矢量统计学
BRNGs : Basic Random Number Generators 基本随机数生成器
PDE : Partial Differential Equations 偏微分方程
主要功能
解决大型计算问题,提供BLAS、LAPACK线性代数程序、快速傅里叶变换、矢量数学函数、随机数生成函数以及其它一些函数。
功能域
BLAS程序
- BLAS Level 1 Routines:提供向量数据的加、减、缩放、点乘
- BLAS Level 2 Routines:提供向量-矩阵的运算,比如乘法运算、一阶矩阵和二阶矩阵的更新、三角形系统的解法
- BLAS Level 3 Routines:提供矩阵-矩阵的运算,比如矩阵相乘、k阶更新、三角形系统的解法
稀疏BLAS程序
也分为Level 1 2 3程序,与BLAS程序类似,只不过利用了稀疏向量、稀疏矩阵的有点: 仅存储向量或者矩阵的非零元素。
LAPACK程序
根据操作分为两种功能:
- 解线性方程组,矩阵分解,矩阵求逆,estimate condition numbers
- 解决最小二乘问题,特征值、奇异值问题,Sylvester 方程
稀疏求解程序
针对具有实系数和复数系数的对称系数矩阵,可以直接进行系数求解。对于对称矩阵,子程序能够解决正定和非正定系统。
扩展Eigensolver程序
Extended Eigensolver RCI Routines是解决标准的(Ax=λx)以及泛化的(Ax=λBx)特征值问题的高性能计算程序,其中A和
矢量数学函数
包含高度优化实现的核心数学函数(power, trigonometric, exponential, hyperbolic )等,可在实数域或者复数域上操作。
统计学函数
矢量统计包含(比较专业的词汇,直接英文表示):
- Pseudorandom, quasi-random 和non-deterministic random number generator去实现连续和离散分布。包含一系列的高度优化的随机数生成器和矢量数学函数
- 各种各样的卷积和相关操作
- 单精度和双精度的多维数据的初等统计分析
傅里叶变换函数
具有混合基(mixed raidx)支持的多维快速傅里叶变换函数,支持离散傅里叶变换的一致性。
偏微分方程
提供了解偏微分方程的工具,工具是三角变换接口程序(Trigonometric Transform interface routines)以及泊松解法(Poisson Solver).
三角变换程序对于用户实现自己的解法有帮助。用户可以通过快速的sine, cosine以及交错余弦变换(staggered cosine transforms)实现三角变换接口
泊松解法是用于快速解决简单的Helmholtz 、泊松、拉普拉斯问题。解法的基础,也就是三角变换接口,是基于快速傅里叶变换的接口。
其它支持的函数
提供了对于MKL的相关操作,以及库和库操作的基本信息,比如当前库版本,CPU频率的定时、设置、衡量,错误处理,内存分配
深度神经网络(DNN)的数学核心库
对于卷积、池化、normalization、激活、多维变换操作(multi-dimensional transposition operations)的最基本的前向和后向计算。
MKL中C语言数据类型的指定方法
如果你的数据类型与MKL数据类型二进制兼容其具有相同的表示与存储设置的话,可以重定义特定的MKL数据类型。
重定义方法是在包含mkl.h
之前用#define
声明一下
#define MKL_INT size_t
#include "mkl.h"
也可以用-D
操作重定义数据类型,比如
...-DMKL_INT=size_t...
后续
看完功能简介,下一篇就开始从最简单的向量-向量,矩阵-向量,矩阵-矩阵的操作开始学习