问题标签 [parallel-for]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - OpenMP 并行发送哪些元素?
我是 OpenMP 的新程序员。我想并行处理我的数据并使用 OpenMP。当我将它与 OpenMP 并行用于时,如何获取在 for 循环中处理的元素?例如:
我不想同时发送 1、3、6 或 2 4 7。我可以管理一起发送哪些号码吗?
c# - c# - 运行多组并行线程 (Parallel.ForEach)
我正在尝试运行两组并行任务。我的 task.Invoke() 方法是异步的,所以在第一组任务中,我不使用 .Wait(); 但在第二组中,我使用 .Wait() 所以在所有任务实际完成之前它不会退出并行集。
这通常是因为 A 组任务开始,然后 B 组任务开始,所有任务在其组内并行工作,A 组运行将 B 组运行,并且 B 组在其任务的所有任务完成之前不会退出.
问题在于,在任务 b 组完成之前,a 组任务不一定完成,因此在某些情况下,当 a 组仍在运行时,函数会退出。
我想我可以重写它,以便它们都可以互操作,可能通过使用任务集合的并行循环的并行循环,但这会对 clr 内的线程管理等产生一些不利影响吗?
背景是我有一个间隔运行的后台进程,我将它运行的任务分成两组,A组是几个长时间运行的任务,B组是一系列存储在队列中的短期运行任务。两组具有相同的优先级,具有相同的开始和停止时间,队列可以在时间到时停止,任何任务都可以重新启动下一个周期。
c++ - 虚函数和“此指针没有合法转换”
我有两个课程如下。
另一个类是来自 opencv 的 Parallel_process。
在 main 函数中,并行进程被称为
但是我在以下两行有两个编译错误。
错误是
有什么问题?
c - OpenMP 循环并行化
我正在尝试并行化这段代码的两个循环:
外循环并行化成功:
但是我的内心还是有问题的。我尝试使用例如 private(d,m) 和 reduction(max:im),但它不适用于任何组合。我用 private(d) 得到的最接近顺序的结果。有任何想法吗?谢谢!
c++ - 在并行循环中添加双精度 - std::atomic
我有一个并行代码,它进行一些计算,然后将一个 double 添加到一个循环外的 double 变量中。我尝试使用 std::atomic 但它不支持对 std::atomic < double > 变量的算术运算。
简单地写
显然是胡说八道。我的问题是,如何在不使代码串行的情况下解决这个问题?
parallel-processing - OpenMP 并行“for”与“static”计划
我对 时间表和默认块大小的parallel for
行为感到困惑或误解。static
例如下面的图片我例外的是,主线程将进行额外的迭代,但我例外的是它会在索引 8 而不是 2 处!
具有默认块大小的静态调度算法在 (#iterations / #threads) 上应用循环法,有 2 种情况
如果#iterations 可以被#threads 整除,例如N=8 和#threads = 4。每个线程将以循环方式进行相同数量的迭代(直接情况)
如果#iterations 不能被#threads 整除。它将计算最接近的迭代整数除以#threads,并执行与上述相同的操作
N=9 的情况 --> 8 它将除以 2 2 2 2 和 1
N=11 --> 12 的情况下,它将被划分为 3 3 3 和 2
线程是 0 1 2 3
c++ - 使用某些系数将图像转换为灰度的最快方法
我需要cv::Mat
使用自定义公式将 a 转换为灰度。输入矩阵的每个通道都必须乘以某个系数。
这是操作的伪代码:
输入矩阵是CV_32FC3
,输出必须是CV_32FC1.
使用 2 个循环并按顺序计算每个像素的简单循环似乎不够快。
有没有更有效的方法来做到这一点?我希望使用parallel_for_
循环,但我自己无法弄清楚。
这是我一直在研究的不起作用的解决方案:
c++ - task_group 中的部分任务在主线程而不是专用线程上执行
我对 tbbparallel_for()
和task_group::run()
. 我有一个代码,它使用task_group::run()
. 在这个任务中,我parallel_for()
用来并行化一个函数。
另一方面,在主线程上,我进行其他计算,并且在某些时候,我还调用 aparallel_for()
来处理其他内容。我遇到的问题是 tbb 重用第二个东西的“主线程”来调用代码启动之前group
(不调用wait()
on group
)。
就我而言,它会产生问题,我不希望第一个任务在主线程上进行一些调用。原因是由于 UI 问题,我有一些代码测试我们是否在主线程上,以更新一些 UI 内容。在这种特定情况下,第二次更新 UIparallel_for()
会导致问题。
这是代表问题的代码:
所以我的问题是:当第二次调用 tbb::parallel_for_each() 完成时,如何避免重用主线程?
请注意,使用新的 std 并行函数/行为的代码运行良好。
更新
使用 tbb::task_arena 解决了这个问题,因为它隔离了 arena 内的 task_group。
c++ - 任务内的 OpenMP 任务循环
我在taskloop
构造中使用 OpenMPtask
构造:
结果数组全为0。但是,如果我将其更改taskloop
为parallel for
:
然后数组的结果是每个索引的 1250000。我使用taskloop
构造有什么问题吗?
c++ - c++ ppl.h for linux中的parallel_for
我使用 c++ 在 windows 中制作了项目,现在我正在尝试在 linux(ubunt) 中构建我的项目。但是,我在 linux 中找不到 ppl.h。我在我的项目中使用了很多 parallel_for。
我可以使用什么替代品?