当前位置:文档之家› Vector Mathematical Functions

Vector Mathematical Functions

向量数学函数

翻译:Lyra(Godblessmee)

说明:

本文翻译自Intel C++ Composer XE 2011的帮助文档,要实现文中所述功能需要先安装Intel C++ Composer XE 2011以及Visual Studio C++集成模块,与Microsoft Visual Studio 2005/2008/2010。

Intel MKL 向量数学函数库(VML)对每一个向量元素进行数学计算。VML包含了一套高度优化的函数(几何、幂、三角函数、指数、双曲函数、特殊函数、舍入),这些函数能够对实数或复数进行操作。

应用程序能够用VML提高性能主要包括非线性编程、整数运算、金融计算、计算机图形以及其他。

进入下列分组的VML应用根据其执行的操作:

●VML数学函数,对连续存储的向量元素计算数学函数比如正弦、余弦、指数、对数;

●VML打包、解包函数,转换为或转换自向量、向量索引、掩码索引(查看“Vector Argument

in VML”);

●VML服务程序,设置或获取精度模式及错误码。

VML数学函数输入一个向量,按元素计算对应值,再返回结果至一个输出向量。所有的VML 数学函数都可以执行替代操作,即输入输出指向同一个内存地址。

Intel MKL接口(C版本)在下面文件给出:

●mkl_vml_functions.h

下列路径提供了例程,展示了如何使用VML函数:

$(MKL)/examples/vmlc/source

$(MKL)/examples/vmlf/source

在线VML性能与精度数据文档可在以下地址获得:

https://www.doczj.com/doc/5b3072153.html,/en-us/articles/intel-math-kernel-library-documentation/

数据类型、精度模式、性能提示

VML包含了打包、解包向量数学函数,可用于单精度、双精度的实数、复数输入参数。库为所有函数提供了Fortran和C版本接口,包括相关服务函数。函数明名约定展示了如何在不同语言下调用这些函数。

性能取决于多方面的因素,包括因数分解、线程等等。推荐的使用库的方式如下:

●对于长度大于40的向量使用VML库函数;

●对于长度小于40的向量使用Intel编译器;

所有的VML向量函数都支持下列的精度模式:

●高精度模式(HA),这也是缺省模式;

●低精度模式(LA),通过降低两位LSB精度提高性能;

●增强性能模式(EP),通过大幅度降低精度提供最佳性能,尾数中大约一半有效。

注意到EP模式不保证极个别情况和特殊值的处理精度。尽管缺省模式是HA,LA在大多数

情况下就已足够。对于某些对精度要求不高的应用(如媒体应用、一些Monte Carlo模拟等),EP模式也许就已足够。

VML按照C99标准方式处理特殊值情况。

使用vmlSetMode(mode)函数在HA、LA和EP模式中切换(查询“Value of the mode Parameter”)。vmlGetMode()函数返回当前模式类型。

函数命名约定

VML函数名称对Fortran语言是小写(vsabs),对于C是大小写混合(vsAbs)。

VML函数名称具有以下结构:

V[m]

其中:

●V是前缀,表示对向量操作;

●[m]是选择前缀,表示附加的参数,可限定给定函数模式的VML模式(参见SetMode);

是精度前缀,表示下列中某一种数据类型:

S Fortran时REAL,

C时float

d Fortran时DOUBLE PRECISION

C时double

c Fortran时COMPLEX

C时MKL_Complex8

z Fortran时DOUBLE COMPLEX

C时MKL_Complex16

表示函数的短名称,C时有几个大写字母组成。参考例程“VML Mathematical

Funtions”。

(C时由大写字母表示)仅在pack/unpack函数有效,表示索引方式:

i 正向增加索引

v 由索引向量索引

m 由掩码向量索引

VML服务函数名称具有以下结构:

vml

其中,表示函数短名称,C时由几个大写字母组成。参见例程“VML Service Funtion”。要调用VML函数,使用约定函数调用方式即可。例如,调用向量单精度实指数函数如下:●Fortran时,call vsexp ( n, a, y ),或者call vmsexp ( n, a, y, mode );

●C时,vsExp ( n, a, y )。

向量索引方式

VML数学函数只在单位步长下工作。要容纳增长的数据阵列,或更复杂的索引方式,您可以聚集元素到一个相邻的向量,然后在计算完之后拆散它们。

VML使用三种索引方式进行工作:

●正向递增;

●索引向量;

●掩码索引。

某个特殊函数使用的索引方式由索引修改器指定(参考“Function Naming Conventions”中的描述)。更多信息请参考Vector Arguments in VML。

错误诊断

如果错误和报警同时在函数调用时出现,VML错误状态变量将只保留错误代码的值。对于可能的错误状态代码,请查阅Value of the VML Error Status。如果VML函数没有出现错误或者报警,将会把VML错误状态设置为VML_STATUS_OK。

如果您使用Fortran接口,调用错误报告函数XERBLA来接受输入参数纠正的信息(VML_STATUS_BASIZE和VML_STATUS_BASMEM)。更多细节请见Value of the VML Error Status。

您可以使用vmlSetMode和vmlGetMode函数来修改错误处理动作。根据VML mode的不同,错误处理动作将包含以下操作:

●设置VML_Srror_Status为一个对应于观察到的错误或者报警的值;

●设置变量errno为一个Set Value of the errno Variable所描述的值;

●将错误文本信息写进stderr流;

●必要的话提升某个错误的合适例外???;

调用福建的错误处理反馈函数,该函数由vmlSetErrorCallBack设置。

VML数学函数

本部分将描述用于计算实向量或者复数向量数学函数的VML函数。

介绍每一个函数时都会提到它的简化名、简要功能描述、两种语言下的调用序列,以及输入输出参数描述。

输入参数范围与输入数据类型的数学范围相同,除非函数描述中专门提到,如下所示:

●FLT_MAX表明单精度浮点型数据的最大可表示数值;

●DBL_MAX表明双精度浮点型数据的最大可表示数据;

特殊值标记法

本章节定义了复数函数特殊值的标记法。

●Z、z1、z2等等表示复数;

●i2=-1表示复数单位;

●x、X、x1、x2等等表示实部;

●y、Y、y1、y2等等表示虚部;

●X和Y表示所有有限的正IEEE-754浮点值;

●Quiet NaN和signaling NaN分别由QNAN和SNAN表示;

●IEEE-754正无穷或浮点数用X、Y前面的一个+表示;

●IEEE-754负无穷或浮点数用X、Y前面的一个-表示;CONJ(z)和CIS(z)如下表示:

●CONJ(x+i*y) = x-i*y;

●CIS(y) = cos(y) + i*sin(y);

VML Pack/Unpack函数

本章节描述了从或者到转换向量的VML函数。

相关主题
文本预览
相关文档 最新文档