英特尔
® 
数学核心函数库 10.0 - 矢量统计
打印发送电子邮件告知好友支持新闻简报RSSDigg thisdel.icio.us

LINPACK


免费评估版软件 ›

免费非商业下载 ›

购买产品 ›

矢量统计库
矢量统计库


英特尔® 数学核心函数库(英特尔® 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-Hill一组 273 基本生成器
MT19937Mersenne Twister
MT2203一组 1024 Mersenne Twister 基本生成器
准随机
Sobol基于 Gray 代码的 32 位生成器
Niederreiter基于 Gray 代码的 32 位生成器

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

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

分布生成器类型
连续
离散
均匀分布均匀分布
高斯分布均匀位分布
高斯 MV 分布贝努里分布
指数分布几何分布
拉普拉斯分布二项式分布
威布尔分布超几何分布
柯西分布泊松正态分布
瑞利分布泊松 V 分布
对数正态分布负二项式分布
康拜尔分布 
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、2x8 MB 2 级高速缓存和 4 GB 内存,以及 Windows* 2003 Enterprise x64 Edition 和英特尔® C++ 编译器 10.0。

2 英特尔® 64 位架构版的 英特尔® MKL VSL 曾用于测量。

英特尔® 安腾® 2 架构系统上的 VSL 与 C 代码的性能比较§
英特尔® 安腾® 2 处理器1
运行时间(秒)
与 rand() 相比的加速(倍数)
标准 C rand() 函数
168.68
1.00
英特尔® MKL VSL 随机数生成器
5.9
28.59
OpenMP* 版本(4 线程)
1.71
98.64
1 双向双核英特尔® 安腾® 2 架构服务器平台(共 4 核心),运行配置为 1.67 GHz、4x12 MB 3 级高速缓存和 16 GB 内存,以及 Windows Server* 2003 Enterprise Edition 和英特尔® C++ 编译器 10.0

英特尔® 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 个多变量
  • 一般离散、连续单变量生成器及基于数据的多变量生成器
  • 随机正交矩阵和相关矩阵、双向表、顺序统计、抽样与排列、随机过程
  • 通过各个子例程提供的多种转换方法
  • ORNGs 仅适用于均匀分布
  • 24 个单变量
  • 2 个多变量
  • 通用单变量分布生成器
  • 随机抽样、排列、时间系列模型、正交矩阵和相关矩阵、随机表
  • 多种转换方法不可用
  • ORNGs 适用于均匀分布、高斯分布和对数正态分布
矢量/标量接口仅有矢量接口某些分布生成器具有矢量和标量形式;其他生成器则仅为矢量形式或标量形式。某些分布生成器具有矢量和标量形式;其他生成器则仅为矢量形式或标量形式。
编程语言界面在一个程序包中提供 C 界面和 Fortran 界面在不同程序包中分别提供 Fortran、C 和 Java* 界面在不同程序包中分别提供 C 界面和 Fortran 界面
支持的硬件
  • 仅适用于英特尔® 架构
  • 已针对目标架构进行了高度优化
多种平台(例如英特尔、Cray、HP、IBM 和 Sun)多种平台(例如 Apple、Cray、HP、IBM 和 Sun)

1库中 Mark 20 后已包含用于产生常态分布的随机数的两种方法。


下表显示了具有随机数生成功能的三种不同的库在基于英特尔® 至强® 处理器的系统上的数值结果和性能结果,这三种库分别为英特尔® MKL 10.0、IMSL F90MP 6.0 和NAG SMP Fortran 77 Library (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.0029)
0.0017

(0.0014)
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 期权定价模型为例,它是考虑期权定价的一个框架,是金融领域内的实际标准。

我们使用“最低标准”和 32-bit MT19937 基本生成器在 IMSL 库中。我们使用了 NAG 库中的“原始”基本生成器。对于英特尔® MKL 10.0,我们使用三种基本生成器,即 MCG31m1、MT19937 和 MCG59。最后者等同于 NAG 库中的原始基本生成器,而 MCG31m1 的属性则类似于 IMSL 的“最低标准”基本生成器。

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

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

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



英特尔® 软件   
英特尔® 软件网络