Rom*_*tin 17 c++ parallel-processing g++ clang++ c++17
我试图使用C++ 17标准中提出的新并行库功能,但我无法使其工作.我试着用的了最新版本的编译g++ 8.1.1和clang++-6.0和-std=c++17,但也似乎支持#include <execution>,std::execution::par或任何类似.
声称,在查看并行算法的cppreference时,有很多算法列表
技术规范提供以下69种算法的并行化版本
algorithm,numeric并且memory:( ...长列表...)
听起来像算法已经准备好'在纸上',但尚未准备好使用?
在一年多前的SO问题中,答案声称这些功能尚未实现.但到现在为止,我希望看到某种实现方式.有什么我们可以使用的吗?
Nan*_*iao 14
您可以参考https://en.cppreference.com/w/cpp/compiler_support查看所有C++功能实现状态。对于你的情况,只是搜索“ Standardization of Parallelism TS”,你会发现只有MSVC和Intel C++编译器现在支持此功能。
Gcc 尚未实现 Parallelism TS(参见https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2017)
然而,libstdc++(带gcc)有一些等效并行算法的实验模式。见https://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
让它工作:
任何并行功能的使用都需要额外的编译器和运行时支持,尤其是对 OpenMP 的支持。添加此支持并不困难:只需使用编译器标志 -fopenmp 编译您的应用程序。这将链接到 libgomp,GNU 卸载和多处理运行时库,它的存在是强制性的。
代码示例
#include <vector>
#include <parallel/algorithm>
int main()
{
std::vector<int> v(100);
// ...
// Explicitly force a call to parallel sort.
__gnu_parallel::sort(v.begin(), v.end());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
GCC 9将拥有它们
在https://gcc.gnu.org/gcc-9/changes.html提及
并行算法和(需要Thread Building Blocks 2018或更高版本)。
当它得到一个释放标签时,我会试一试。我不知道“线程构建块2018”将需要什么。
| 归档时间: |
|
| 查看次数: |
4329 次 |
| 最近记录: |