【问题标题】:A minimal code way to parallelize a for loop in C++ [duplicate]在 C++ 中并行化 for 循环的最小代码方法 [重复]
【发布时间】:2019-07-27 03:21:05
【问题描述】:

在 2019 年,是否有一种与平台无关(Intel、AMD、Windows、*nix 等)的方式来简单地并行化 for 循环,并且使用最少的额外代码来使用所有可用的内核。在这里,假设 for 循环中的代码是以线程安全的方式编写的。我们还假设支持最新最好的语言版本。

假设这个简单的代码就是我所拥有的:

std::vector<SomeObject> objects;
for (const auto& object: objects) {
// do some thread-safe work with object
// how to parallelize this?
}

【问题讨论】:

  • 虽然副本是正确的,但大多数答案都已经过时了。请参阅std::for_each,它接受允许并行化的执行策略。
  • @FrançoisAndrieux 如果该问题有更新、更好的答案,没有理由不添加它。
  • 嗯,为什么警察机器人在问这个问题时没有向我提出这个问题?该机器人需要改进。
  • 执行策略为std::execution::parallel_policystd::for_each 怎么样?
  • @Caleb 在 C++17 不存在时被询问。这个问题似乎是重复的,但却是一个未解决的问题。特别是随着多核 PC 的普及。

标签: c++


【解决方案1】:

我认为OpenMP 是您正在寻找的。​​p>

如果您需要在多个节点中计算,请尝试MPI

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多