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

c - 在一个线程中运行的 C 中打开 MP 并行 for 循环

我有这部分代码正在读取结构的二维数组,对它们进行一些数学运算,将结果放入第二个二维数组:

}

我已经尝试了很多#pragma 语句的组合(包括将更多的变量设为私有)。没有什么会导致a.out 文件运行多个线程。我究竟做错了什么?

0 投票
0 回答
388 浏览

c++ - TBB Parallel_for 和 lambda

是否可以用 parallel_for 做这样的事情

如果在这种类型的布局中应用 parallel_for,其中某个操作必须在另一个操作之前发生,则可能会导致问题,因为线程可以在不同的时间运行

有没有办法让第一个 for 循环在第二个之前运行?

0 投票
0 回答
78 浏览

c# - C# Parallel_For 随机?

我尝试使用 Parallel_For 来更快地在我们的程序中进行计算。确实,它更快,但它似乎表现出随机行为:当我运行它几次时,我得到的结果略有不同。这对于 Parallel_For 是否正常?

0 投票
1 回答
982 浏览

c# - C# Parallel.For 和 Oracle 数据库访问 - 内存异常

我正在处理一些我想在Parallel.For循环内访问 Oracle 数据库的代码。循环将运行几分钟,然后导致错误:

“试图读取或写入受保护的内存。这通常表明其他内存已损坏。”

没有内在的例外。在我的Parallel.For循环中,我正在创建一个打开数据库连接作为本地对象。我的代码如下所示:

我究竟做错了什么?如何创建 24 个并行 Oracle 连接来处理数据?我猜这里发生了某种竞争条件或内存泄漏,我不完全理解,因为它似乎来自OracleConnection对象内部。数据库连接不是线程安全的吗?我尝试更改连接字符串以使用连接池,但这并没有改变任何东西。

0 投票
1 回答
469 浏览

c++ - tbb::parallel_for 是否总是使用调用线程

我有一段代码tbb::parallel_for用于多线程循环,由主线程调用。在那个循环中,我需要主线程来更新 UI 以反映进度。根据我的观察,tbb::parallel_for总是使用调用者线程 + N 个工作线程。但是,我想知道,调用线程的使用是否得到保证,或者恰好是这种情况?

这是示例代码:

谢谢!

0 投票
2 回答
2843 浏览

powershell - powershell的并行foreach最多使用5个线程吗?

throttlelimit参数foreach -parallel可以控制执行脚本时使用多少进程。但即使我设置throttlelimit大于 5,我也不能有超过 5 个进程。

该脚本在多个 powershell 进程中执行。所以我检查了脚本中的 PID。然后对 PID 进行分组,这样我就可以知道有多少进程用于执行脚本。

输出是

对于$i小于或等于 5,我有$i进程。但是对于$i大于 5,我只有 5 个进程。执行脚本时有什么方法可以增加进程数吗?

编辑:为了回应@SomeShinyObject 的回答,我添加了另一个测试用例。这是对@SomeShinyObject 给出的示例的修改。我添加了一个函数S,它只做 10 秒的睡眠。

这是输出。我按时间(秒数)对输出进行分组,并在每个组中重新排序以使其更清晰。很明显,函数S是 5 乘 5 调用的,尽管我设置throttlelimit为 10(首先我们有start sleep 6..10,10 秒后,我们有start sleep 1..5,10 秒后start sleep 11..15,10 秒后start sleep 16..20)。

0 投票
2 回答
684 浏览

c# - Parallel.For SendAsync 到 BufferBlock 到异步转换?

我正在学习TPL Dataflow图书馆。到目前为止,这正是我想要的。

我创建了一个执行以下功能的简单类(如下)

  • 执行后,ImportPropertiesForBranch我转到第 3 方 api 并获取属性列表
  • 返回一个 xml 列表并将其反序列化为一组属性数据(id、api 端点、lastupdated)。大约有 400 多处房产(如房屋)。
  • 然后我使用一个属性数据到我Parallel.ForSendAsyncpropertyBufferBlock
  • propertyBufferBlock链接到 a (它propertyXmlBlock本身就是 a TransformBlock)。
  • 然后propertyXmlBlock(异步)返回 API(使用属性数据中提供的 api 端点)并获取属性 xml 以进行反序列化。
  • 一旦 xml 返回并可用,我们就可以反序列化
  • 稍后,我将添加更多TransformBlocks 以将其持久化到数据存储中。

所以我的问题是;

  • 是否有任何潜在的瓶颈或代码区域可能会造成麻烦?我知道我没有包含任何错误处理或取消(即将到来)。
  • 可以在 a 内进行await异步调用TransformBlock还是这是一个瓶颈?
  • Parallel.For虽然代码有效,BufferBlock但我担心TransformBlock. 我不确定这是最好的方法,我可能会混淆一些概念。

欢迎任何指导、改进和陷阱建议。

0 投票
2 回答
278 浏览

c++ - C++:如何在同一范围内多次使用并行宏?

我正在使用本地函数定义来运行代码块 N 次,就像 C# 的并行版本一样,但是f当我在同一范围内使用两个或多个函数时,它会给出函数的多个定义错误。如何在同一范围内每次使用后增量更改函数名称,例如 f1、f2、f3、..?


定义:

用法:

输出:

通常添加{\}\会解决后续调用,但如果我做嵌套并行呢?

0 投票
0 回答
175 浏览

c++ - parallel_for 中出现无法识别的错误

我正在尝试学习如何使用 parallel_for 循环来完成简单的任务。我正在尝试使用以下代码:

现在,如果我把它放在 main 中,它工作正常,并适当地打印出我期望的内容。但是,如果我将它放在我要链接的 .lib 中,它会编译,但我收到以下错误:

“main.exe 中 0x00007FFA8541A020 (ntdll.dll) 处未处理的异常:RangeChecks 检测代码检测到超出范围的数组访问。”

所以我的问题:

1)为什么这会直接在 main 方法中工作,而不是在我的 .lib 中?如果我缺少标题,我觉得它不会编译 - 我该如何解决这个问题?

2)没有多少谷歌搜索让我找到关于这个错误究竟意味着什么以及如何解决它的解决方案。更令人困惑的是,所有 50 个有效数字在失败之前都会打印出来。有没有人遇到过这个问题?

感谢您的洞察力-我会继续寻找自己!

0 投票
2 回答
449 浏览

c++ - C++ 除了使用 tbb::task_group 之外,如何同时运行三个不同的 parallel_for 函数?

我有代码,我必须同时并行运行 parallel_for (彼此独立)。

代码类似于:

我尝试过使用 task_group。有没有其他可用的方法?