问题标签 [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 投票
4 回答
432 浏览

c# - 不处理所有元素的并行性如何?

我创建了这个正常的 for 循环:

该循环仅检查变量“files”中的每个文件是否具有变量“dependencies”中指定的所有依赖项。

“文件”变量应该只有唯一的元素,因为它被用作结果的键,一个字典,但我在调用方法之前检查了这个。

for 循环工作正常,所有元素都在单线程中处理,所以我想通过更改为并行 for 循环来提高性能,问题是并非所有来自“files”变量的元素都在并行(在我的测试用例中,我得到 30 个元素而不是 53 个)。

我试图增加时间跨度,或者删除所有“Monitor.TryEnter”代码并只使用一个锁(filesAnalyzed)但仍然得到相同的结果

我对并行器不是很熟悉,所以它可能是我正在使用的语法中的东西。

任何反馈表示赞赏

0 投票
1 回答
1195 浏览

python - Efficient parallelization of operations on two dimensional array operations in python

I'm trying to parallelize operations on two dimensional array using joblib library in python. Here is the code I have

The above code takes more time than the basic nested for loop below.

Why are parallel operations taking more time? How can the efficiency of the above code be improved?

0 投票
1 回答
951 浏览

c++ - cpp中的并行openMP循环

我正在尝试在 cpp 中使用 openMP 学习并行化。我正在使用以下测试示例

我正在使用 4 个线程;使用 top (在 unix 中)我应该在 col %CPU 400% 或类似的东西中看到。但我得到了 100% 的串行执行情况。如果我测量时间,与串行执行相比没有速度增益。我无法弄清楚我做错了什么。

0 投票
0 回答
839 浏览

multithreading - 使用 tbb::parallel_for 时出错

当我使用 TBB 库的 parallel_for 时出现错误。我不明白为什么..我已经能够使用 tbb::atomic 所以我猜这不是链接问题。这是我使用 tbb 的代码部分:

我在网上举了一些例子,调试起来更方便。这是我的包含,我尝试添加 tbb::task 但它没有用。

在我得到的两个错误中(它们是相同的)

如果您有任何建议,将非常欢迎:)

0 投票
0 回答
147 浏览

c - 静态结构数组openmp并行用于

我的 C 代码结构如下:

和下面的静态声明:

我还有另一部分代码,它是天线性能非线性优化的一部分。在该部分中,逻辑循环如下所示:

我正在尝试并行化上述使用,并且已经学习了如何在其他情况下执行此操作。

我发现您可以使用线程化静态变量

但是,我不确定我是否能够使用 ant 执行此操作,因为它是一个数组,并且我似乎正在丢失天线结构中 randomize_antenna() 函数中未随机化的值的初始化。我想让每个线程都有自己的静态 ant 数组的本地副本来设置和检索值。我怎样才能做到这一点?

0 投票
0 回答
144 浏览

c# - C# Parallel For 循环在完成后并不总是退出 [间歇性错误]

所以我有一个并行的 for 循环,它本身就可以完美地工作,基本上它循环通过一个 32000 个项目集合并进行一些解析和数学运算,然后输出预期的结果。

加载条需要足够长的时间,所以我创建了一个新表单并在调用此方法之前对其进行了初始化,然后在每个循环完成后简单地将 1 添加到进度条,这工作正常,它会更新等等。然后在循环完成后,它意味着加载下一个表单以显示数据,一切都很好。

现在奇怪的问题是,当我删除用于更新进度条的单行(接近代码末尾)时,此方法将始终完美运行,但是当我将其保留时,它有时会按我的意愿工作,有时它将完成所有处理并照常更新进度条,然后到达结束并停止,它实际上并没有退出循环并继续执行代码(我可以知道,因为它下面的 Debug.WriteLine 是卡住时不会触发)。而且我知道程序没有做任何事情,因为 CPU 处于空闲状态(当循环工作时它处于 100% 状态),我无法弄清楚出了什么问题。

这是我的代码:

我尝试在更新之前锁定 ProgressBar 控件,使用 int 存储值,然后通过另一种方法更新进度条,并使用 Task.Factory (它奇怪地运行代码)。我完全没主意了。

tldr:并行 for 循环有时在完成后不会退出,仅当我添加一行代码以将 1 添加到进度条时。

0 投票
0 回答
256 浏览

c++ - concurrency::parallel_for 每次迭代都不一致

我在我的一个应用程序中使用并行 for,其中包含如下所示的循环。我的理解是,parallel_for 循环将遍历整个范围,但不一定按顺序进行,但它仍然会遍历整个范围,但是对于简单的计数,我得到的结果不一致。

考虑a从 0 到 51b迭代并从51 迭代a + 1,count[c] 的值应该是 1326 [(n*n+1)/2 where n = 51] 每次?但它不是。事实上,每次我得到一个随机计数......但如果我printf("%d,", a);神奇地取消注释第一个 printf 语句,输出是否被纠正?我该如何纠正?我怀疑这有一些我没有解决的同步问题,并且 printf 语句通过引入任意等待时间以某种方式解决。

处理/使用 parallel_for 循环的正确方法是什么?

解决 了第二个迭代循环变量b的作用域在 main 中,因为它应该在每个线程中局部作用域,在第二个循环中声明变量可以解决问题,但这并没有说明为什么在循环中添加 printf 可以解决问题,a尽管它b范围不正确并遇到竞争状况

更正代码如下

使用命名空间并发;使用命名空间标准;

0 投票
2 回答
260 浏览

c# - C#,并行 For 循环内部的 For 循环无法正常工作

这是我的代码,无法正常工作。

从 0 到 UrlList 计数的正常 for 循环。也许1500 - 2000;

每 10 次循环后,控制会话。如果不存在或超时,则继续刷新。并且这点首先并行循环工作正常。i = 10 和 x = 0 到 9 之间。

后来,并行不工作。我正在观看 x 的“添加手表”。x 没有变化。第一个循环中的最后一个数字保持不变。

我能做些什么?

0 投票
2 回答
203 浏览

multithreading - tbb 确定不正确的并发

在此处输入图像描述

我正在使用 tbb 进行并行化,但遇到了一个烦人的问题。

我使用 tbb::parallel_for 并且算法在单个线程上运行。

如果我打印

它报告1

如果我通过以下方式手动覆盖并发:

tbb 创建适当数量的线程,但 parallel_for仍将所有工作安排在单个线程上(甚至不在内核之间切换)。所有这一切都发生在 16+ 线程机器上。

此外top报告100%cpu 使用情况(而不是正确的1600% 16平均负载。在图片上可以看到蓝色的核心已经饱和,而其余的核心有时会闲置(快照是我的桌面不是16+核心服务器,但效果相似)。

我正在使用tbb-2018_U5opensuse 15 和dlib

这是一个错误吗?

0 投票
1 回答
67 浏览

c# - 不要因为读取大数组而让 GUI 冻结为 parallel.for

我正在尝试从行所在的 TextBox 中获取一个大字符串文本数组string[]

它可以工作,但问题是在输入大量数据时,程序的 GUI 在处理数组的整个大小时会被冻结片刻(与不让 GUI 滞后的异步函数不同)。避免冻结?我正在尝试使用并行,但结果似乎相同......我该如何解决这个问题?

固定的: