问题标签 [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.

0 投票
3 回答
1147 浏览

c# - 当使用 Parallel BeginInvoke 工作而 Invoke 不工作时 - c# 4.0

当我在 AddListBoxItem 函数中使用调用时,如下所示,软件变得无响应和冻结,但如果我使用BeginInvoke,它可以工作。为什么会这样?

视觉工作室 2010 , C# 4.0

0 投票
1 回答
174 浏览

openmp - 无法获得简单 OpenMP 并行 for 循环的速度

这是我第一次尝试 OpenMP,但无法获得加速。机器是Linux amd_64。我编写了以下代码:

有任何想法吗?

0 投票
3 回答
7316 浏览

c# - 实现并行无限循环的最佳方法是什么?

我已经习惯在 .Net 的并行扩展中使用 Parallel.For(),因为它是一种并行化代码的简单方法,无需手动启动和维护线程(这可能很繁琐)。我现在正在查看我希望并行化的无限循环(做某事直到我发出信号停止),没有一个参数免费的 Parallel.For() 重载可以做到这一点,所以想知道这里最好的方法是什么是。原则上我可以做类似的事情:

但我怀疑这可能不是工作分区逻辑处理的预期/有效模式(?)

另一种选择是:

但这似乎不优雅,也可能导致工作划分效率低下。

现在我的直觉是通过创建和维护我自己的线程来手动执行此操作,但我有兴趣获得一些反馈/意见。谢谢。

=== 更新 ===

我在接受的答案中使用文章中代码的简化版本(我已删除 ParallelOptions 参数)。这是代码...

一个示例用法是:

0 投票
2 回答
1152 浏览

c++ - 在 parallel_for 循环中为每个线程分配内存

我最初有一个单线程循环,它遍历图像的所有像素,并且可以对数据进行各种操作。

我使用的库规定必须一次一行地从图像中检索像素。为此,我malloc有一块内存可以容纳一行像素(BMM_Color_fl是一个包含一个像素的 RGBA 数据作为四个浮点值的结构,并将GetLinearPixels()一行像素从位图中复制到BMM_Color_fl数组中。)

到现在为止还挺好!

为了减少这个循环的执行时间,我用 编写了一个并发版本parallel_for,它看起来像这样:

虽然多线程循环已经比原来快了,但我意识到不可能所有线程都使用相同的内存块,所以目前我在每次循环迭代时分配和释放内存,这显然是浪费,因为永远不会有更多线程比循环迭代。

我的问题是我是否以及如何让每个线程malloc恰好有一个行缓冲区并重复使用它(理想情况下,最后释放它)?

  • 作为免责声明,我必须声明我是 C++ 新手。

实施建议的解决方案:

如建议的那样,我将其装罐malloc并用vector+替换了它reserve

0 投票
4 回答
2167 浏览

c# - 如何在 TPL 中使用 Parallel For 而不是 While

我想在语句中使用并行 for 而不是 while 语句。当我查看仅使用已知或变量计数的样本 Parallel For 运行时。

但我不知道我的循环将运行多少次,并且它无法在运行时将其链接到变量。

我将尝试使用 TPL 和经典代码进行简单的性能测试。所以我正在编写一个模数类,它通过减量操作计算模数。我的功能就像

我的目标是用 Parallel For 循环替换这个循环

而且我还想了解我可以将 Parallel For 与 if 和 break 语句一起使用。

我想我需要一个锁,因为 n 的值将在所有线程中更改,任何代码示例都将不胜感激

提前致谢

0 投票
1 回答
1204 浏览

c++ - C++ intel TBB inner loop optimisation

I am trying to use Intel TBB to parallelise an inner loop (the 2nd of 3) however, i only get decent pay off when the inner 2 loops are significant in size.

Is TBB spawning new threads for every iteration of the major loop? Is there anyway to reduce the overhead?

It might be interesting to note that openMP (which I am trying to remove!!!) doesn't have this problem.

I am compiling with:

intel ICC 12.1 at -03 -xHost -mavx

On a intel 2500k (4 cores)

EDIT: I can really change the order of loops, because the out loops test need to be replace with a predicate based on the loops result.

0 投票
1 回答
184 浏览

c++ - 是否可以使用 parallel_for 和 concurrent_vector 来组织异步孤岛 GA 算法?

假设我们有一个具有环拓扑的规范岛遗传算法。我使用 C++、PPL 和 MS Visual Studio 2010。

使用 PPL 库中的 parallel_for 很方便。如果在停滞标志打开时岛屿必须从其邻居那里获得最佳当前个体,我应该使用什么程序原语?我不想在 parallel_for 循环完成后检查停滞标志数组,我想即时喂食“饥饿”的岛屿。PPL 有为此目的的手段吗?每个岛屿都有一个指向其邻居的指针。我需要 Evolve() 方法中的某种关键部分来阻止 GetBestIndividual() 方法。Evolve() 被并行调用(parallel_for 循环用于岛)。

0 投票
3 回答
938 浏览

c++ - 在 parallel_for 中定义的变量范围

要并行执行循环,我正在使用:

我可以确定parallel_for块内定​​义的所有变量(即var1, var2, var3, var4, u, pl, values)对于每个循环迭代都具有局部范围,即不会在线程或循环迭代之间共享?

此外,只要多个线程testValues只是读取(而不是写入),就可以安全地访问它们吗?

0 投票
0 回答
745 浏览

multithreading - 双重嵌套并行 for 循环及其跨度

我试图围绕并行循环如何工作的想法来思考,这对我来说都是新的,并且已经阅读了这个 stackoverflow 线程,在这里找到了span 和 parallel loop,并发现那里的最佳答案真的很有帮助。

我想知道的是,如果我有一个内部有一个parallel-for-lop的parallel-for-lop,它们是否会以以下方式运行(为方便起见,我将让n = 5并且'to'表示向上包括(<=)):

这是我脑海中的代码:

这是我倾向于的线程的行为,但希望有人确认是否正确:

好的,外观的所有线程都已创建。现在是内在。这里 subXY 表示线程 x 的线程编号 y:

我知道这可能不是对我所想的最好的描述,但它是我能想到的最好的。

这个对吗?或者外循环线程只会使线程连接到他自己?例如 T1 只会制作 subT1XX 线程?

在时间 5 什么也不做的线程也会在那段时间执行它们的命令吗?

如果有人可以帮助我,那将极大地帮助我。

0 投票
3 回答
20204 浏览

c# - Task.Factory.StartNew 或 Parallel.ForEach 用于许多长时间运行的任务?

可能重复:
Parallel.ForEach vs Task.Factory.StartNew

我需要ThreadPool每晚运行大约 1,000 个任务(这个数字将来可能会增加)。每个任务都在执行长时间运行的操作(从 Web 服务读取数据)并且不是 CPU 密集型的。Async I/O不是此特定用例的选项。

给定一个IList<string>参数,我需要DoSomething(string x). 我试图在以下两个选项之间进行选择:

或者

哪个选项更好,为什么?

笔记 :

答案应包括 和 的用法之间的TaskCreationOptions.LongRunning比较MaxDegreeOfParallelism = Environment.ProcessorCount * SomeConstant