问题标签 [openmp]

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 回答
3906 浏览

c++ - OpenMP 问题

我想在类成员函数中并行化一个循环。但是代码中有两个错误:

如何解释这些错误并解决问题?谢谢并恭祝安康!

0 投票
1 回答
1293 浏览

c++ - 滥用 OpenMP?

我有一个使用 OpenMP 并行化 for 循环的程序。在循环内部,线程将写入共享变量,所以我需要同步它们。但是,我有时会遇到段错误或双重释放或损坏错误。有谁知道会发生什么?谢谢并恭祝安康!这是代码:


更新:

正如我在上一篇文章中一样double free or corruption,代码在单线程下运行良好,但在多线程下会出现运行时错误。错误会不时变化。如果我运行它两次,一个将是段错误,另一个将是双重释放或损坏。

0 投票
2 回答
4102 浏览

c - 为 OpenMP 中的每个内部循环启动一个线程

我对 OpenMP 相当陌生,我正在尝试启动一个单独的线程来处理 2D 数组中的每个项目。

所以本质上,这个:

我正在做的是这样的:

这实际上是否为每个 2D 项目启动了一个线程?我将如何测试?如果错了,正确的做法是什么?谢谢!

注:代码已大大简化

0 投票
1 回答
291 浏览

openmp - OpenMP 分裂联合模型

我正在使用 OpenMP 并行化几个单独的 for 循环。在gdb中调试时,我发现当运行到达第一个并行区域时会创建多个线程。多个线程在运行整个程序结束时退出。这与我对 OpenMP 的拆分连接模型的看法相反,在该模型中,线程应该连接到一个主线程中,然后在每个并行区域的末尾而不是整个程序的末尾终止。

我错了吗?

谢谢!

0 投票
3 回答
601 浏览

c++ - 控制 OpenMP 程序中的 FPU 行为?

我有一个修改 FPU 控制字的大型 C++ 程序(使用_controlfp())。它取消屏蔽一些 FPU 异常并安装 SEHTranslator 以生成类型化的 C++ 异常。我正在使用 VC++ 9.0。

我想使用 OpenMP (v.2.0) 来并行化我们的一些计算循环。我已经成功地将它应用于一个,但数值结果略有不同(尽管我理解这也可能是由于计算以不同的顺序执行的)。我假设这是因为 FPU 状态是线程特定的。有没有办法让 OpenMP 线程从主线程继承该状态?或者是否有某种方法可以使用 OpenMP 指定新线程执行设置正确状态的特定函数?处理这种情况的惯用方法是什么?

0 投票
4 回答
20120 浏览

qt - Qt 支持 OpenMP 吗?

我在我的 Visual Studio 项目中使用 OpenMP,目前正在认真考虑改用 QT 创建者。(Visual Studio 不烂吗?,我对微软的期望更高)

但无论如何... QT 创建者是否支持 OpenMP?在这种情况下,我应该怎么做才能启用它?或者可能默认启用?我需要做一些特别的事情吗?

感谢您的建议。伊格纳西奥。

0 投票
1 回答
1000 浏览

xcode - 在 OS X 上使用 OpenCV 的 OpenMP

我在让 OpenMP 和 OpenCV 与 Xcode 中的新项目很好地配合时遇到问题。处于当前状态的项目除了从默认相机中抓取帧并将它们放入窗口之外什么都不做。此功能有效。但是,我想在一个单独的线程中获取帧,我希望我能获得一些使用 OpenMP 的经验。

仅仅选中复选框以在 Xcode 中启用 OpenMP 会造成严重破坏。该程序虽然可以正常编译、加载和运行,但不会响应任何事件——句号。它只是坐在那里,绘制抓取的框架。(我也得到了 OS X 沙滩球,即使它运行良好。)我最终不得不强制退出应用程序或从 Xcode 中终止它。请记住,即使没有任何 OpenMP #pragmas,我也会得到这种行为——我只需在 Xcode 中启用该选项。

关于如何解决这个问题的任何想法?

0 投票
2 回答
37643 浏览

c - 如何确保动态分配的数组在openmp中是私有的

我在 Linux 机器上使用 gcc 在 C 和 openMP 中工作。在 openmp 并行 for 循环中,我可以将静态分配的数组声明为私有的。考虑代码片段:

一切都按预期工作。但如果我改为动态分配一个,

a (至少 a[1...9]) 的值不受保护,但就像它们是共享的一样。这是可以理解的,因为 pragma 命令中似乎没有任何内容告诉 omp 需要私有的数组 a 有多大。如何将此信息传递给openmp?如何将整个动态分配的数组声明为私有?

0 投票
4 回答
19695 浏览

c - 我需要#include吗在我的 C/C++ 源代码中?

是否有必要在我的 C/C++ 源代码中包含 omp.h?为什么?或者为什么不呢?与 -fopenmp 标志一起使用时,gcc 编译器是否默认包含它?似乎没有什么不同。

0 投票
2 回答
2490 浏览

c - 实现并行算法来计算 pi

我想在 OpenMP 中使用线程实现下面代码的并行版本,有没有更好的方法来做到这一点?