英特尔
® 
数学核心函数库 10.1 —— 矢量统计
打印发送电子邮件告知好友支持新闻简报RSSDigg thisdel.icio.us
产品信息评估中心支持资源文档
概述BLAS/LAPACKScaLAPACK稀疏矩阵解算器快速傅立叶变换矢量数学矢量统计LINPACK


购买产品 ›

免费评估版软件 ›

非商业用途 Linux* 版免费下载 ›

矢量统计库

矢量统计库


英特尔® 数学核心函数库(英特尔® MKL)包含了众多扩展的统计功能,我们将这些功能集中到了一个称为矢量统计库(VSL)的子库中。目前,英特尔® MKL 矢量统计库包括卷积/关联以及庞大的随机数生成器集合。

卷积/关联


VSL 提供了一组例程,旨在执行单精度数据和双精确度数据的线性卷积变换和线性关联转换。我们提供了:

  • 傅立叶算法和直接算法
  • 一维或多维
  • 单精度和双精度
  • C 和 Fortran 接口
  • 当前易于使用的面向“任务”的 API
  • 面向 ESSL 用户的 IBM ESSL* 接口


有关英特尔® MKL 矢量统计库中卷积和关联例程的详细信息,请参阅英特尔® MKL 参考手册 

随机数

英特尔® MKL 矢量统计库(VSL)是用于许多概率分布的随机数生成器的集合。所有 VSL 函数都经过高度优化,能够在英特尔® 架构上提供出色性能。

可以通过 VSL 显著提高性能的应用包括常用于物理、化学、医学模拟和财务分析软件中的多种模拟算法。该库为所有 VSL 函数提供 Fortran 接口和 C 接口。

VSL 提供了 9 个基本随机数生成器,它们在速度和统计质量上都有所不同,如下所示。

基本随机数生成器(BRNG)
伪随机
MCG59乘同余法生成器 59 位
MCG31m1乘同余法生成器 31 位
MRG32k3a复合递回生成器 32 位
R250通用反馈移位寄存器
Wichman-Hill273 个基本生成器
MT19937Mersenne Twister
MT22031024 个 Mersenne Twister 基本生成器
准随机
Sobol基于 Gray 代码的 32 位生成器
Niederreiter基于 Gray 代码的 32 位生成器

VSL 支持多种创建随机流的方法,包括蛙跳方法和块分割方法。对于大型 Monte Carlo 模拟,VSL 提供了例程,用于将随机数据流存储到文件,或从文件还原数据流。抽象流为使用分布生成器处理缓冲区中存储的随机数据提供了更大的灵活性。

VSL 还支持用户设计的基本生成器以及众多连续或离散分布生成器。

分布生成器类型
连续
离散
均匀分布均匀分布
高斯分布均匀位分布
高斯 MV 分布贝努里分布
指数分布几何分布
拉普拉斯分布二项式分布
威布尔分布超几何分布
柯西分布泊松分布
瑞利分布泊松分布(含变均值)
对数正态分布负二项式分布
康拜尔分布 
Gamma 分布 
Beta 分布 
随机数生成器性能
VSL 函数使用单精度和双精度实数矢量参数,可以提供比标量实现更强大的性能优势。此处提供的表格中包含关于英特尔® 处理器上所有 VSL 随机数生成器与分布的完整性能信息。

为展示英特尔® 数学核心函数库的优化性能,我们将标准 C rand() 函数与英特尔® MKL 矢量均匀随机数生成器进行比较。英特尔® MKL VSL 函数是线程安全的,因此,我们还展示了英特尔® MKL 矢量均匀随机数生成器经过 OpenMP* 并行处理后的速度。

