bec*_*cko 2 c++ parallel-processing
我需要做一个parallel_for。在标准 C++ 库或 Boost 中是否有一个简单的实现?我还没有找到。
顺便说一下,我正在使用 Ubuntu。所以我不想要 Microsoft 库。
听起来您正在寻找 openmp 提供的功能:
#pragma omp parallel for
for (i = 0; i < n; ++i)
// do some work
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 gcc ,则使用该-fopenmp标志进行编译。
OpenMP 非常适合解决相对“愉快”的并行问题。
从 C++17 开始,我们使用“执行策略”参数将大多数算法作为潜在的并行版本:https : //en.cppreference.com/w/cpp/algorithm/execution_policy_tag_t
对于简单的 for-each,算法将是for_each:https : //en.cppreference.com/w/cpp/algorithm/for_each
std::vector<int> v = get_tons_of_values();
std::for_each(std::execution::par, std::begin(v), std::end(v), [](int i) {
work(i);
});
Run Code Online (Sandbox Code Playgroud)
在此示例中,我们“要求”并行执行 lambda。
请注意,算法将自行决定它将有效地并行运行以及如何并行运行。例如,如果没有足够的值使并行运行的成本值得,那么在大多数实现中它不会并行运行。查阅您的标准库实现文档以了解他们将使用的启发式方法。