《C++ AMP:用Visual C++加速大规模并行计算》——3.9 数学库函数

本节书摘来自异步社区出版社《C++ AMP:用Visual C++加速大规模并行计算》一书中的第3章,第3.1节,作者: 【美】Kate Gregory , Ade Miller,更多章节内容可以访问云栖社区“异步社区”公众号查看。

3.9 数学库函数

C++ AMP:用Visual C++加速大规模并行计算
如前所述,我们不能只在parallel_for_each中调用来自“核函数”的函数。调用函数应该在代码生成时可见,应该使用restrict(amp)标记。如果我们要转换现有代码,就需要做出必要的调整。我们也有可能会调用sqrt()sin()等库函数。因此,需要使用加速器兼容版本替换这些调用。好消息是amp_math.h里定义了成百上千的此类函数,它们全都在命名空间concurrency::fast-math下。那个文件里有4 000多行相关内容,在这里把它们全部列出来是不现实的。但是,我们可以简要地列出一些可能会有用的函数分类。

三角函数:cossintanarccosarcsinarctan,加上6个双曲三角函数
根函数和幂函数:sqrtcbrtpow
简单操作:ceilfloorroundrunccopysignabsmodmaxmin
指数:expe的x次方),expm1e的x减1次方)、exp22的x方)、exp1010的x方)等
对数:log以e为底)、log10log2log1p(以e为底的(x+1)的对数)等
复合操作,例如fdim(如果为正是x−y,否则是0)、fma(x*y+z)hypot(求平方和后的平方根)
如果你一贯使用标准库中的数学函数,那么很可能它们已经在amp_math.h中有了对应的restrict(amp)版本。还有一个命名空间concurrency::precise-math,里面是函数的双精度版本,但我们只能在支持双精度数的加速器上使用它们。12.7节有更多关于双精度数支持的信息。

上一篇:MySQLdb、Mysqlclient、PyMySQL 三个python的MySQL库的比较和总结


下一篇:sql server游标循环