基于英特尔® 至强® 处理器的系统上的 VSL 与 C 代码的性能比较§
英特尔® 至强® 处理器1
运行时间(秒)
与 rand() 相比的加速(倍数)
标准 C rand() 函数
40.52
1.00
英特尔® MKL VSL 随机数生成器
6.88
5.89
OpenMP* 版本(8 条线程)
0.92
44.04
1基于双路四核英特尔® 至强® 处理器的系统(共 8 枚内核),主频 2.4 GHz,配置 2x8MB 二级高速缓存和 4GB 内存,安装 Windows* 2003 Enterprise x64 版和英特尔® C++ 编译器 10.0

2 检测中使用英特尔® 64 架构版英特尔® MKL VSL

英特尔® MKL 与其它库的比较
Visual Numerics Inc. 和 Numerical Algorithms Group Ltd. 是常用数值库与统计库的提供商。Visual Numerics 面向 Fortran 和 C/C++ 用户提供数学和统计分析子例程的集合,分别称为 IMSL Fortran 90 MP Library (F90MP*) 和 IMSL C Numerical Library*。Numerical Algorithms Group 为 C/C++ 和 Fortran 用户提供数值库,称为 NAG Fortran 77 Library*、NAG Fortran 90 Library*、NAG C Library*、NAG SMP Library* 和 NAG Parallel Library*。

下表提供了英特尔® MKL 10.0、IMSL F90MP 6.0 和 NAG Fortran 77(Mark 21)库中现有的随机数生成功能的摘要信息。

英特尔® 数学核心函数库(英特尔® MKL)10.0 与 IMSL* 和 NAG* 的特性比较
特性
英特尔® MKL
IMSL
NAG
BRNG
  • 7 个伪随机
  • 2 个准随机
  • 9 个伪随机
  • 1 个准随机
  • 2 个伪随机
  • 3 个准随机
用户设计的 BRNG
  • 支持
  • 用户设计的 BRNG 取代了库 BRNG;多数库服务不支持用户设计的 BRNG
  • 不支持
序列处理
  • 创建、复制和删除流的机制
  • 将数据流保存到文件/从文件还原数据流
  • 基于一个或多个 BRNG 的任意随机数据流
  • 用于在 BRNG 之间进行切换的服务子例程
  • 用于保存和还原 BRNG 种子的子例程
  • 用于保存和还原 GFSR 和 shuffled BRNG 状态表的子例程
  • 用于保存和还原 BRNG 种子的子例程
  • 用于在 BRNG 之间进行切换的服务子例程
子序列分割
  • 支持“前跳”和“蛙跳”两种方法
  • “前跳”方法允许跳过一个序列中的任意多个元素
  • “蛙跳”方法允许分割为任意多个非交叠子序列
  • 受限前跳方法支持(仅跳过序列中的 100,000 个元素)
  • 不支持
分布生成器和其他 BRNG 相关功能
  • 20 个单变量
  • 1 个多变量
  • 以方法 ID 为参数进行传递,从而支持多种转换方法
  • 24 个单变量
  • 3 个多变量
  • 一般离散、连续单变量生成器及基于数据的多变量生成器
  • 随机正交矩阵和相关矩阵、双向表、顺序统计、抽样与排列、随机过程
  • 通过各个子例程提供的多种转换方法
  • ORNG 仅适用于均匀分布
  • 24 个单变量
  • 2 个多变量
  • 通用单变量分布生成器
  • 随机抽样、排列、时间系列模型、正交矩阵和相关矩阵、随机表
  • 多种转换方法不可用
  • ORNG 适用于均匀分布、高斯分布和对数正态分布
矢量/标量接口仅有矢量接口某些分布生成器具有矢量和标量形式;其他生成器则仅为矢量形式或标量形式某些分布生成器具有矢量和标量形式;其他生成器则仅为矢量形式或标量形式
编程语言界面在一个程序包中提供 C 界面和 Fortran 界面在不同程序包中分别提供 Fortran、C 和 Java* 界面在不同程序包中分别提供 C 界面和 Fortran 界面
支持的硬件
  • 仅适用于英特尔® 架构
  • 已针对目标架构进行了高度优化
