问题标签 [libgomp]

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

python - Python错误未知:线程池析构函数

我正在使用 python 并且遇到一个非常奇怪的错误,我似乎在任何地方都找不到。它与 libgomp 库和线程有关。错误是:

libgomp:无法创建线程池析构函数。

奇怪的是,错误发生在一定的时间/过程之后。它不会发生在我的代码的某一行中。我正在运行的代码是一个迭代求解器,因此,我可以通过放宽容差来轻松控制代码运行的时间量。现在,如果我设置容差以使所有内容在 ~9 次迭代(大约 15 秒)中“收敛”,那么代码就可以正常完成。如果我将其增加到 >9,那么我会收到错误消息。这显然不是代码的一部分的问题,因为它每次都发生在不同的部分,并且没有回溯信息。

有任何想法吗?

0 投票
1 回答
890 浏览

gcc - 如何单独构建和开发 libgomp(openMP 运行时)?

我正在尝试对 openMP 运行时库 ( GOMP ) 进行更改。据我所知,该库带有 GCC 编译器,但我的目标是单独使用 GOMP。所以我想知道如何独立于 GCC 构建和开发 GOMP。任何帮助将不胜感激。谢谢!

0 投票
1 回答
541 浏览

c++ - 程序入口点 GOMP_parallel 无法位于 dll 中

我有一个使用 OpenMP 的 QT 应用程序。(mingw, win8) 我想使用没有 qt creator 的 .exe 文件。我已经将所有 dll 放在构建目录中,但是当我运行 .exe 文件时仍然收到此消息。

顺便说一句,如果我从 Qt 创建者运行它,一切正常。

这是我的应用程序中唯一的 OpenMP 代码:

这就是我在 .pro 文件中启用 OpenMP 的方式

不确定是否重要,但此代码在 QThread 中有效。我的意思是我有一个用于 GUI 的线程和第二个用于计算的线程。

任何想法为什么会发生这种情况?

更新

是的,我也放在libgomp-1.dll那里。

更新 2

Dependency walker 刚刚显示了几个丢失的 microsoft dll。不要认为这是问题所在。

0 投票
2 回答
11149 浏览

linux - OpenMP + linux - GOMP_4.0 未找到

我一直在尝试编译一个在 suse 上使用 OpenMP 和 gcc --version 4.9.4 的程序

./a.exe: /usr/lib64/libgomp.so.1: 找不到版本“GOMP_4.0”(./a.exe 需要)

我有一个名为“/usr/lib64/libgomp.so.1”的文件,我该如何修复它?

0 投票
0 回答
300 浏览

sorting - OpenACC 双调排序在 GPU 上比在 CPU 上慢得多

我有以下代码可以在我的 GPU 上对双精度值进行排序:

这在我的 GPU 上比在我的 CPU 上要慢一些。我正在使用 GCC 6.1。我不知道如何在我的 GPU 上运行整个代码。到目前为止,只有并行循环在 cpu 上执行,并且它为每个外部循环在 CPU 和 GPU 之间切换。

我想在 GPU 上运行函数的全部内容,但我不知道如何。现在对我来说一个主要问题是 GCC 实现目前不允许嵌套并行,所以我不能在另一个并行构造中使用并行构造。有没有办法解决这个问题?

我尝试在第一个循环的顶部放置一个内核构造,但这会使它减慢大约 10 倍。如果我在第一个循环上方使用并行构造,则结果不再排序,这是有道理的. 两个外部循环需要按顺序执行,算法才能工作。

如果您对如何提高性能有任何其他建议,我也将不胜感激。

0 投票
0 回答
241 浏览

compiler-errors - “GOMP 4.0”的凸轮错误

我正在尝试在 jupyter notebook 中使用 CAMB,所以我使用了CAMB 演示代码的第一部分:

但我得到了这个错误:

所以,我不知道发生了什么。我试图找到“GOMP 4.0”包,但没有找到。那么,有人可以帮我解决这个问题吗?

0 投票
0 回答
747 浏览

gcc - 如何启用 libgomp

运行时gcc -v--enable-libgomp排除。

如何在 gcc 中启用 libgomp?

gcc -v结果:

0 投票
1 回答
162 浏览

openmp - 无法理解 libgomp 如何实现 FOR 构造

根据 libgomp 手册,格式为:

变成

我做了一个非常小的程序来调试只是为了看看这个实现是如何工作的:

接下来,我运行 gdb 并将断点设置为“GOMP_parallel_loop_static”和“GOMP_parallel_end”。一开始,库没有加载,所以它们处于挂起状态。当 a 在 gdb 中运行测试程序时,我得到了以下结果:

如您所见,它到达了“GOMP_parallel_end”中的第二个断点,但不是第一个。我想知道如果 libgomp 手册清楚地显示“GOMP_parallel_loop_static”首先出现,这怎么可能。

谢谢你。

0 投票
1 回答
539 浏览

gcc - Objdump 反汇编与源代码不匹配

我正在研究链接到 libgomp 的 OpenMP 程序的执行流程。它使用#pragma omp parallel for. 我已经知道这个结构变成了对GOMP_parallel函数的调用,它的实现如下:

objdump -d在 libgomp 上执行时,显示GOMP_parallel为:

首先,例如,GOMP_ordered_end在源代码中没有任何调用。GOMP_parallel其次,该功能包括:

根据 objdump 输出,此函数从 开始ba00并在 结束bbbd。一个空的函数里怎么会有这么多代码?顺便说一句,libgomp 的源代码中有注释说它应该只在使用 ORDERED 构造时出现(顾名思义),这不是我测试的情况。

最后,我主要关心的是:为什么源代码与反汇编有这么大的不同?例如,为什么在程序集中没有提及gomp_team_start

系统有gcc版本5.4.0

0 投票
0 回答
68 浏览

c - OpenMP 没有看到所有的 CPU

我在 Windows 上使用 OpenMP 和 MinGW。GCC 版本 7.2.0 x86-64-posix-sev-rev1,由 MinGW-W64 项目构建。在运行 Windows Server 2016 的具有 2 x Xeon E5-2699 V4 的计算机上。我正在运行:

产生:

超线程共有 44 个物理内核。OpenMP 根本看不到其中一个 CPU。

编辑:在确认相同的代码与 CLang 正常工作并查看 libgomp 的源代码后,我发现它与 libgomp 的实现有关。他们使用旧方法来计算 Windows 上的处理器(迭代 GetProcessAffinityMask 的输出,仅当系统上的逻辑核心少于 64 个时才有效)