【问题标题】:Does parallel_for_each (tbb) process each element of array in a different thread?parallel_for_each (tbb) 是否在不同的线程中处理数组的每个元素?
【发布时间】:2022-11-08 14:30:50
【问题描述】:

来自documentation of oneapi

序列形式 parallel_for_each(first, last, body) 将函数对象体应用于序列 [first,last)。项目可以并行处理。

这到底是什么意思?我正在为我的一门课学习 TBB,它说迭代是连续完成的。这基本上是吗,例如,我有一个数组

int* myarray = a really big array

对于我想要做的数组中的每个元素

myarray[i] = some function that takes a really long time to execute

我有 4 个可用的 CPU 内核。

parallel_for_each 基本上会占用 4 个线程,每个线程将处理一个元素吗?喜欢

array[0] = result from thread 1
array[1] = result from thread 2
array[2] = result from thread 3
array[3] = result from thread 4

等等?

谢谢!

【问题讨论】:

    标签: arrays tbb


    【解决方案1】:

    parallel_for_each 并行处理工作项。它为数组的每个元素创建一个线程。 有关详细信息,请参阅以下链接: https://oneapi-src.github.io/oneTBB/main/tbb_userguide/Cook_Until_Done_parallel_do.html

    当每个对象的工作量较大且对象数量较少且每个对象的工作量不相等时,请使用parallel_for_each

    【讨论】:

      猜你喜欢
      • 2020-11-15
      • 1970-01-01
      • 2021-05-20
      • 2013-03-16
      • 2013-05-02
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多