多种平台(例如英特尔、Cray、HP、IBM 和 Sun)多种平台(例如 Apple、Cray、HP、IBM 和 Sun)

1Mark 20 之后的库均支持两种用于生成正态分布随机数的方法。
下表显示了具有随机数生成功能的三种不同的库在基于英特尔® 至强® 处理器的系统上的数值和性能结果,这三种库分别为:英特尔® MKL 10.0、IMSL F90MP 6.0 和 NAG SMP Fortran 77 库(Mark 21)。加速是针对最低版本测评的。

性能比较: Black-Scholes 期权定价模型1,§
基本生成器
期权价值(准确价值)
绝对错误 (标准错误)
时间(秒)
加速(倍数)
调用
放置
调用
放置
英特尔® MKL
MCG31m1
16.7306

(16.7341)
7.2177

(7.2179)
0.0036

(0.0019)
0.0002

(0.0009)
4.671
8.78
MCG59
16.7364

(16.7341)
7.2162

(7.2179)
0.0023

(0.0019)
0.0017

(0.0009)
4.86
8.44
MT19937
16.7349

(16.7341)
7.2164

(7.2179)
0.0007

(0.0019)
0.0015

(0.0009)
5.078
8.08
NAG
原始
16.7339

(16.7341)
7.2182

(7.2179)
0.0002

(0.0019)
0.0003

(0.0009)
11.45
3.58
IMSL
MT19937
16.7324

(16.7341)
7.2178

(7.2179)
0.0017

(0.0019)
0.0001

(0.0009)
35.703
1.15
最低标准
16.7343

(16.7341)
7.217

(7.2179)
0.0001

(0.0019)
0.0009

(0.0009)
41.031
1.00
1 Monte Carlo 是一个很有价值的工具,用于对复杂的全球市场进行实时金融分析。在我们的示例中,以众所周知的 Black-Scholes 期权定价模型为例,它是考虑期权定价的一个框架,是金融领域内的实际标准。

我们使用“最低标准”和 IMSL 库中的 32 位 MT19937 基本生成器。我们使用了 NAG 库中的“原始”基本生成器。对于英特尔® MKL 10.0,我们共使用了 3 种基本生成器: MCG31m1、MT19937 和 MCG59。MCG59 同属于 NAG 库中的“原始”基本生成器,而 MCG31m1 的属性则类似于 IMSL 的“最低标准”基本生成器。

有关这一性能测试的详细信息,请参考 Sergey A. Maidanov 和 Andrey Naraikin 撰写的白皮书使 Monte Carlo 方法更加简单快捷 

总结
英特尔® 数学核心函数库的矢量统计库包含卷积/关联和一整套随机数字生成器,它们都针对英特尔® 架构进行了高度优化,与其它解决方案相比,可帮助您极大地改善应用性能。

参考
  • VSL 性能数据 
    关于英特尔® 至强® 和英特尔® 安腾® 处理器上的所有 VSL 随机数生成器和分布的完整性能信息。
  • VSL 节点 (PDF 1.2MB)
    关于 VSL BRNG 和分布的详细信息以及一般随机数生成器的详细信息。
  • Monte Carlo 欧洲期权定价 
    讨论衍生安全定价中常用随机数生成器应用的文章。
  • 英特尔® MKL 文档
    查阅所有英特尔® MKL 的文档。
  • 英特尔® MKL 论坛 
    可在此向其他英特尔® MKL 用户咨询问题并分享信息。
§性能测试和等级评定均使用特定的计算机系统和/或组件进行测量,反映了使用这些测试所测的英特尔产品的大致性能。系统设计或配置的任何不同均能影响实际性能。购买者应进行多方咨询,以评估他们考虑购买的系统或组件的性能。如欲了解更多关于英特尔产品性能和性能测试的信息,请访问 http://www.intel.com/cd/software/products/apac/zho/index.htm



英特尔® 软件   
网络
英特尔® 软件网络
  • 成员注册步骤简单且免费,马上 加入吧!