首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ 17并行硬件实现

C++ 17并行硬件实现
EN

Stack Overflow用户
提问于 2016-11-11 19:10:01
回答 1查看 903关注 0票数 6

据我所知,C++ 17将和平行性一起来。但是,我无法理解的是它是一个特定的硬件并行性(默认情况下是CPU)?或者可以扩展到任何有多个计算单元的硬件?

换句话说,我们会看到像"nVidia C++标准编译器“这样的东西,它将编译要在GPU上执行的并行部分吗?

例如,它会是OpenCL的一些更标准化的替代方案吗?

Note:当然,我是而不是,问“nVidia会这么做吗?”我是在问C++ 17标准是否允许这样做,以及理论上是否可行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-11 19:36:20

这个问题提供了一个链接到提出这一改变的文件,关于并行性方面,对于提议的内容并没有实质性的改变。是的,编译器可以对目标硬件执行各种算法的并行化做任何有意义的事情,只要它得到正确的答案(有一些保留),并且不增加不必要的开销(同样,也有一些保留)。

有几个要点需要理解。

首先,C++17并行是而不是一种通用的并行编程机制。它提供了许多STL算法的并行版本,仅此而已。因此,它不能替代更强大的机制,如OpenCL、TBB等。

第二,当您尝试并行化算法时,有一些固有的限制,这就是为什么我添加了这两个括号式的限制。例如,只有当应用于输入范围的函数是可交换的和关联的,std::accumulate的并行版本才会产生与非并行版本相同的结果。这里最明显的问题区域是浮点值,其中的数学运算不是关联的,所以结果可能会不同。类似地,有些算法在并行化时会增加开销;您可以得到一个网络加速比,但是完成了更多的工作,因此这些算法的加速比在处理单元的数量上不会是线性的。std::partial_sum就是一个例子:每个输出值取决于前面的值,因此并行化算法并不简单。有一些方法可以做到这一点,但最终应用组合函数的次数要比非并行算法多。通常,为了反映这一现实,算法的复杂性要求有所放松。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40554629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档