问题标签 [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 回答
7531 浏览

c++ - 英特尔 TBB 和微软 PPL 有什么区别?

我打算开始“玩”跨平台项目的基于任务的并行性。我想使用英特尔线程构建模块。我从 Windows 和 Visual Studio 开始。

由于我目前只想制作原型,我正在考虑仅在 Windows 上“玩”,然后有足够的知识在所有兼容平台上使用该库。

我了解到,自 VS2010 以来,Microsoft 提供了一个类似的库,并行处理库,它具有(几乎)与 Intel TBB 相同的接口。

一些消息来源(包括 TBB 的团队博客)建议他们一起构建它并且它是同一个库。

然而,它并不是很明确,因为经常有人建议这两个库之间存在细微差别。

那么,如果有的话,这些差异是什么?我应该直接从最后一个稳定的 ITBB 开始,还是只在原型中使用 Microsoft PPL 并在跨平台的“真实”项目中使用 ITBB 是低风险的?

0 投票
2 回答
424 浏览

c++ - ppl,如何正确使用呢?

以下代码:

产生随机输出,如:0 1000 1468 204 3600 25 5898 7000 7456 1395

我想我应该使用“可组合”,但我找到的关于它的文档不是很好。你知道如何使这段代码正常工作吗?如果 vett 是二维向量怎么办?

既然我想学习并行计算,那么值得学习这个新的微软库还是有更好的选择?

0 投票
3 回答
283 浏览

c++ - 调试和发布版本中奇怪的执行时间

我开始在 VS2010 中使用并行模式库,该应用程序给了我预期的结果,但是当我对调试版本和发布版本进行基准测试时,我在发布版本中得到奇怪的执行时间,如下调试版本:“顺序持续时间:1014”“并行持续时间:437 ”发布版本“连续持续时间:31”“并行持续时间:484”

这是我的应用程序代码

0 投票
3 回答
6752 浏览

c++ - Microsoft 并行模式库 (PPL) 与 OpenMP

我想比较 PPL 与 OpenMP 的性能,但在网上找不到详细的调查。我相信有PPL经验的人并不多。

我正在使用 Visual Studio 2010 在 Windows 上开发我的软件,并且不想在短期内将其移植到其他地方。

如果可移植性不是问题,只关心性能,您如何看待这两种方法?

0 投票
1 回答
613 浏览

c++ - concurrent_vector 的安全性


众所周知,operator [] 对于写入不是并发安全的: concurrent_vector::operator[] Operator 但是如果我保证不同的线程将写入不同的向量位置怎么办。像这样(非常简化的例子):

它是否同时安全?如果“不是”,那为什么?

谢谢

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

windows - 向量 --> concurrent_vector 迁移 + OpenGL 限制

我需要加速一些计算和计算结果,然后用于绘制 OpenGL 模型。当我将 std::vector 更改为 Concurrency::concurrent_vector 并使用 parallel_for 而不仅仅是 for 循环时,主要加速存档。此向量(或 concurrent_vector)在 for(或 parallel_for)循环中计算,并包含 OpenGL 可视化的顶点。

使用 std::vector 很好,因为 OpenGL 渲染过程依赖于 std::vector 保持其项目按顺序排列的事实,而 concurrent_vector 则不是这种情况。代码运行如下:

生成 concurrent_vector 并将其复制到 std::vector 太昂贵了,因为有很多项目。

所以,问题是:我想使用 OpenGL 数组,但也想使用与 OpenGL 输出不兼容的 concurrent_vector。

有什么建议么?

0 投票
1 回答
1007 浏览

c++ - PPL task_group 安排工作并清理积累的资源

我基本上想要完成的是在 task_group 上安排新的工作项,因为工作变得可用。在 task_group 上,run() 方法在生产者消费者场景中被调用 - 这样在任何需要工作的特定时刻,它都被安排在 task_group 上运行

task_group 需要(在退出应用程序之前)调用 wait() 方法来释放资源。我使用 task_group 是因为我还需要取消支持,但需要调用 wait() 使设计复杂化。实际上,我似乎需要使用一个额外的线程来不时在任务组上调用 wait() (不知道在调用 wait() 一次之后在 task_group 上安排新工作是否合法或重复等待())。

你会如何使用微软的 ppl 来做到这一点?

编辑 MSDN 文档指出多次调用 wait() 是合法的:http: //msdn.microsoft.com/en-us/library/dd470481.aspx “在 task_group 对象上调用 wait 会将其重置为可以执行的干净状态被重用。这包括 task_group 对象被取消的情况。

唯一剩下的就是如果可以采取另一种方法

0 投票
2 回答
898 浏览

c++ - 具有 PPL 和并行内存分配的线程 ID

我有一个关于 Microsoft PPL 库和一般并行编程的问题。我正在使用 FFTW 执行大量(100,000)64 x 64 x 64 FFT 和逆 FFT。在我当前的实现中,我使用并行 for 循环并在循环内分配存储数组。我注意到在这些情况下,我的 CPU 使用率最高只有 60-70%。(请注意,这仍然比我测试过的 FFTW 提供的内置线程 FFT 更好地利用)。由于我使用的是 fftw_malloc,是否有可能发生过度锁定而阻止完全使用?

鉴于此,是否建议在主处理循环之前为每个线程预先分配存储数组,这样循环本身就不需要锁?如果是这样,MSFT PPL 库怎么可能做到这一点?我之前一直在使用 OpenMP,在这种情况下,使用提供的函数获取线程 ID 很简单。但是,我在 PPL 文档中没有看到类似的功能。

0 投票
3 回答
1250 浏览

c++ - concurrent_vector.h 中的警告 C4189

我在我的项目中收到以下警告(发布和调试模式):

somefile.h 是我的文件,第 780 行有以下代码:

Vector3i 是这样的:

concurrent_vector.h 中第 1598 行的代码是(第 1598 行只是'{'):

这可能是什么原因?这个 somefile.h 当包含在其他项目中时不会发出那种警告。