MKL学习——功能简介

基本术语

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=\\lambda x)以及泛化的

(Ax=λBx)
(Ax=\\lambda Bx)特征值问题的高性能计算程序,其中

A
A和BB是对称或者Hermitian形式。针对给定的搜索区间,能够生成所有的特征值和特征向量。

矢量数学函数

包含高度优化实现的核心数学函数(power, trigonometric, exponential, hyperbolic )等,可在实数域或者复数域上操作。

统计学函数

矢量统计包含(比较专业的词汇,直接英文表示):

  • Pseudorandom, quasi-randomnon-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...

后续

看完功能简介,下一篇就开始从最简单的向量-向量,矩阵-向量,矩阵-矩阵的操作开始学习

© 版权声明
THE END
喜欢就支持一下吧
点赞226 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容