《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节有更多关于双精度数支持的信息。

相关文章
|
26天前
|
人工智能 算法 测试技术
【数学】【排序】【C++算法】3027人员站位的方案数
【数学】【排序】【C++算法】3027人员站位的方案数
|
27天前
|
Windows
Microsoft Visual C++2015-2019 安装失败 0x80240017
Microsoft Visual C++2015-2019 安装失败 0x80240017
35 0
|
6天前
|
存储 C++
c/c++宏定义(函数)
c/c++宏定义(函数)
|
8天前
|
编译器 C++
【C++进阶】引用 & 函数提高
【C++进阶】引用 & 函数提高
|
12天前
|
C++
C++从入门到精通:2.1.2函数和类——深入学习面向对象的编程基础
C++从入门到精通:2.1.2函数和类——深入学习面向对象的编程基础
|
12天前
|
存储 C++
C++从入门到精通:2.1.1函数和类
C++从入门到精通:2.1.1函数和类
|
20天前
|
机器学习/深度学习 定位技术 C++
c++中常用库函数
c++中常用库函数
39 0
|
21天前
|
算法 搜索推荐 C++
浅谈sort函数底层(一道c++面试的天坑题)
浅谈sort函数底层(一道c++面试的天坑题)
|
24天前
|
编译器 C++
C++ 解引用与函数基础:内存地址、调用方法及声明
C++ 中的解引用允许通过指针访问变量值。使用 `*` 运算符可解引用指针并修改原始变量。注意确保指针有效且不为空,以防止程序崩溃。函数是封装代码的单元,用于执行特定任务。理解函数的声明、定义、参数和返回值是关键。函数重载允许同一名称但不同参数列表的函数存在。关注公众号 `Let us Coding` 获取更多内容。
136 1
|
24天前
|
编译器 C语言 C++
【C++初阶(九)】C++模版(初阶)----函数模版与类模版
【C++初阶(九)】C++模版(初阶)----函数模版与类模版
20 0