问题标签 [ppl]

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 投票
1 回答
713 浏览

c++ - c ++ PPL并行工作-归约类“可组合”中的函数max()

我正在使用并行模式库。类combinable 在openMP 中扮演reduction 子句的角色,可以合并并行计算的结果。

.combine(max()) 是否存在(顺便说一句,您能否指出一些允许使用 combine 操作的 ref,但没有找到)?

谢谢并恭祝安康。

0 投票
1 回答
4379 浏览

c++ - C++ - lambda 表达式、捕获子句和类成员

我正在使用 PPL 和 parallel_for 语法来创建一个 for 循环。在捕获子句中,我有 3 个变量,其中一个是类成员。由于在捕获子句中的变量中存在类成员,导致编译错误。但是,如果我在 lambda 主体中有这个类成员,它也不会编译,并且错误声明是封闭范围内的变量应该在捕获子句中。如何进行?我应该事先将变量成员复制到局部变量中,并将其传递到捕获子句中吗?

这是代码,其中 formulaCommand 是类成员。

谢谢!

0 投票
1 回答
497 浏览

c++ - C++ PPL - lambda 表达式和数据共享

我的 PPL 程序崩溃了。我确实怀疑一些变量处理不当。如果我的 parallel_for 构造语法是

,是否每个线程都有自己的 confciInput 和公式副本,例如,可以使用?还是 lambda 表达式的捕获子句仅提供对封闭范围局部变量的访问?

谢谢并恭祝安康。

0 投票
1 回答
601 浏览

c++ - C++ PPL - 初始化一个可组合的

假设在封闭范围内,我有一些变量,parallel_for 循环中的每个线程都应该访问这些变量。我有一个可以组合的想法,在每个线程中制作一个我的变量副本。但是,我不明白如何初始化我的可组合事物:

例如,我想使用 QString 公式的副本。我为每个线程中的复制内容创建了一个可组合的代表:

那我应该写:

? 这会解决问题吗,还是仍然可以与线路并发访问

处理这个问题的正确方法是什么?

如果不清楚请告诉我

谢谢并恭祝安康。

0 投票
1 回答
731 浏览

c++ - 如何在 C++ 的嵌套循环中正确更新进度条?

我使用 MS Visual Studio 2010、C++、PPL 库进行并行计算和 Qt 库。

假设我们有 3 个独立的引擎,m_Iterations每个引擎都有。每个引擎的进度条如下所示:

进展一:||||||||

进度2:|||||

进度3:|||||||||||

我想要单个进度条(而不是上面显示的),它显示向后的进度条(其中显示最小值):

总进度:|||||

让我们假设我们有QProgressBar * pProgressbarCoreApplication::processEvents()代码片段”。我应该如何修改代码以使用并发运行时技术实现内部循环的单个进度条的想法。

0 投票
1 回答
544 浏览

c++ - 限制(放大器)函数类型

我可以restrict(amp)按如下方式创建函数:

我可以在其他restrict(amp)功能中使用此功能,例如:

编译后用什么代替" auto"?我尝试使用“std::function”:

但收到编译错误。

感谢您的关注!

0 投票
1 回答
334 浏览

performance - PPL 和英特尔媒体 SDK

我想在我的项目中集成英特尔 QSV 编码器。我想澄清一下英特尔已知限制发布说明中的一点:

将英特尔 Media SDK 与英特尔® 线程构建模块并行使用可能会影响性能

为什么线程管理会影响英特尔 QSV 编码器?

我的项目没有使用 Intel TBB,而是使用了 Microsoft 并发运行时并行模式库 (PPL) 技术。PPL 会影响英特尔 QSV 性能吗?

0 投票
1 回答
1055 浏览

c++ - C++ Metro App Tutorial 的编译错误 - 任务继续

我正在学习 msdn (链接) 上的“教程:使用 C++ 创建您的第一个 Metro 风格应用程序”。不久进入它的“第 2 部分”,我遇到了一个错误。我在 Windows 8 VM Release Preview(5 月 31 日)和 Visual Studio 2012 Release Candidate(最新)上运行它。

在添加了 3 个新的 Metro 页面、ItemsPage、SplitPage 和新的“DetailPage”之后,我所在的位置是代码部分。添加这些很好,但是当我直接在下面添加代码时,在标记为“修改初始化数据模型的异步代码”的部分中,它会创建以下错误的两个副本:

然后我从该部分中取出所有代码并开始一次添加一段以找出错误“真正”在哪里,因为我显然没有修改那个标准头文件。原来它在App::InitDataSource方法的任务链中:

我一次取出一个 lambdas(并放入分号以便编译),如果我有前两个,那很好,但链中的最后一个会导致错误。但如果我create_task只是最后一个,它会编译。或者如果我用它编译的第一个和第三个来做。或者只有前两个。

问题是第二个 lambda 吗?头库是否对 void 返回类型感到困惑?或者是别的什么?根据这个理论,我将“最终”处理程序声明修改为:

现在编译。但是根据 msdn 上的文档(这里),这是对的吗?该页面上有一个名为“基于价值的与基于任务的延续”的部分,复制如下:

给定一个返回类型为 T 的任务对象,您可以为其后续任务提供一个类型为 T 或任务的值。采用 T 类型的延续称为基于值的延续。当前面的任务没有错误地完成并且没有被取消时,将安排一个基于值的延续来执行。将类型任务作为其参数的延续称为基于任务的延续。基于任务的延续总是安排在前面的任务完成时执行,即使前面的任务被取消或抛出异常也是如此。然后,您可以调用 task::get 来获取先前任务的结果。如果前面的任务被取消,task::get 抛出 concurrency::task_canceled。如果前面的任务抛出异常,task::get 会重新抛出该异常。

这是说错误处理的最终延续应该是最终.then延续的类型,还是原始延续的类型create_task?如果它是最终的(就像我在上面所做的那样void),这种延续实际上会处理所有上述错误,还是仅处理最终.then调用的错误?

这是“修复”他们的例子的正确方法吗?或不?

0 投票
1 回答
391 浏览

c++ - PPL - 许可证和链接信息

我想将 PPL 与编译器 VS2010 一起使用。PPL 的许可证状态是什么?可以在商业软件中自由使用吗,能否指点一下相关文档?它如何进行适当的编译或它是如何工作的?我是否必须下载单独的库,或勾选编译器选项...?

谢谢并恭祝安康

0 投票
1 回答
2140 浏览

multithreading - 如何将 PPL 线程数设置为 1?

我有一个数字运算功能,所以我使用 PPL 将其并行化。但是由于某种原因,另一个开发人员要求此函数串行运行。我需要提供一个参数,以便他可以在串行模式下调用我的函数...我不想复制代码,所以我需要一种方法来限制 PPL 线程的数量..虽然我很难过

PPL 创建两个线程并并行运行我的代码...关于如何序列化 ppl 增强代码的任何建议。