腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
文章
问答
(9999+)
视频
沙龙
1
回答
gcc
openmp
线程
重用
、
、
、
我正在使用
gcc
的
openmp
实现来尝试并行化一个程序。基本上,任务是添加omp编译指示,以便在找到的程序上获得加速。 给出了原始的串行程序(除了我在末尾添加了3行注释外,如下所示)。程序是否在每次命中omp parallel for子句时都不断生成新的
线程
?在为减少而设置障碍的过程中有这么多的开销吗?或者这可能是内存访问问题(例如缓存颠簸)?从我读到的大多数
openmp
线程
的实现都会超时
重用
(例如pooled),所以我不确定第一个问题是哪里出了问题。
浏览 0
提问于2012-01-31
得票数 5
回答已采纳
1
回答
openmp
线程
私有与
gcc
__thread兼容性
、
我对"
openMP
线程
“的理解是,它们可能不会一对一地映射到OS
线程
。似乎不需要这样做。
GCC
有,它用于
线程
本地存储(根据我的解释,
线程
和操作系统
线程
一样)。这是否意味着
GCC
__thread与
openMP
的threadprivate不兼容?如果
openMP
规范允许将
openMP
线程
复用到OS
线程
上,那么我认为__thread和threadpriva
浏览 1
提问于2021-10-07
得票数 1
回答已采纳
1
回答
如果在两个部分中更改
线程
数量,
OpenMP
线程
的SPID是否应该更改?
、
、
、
我有两个
OpenMP
并行区域(我在Linux下使用C++ ),有不同数量的
线程
--假设其中一个是4个,另一个是8个。/rampack casino -i banana_cube.ini --start-from=0p5 --continue=100000那么这是一种正确的行为吗?我
浏览 10
提问于2021-04-25
得票数 1
回答已采纳
1
回答
OpenMP
如何
重用
线程
、
、
、
我认为创建和删除
线程
的代价可能很高。
OpenMP
是否尝试
重用
现有
线程
?pragma omp section #pragma omp section } 在执行过程中,
OpenMP
是分配5个
线程
还是3个
线程
(其中C和D
重用
A和B使用的
线程
)?
浏览 2
提问于2015-09-14
得票数 3
回答已采纳
4
回答
为什么只能在
OpenMP
的“主”
线程
上调用使用Java语言编译的JNI库?
、
似乎对包含
OpenMP
指令的本机函数的调用在EXC_BAD_ACCCESS中崩溃,如果它们是从一个Java
线程
而不是从主
线程
调用的-换句话说,工作,但是在另一个
线程
上调用库,比如EventQueue public static void main(String[] args) {我是
OpenMP
的新手,所以我不确定是什么导致了这种情况。java "main“
线程</
浏览 0
提问于2010-01-04
得票数 2
回答已采纳
1
回答
在
线程
池中执行的
OpenMP
代码
、
、
、
我正在考虑一个设计,
线程
池将执行代码块,这些代码块可能包含
OpenMP
语句(大部分是并行的)。(我猜类似于: )。我的问题是,如果每次都由不同的
线程
执行一个
OpenMP
并行区域,那么它是否会导致问题或导致不良性能。目标将是Linux (
gcc
)和Windows (msvc)。(
线程
-0,.,
线程
-n)。一个
线程
执行doTask()。稍后,将同一个Task对象再次分配到
线程
池中,然后再一次.。因此,doTask() (和并行部
浏览 3
提问于2011-01-28
得票数 2
回答已采纳
1
回答
gcc
OpenMP
实现:它如何动态地设置
线程
数?
、
如果设置omp_set_dynamic(1),
gcc
如何确定最佳
线程
数?
OpenMP
将其定义为实现,但我想知道
gcc
是如何实现它的。 谢谢!
浏览 3
提问于2014-06-10
得票数 2
回答已采纳
2
回答
将
OpenMP
代码编译为C代码
、
、
、
、
有没有一种方法可以将
OpenMP
代码编译成C代码(将
OpenMP
部分转换成纯C代码),这样我就可以知道
OpenMP
生成了什么类型的代码。我用的是
gcc
4.4编译器。
浏览 1
提问于2012-05-16
得票数 8
回答已采纳
1
回答
omp
线程
池何时被破坏?
、
、
但是每次请求传入时,我的服务都会为它创建一个全新的
线程
,这个
线程
将使用omp创建一个
线程
池。我能问一下什么时候这个
线程
池会被分解吗?(foo); } thread.join();} 在for循环中,
线程
num为8*x+1(8个核心主机,每个std::
线程
约8个omp
线程
,以及1个主
线程
)。在for循环之后,<em
浏览 51
提问于2022-08-09
得票数 1
1
回答
嵌套
openmp
导致分段故障(仅限MacOS X)
、
、
操作系统是MacOS X Lion,编译器应该是llvm-
gcc
或者是
gcc
-4.2 (我不确定,简单用cmake...)然后,我构建了以下应用程序进行演示: 编辑:我现在在linux机器上尝试了同样的方法
浏览 2
提问于2011-12-04
得票数 1
回答已采纳
1
回答
OpenMP
线程
创建
、
、
、
、
在下面的代码中,
OpenMP
运行时将重新创建
线程
还是
重用
以前创建的
线程
-即使用
线程
池?一些同事认为,它会重新创建
线程
,因为“#并行”子句嵌套在for中;我对此表示怀疑,并对GDB进行了一些测试,这表明这不是事实。
线程
实际上是
重用
的。
浏览 0
提问于2017-07-24
得票数 1
4
回答
Openmp
并行部分与并行
、
、
我有这两段代码#pragma omp sections#pragma omp section#pragma omp section#pragma omp section#pragma omp section#pragma omp section#pragma omp section
浏览 2
提问于2013-03-25
得票数 4
回答已采纳
1
回答
libiomp5和libgomp能/应该混合吗?
、
我们正在编译一个使用
OpenMP
的应用程序。我们正在使用
gcc
4.4,与-fopenmp。该应用程序还使用IPP,其中包括自己版本的
OpenMP
(libiomp5)。(注意:我们通过调用ippSetNumThread(1)来禁用IPP的内部
线程
。根据Intel的文档,这应该避免与其他
线程
库的冲突。然而,与IPP的链接仍然存在于liBiop5.so中。既然libigp5.so已经连接到其中,我们就没有连接到libgomp.so (
gcc
的
OpenMP
版本)。在很长一段
浏览 4
提问于2010-12-28
得票数 4
回答已采纳
2
回答
在
OpenMP
中导致死锁的std::thread和tbb::task_group之间的
线程
ID
重用
、
、
、
、
所以看起来进程的主
线程
实际上是在等待 任务 而不是等待 IO
线程
由于ID的
重用
。因此,TBB任务挂起在
OpenMP
多
线程
实现中的某个地方。 但是,为了使情况变得复杂,任务似乎不会挂起,除非IO
线程
中的
线程
ID恰好被任务
重用
。因此,在std::thread和TBB任务和
OpenMP
并行性之间,有一个由
线程
ID
重用
触发的竞争条件。我找到了两个解决方法,可以让挂起消失: 在IO
线程
的末
浏览 108
提问于2021-02-24
得票数 3
回答已采纳
1
回答
用-fopenmp和-lgomp连接
OpenMP
的区别
、
、
、
我们使用
GCC
4.8创建了一些库,这些库静态地链接了它们的一些依赖项-例如。log4cplus或boost。对于这些库,我们使用boost-python创建了Python绑定。每当这样的库使用TLS (就像log4cplus在其静态初始化中所做的那样,或者stdlibc++在抛出异常时所做的那样-不仅仅是在初始化阶段),整个事情都会在段错误中崩溃-并且每次
线程
局部变量的地址都是然后今天我发现这些崩溃的原因是我们链接
OpenMP
的方式。我们使用"-lgomp“而不是仅仅使用"-fopenmp”来做到这一点。自从我改变了这
浏览 0
提问于2014-04-08
得票数 20
回答已采纳
1
回答
OpenMP
线程
在QThread上使用时只在一个CPU上运行。(Qt,C++)
、
、
、
、
现在,为了加快计算速度,我想在工作人员中使用
openMP
。奇怪的是,所有的
openMP
线程
似乎只运行在一个CPU内核上。我之所以注意到这一点,是因为无论是否使用
openMP
,CPU的使用率(在4个逻辑核上约为25% )和运行模拟的时间都不会改变。程序编译,计算是正确的(也是当使用
openMP
)。我使用的
浏览 1
提问于2016-09-24
得票数 0
3
回答
如何找到"parallel for“的实现?
、
、
我想确切地知道omp parallel for和其他类似的构造是怎么回事。我如何找到这些是如何实现的?对知道这一点的人做一个简短的总结会很棒。谢谢。
浏览 1
提问于2011-02-04
得票数 0
回答已采纳
2
回答
omp_get_max_threads()在并行区返回1,但应为8
、
、
我正在Linux上编译一个复杂的C++项目,它使用
OpenMP
,用CMake和
GCC
7编译。我在这个项目中遇到的奇怪问题是
OpenMP
显然可以工作,但它认为只支持1个
线程
,而它应该是8个
线程
。但是,如果我手动指定
线程
的数量,它确实会加速代码。[
openmp
_test] Num threads = 5更奇怪的是,一个简
浏览 1
提问于2017-08-03
得票数 1
4
回答
omp_get_max_threads在平行区的行为
、
我在Snow Leopard和linux上编译了这段代码,得到了不同的结果。在Snow leopard上,omp_get_max_threads的第一次调用返回2,第二次返回1。在linux上,两次调用都返回4。我认为Linux的行为是正确的,对吗?都是正确的,我只是对这个函数有误解?#include <omp.h> printf(" In a serial region; max threads are : %d\n", omp_get_max_threads()); #pragm
浏览 1
提问于2010-01-17
得票数 1
回答已采纳
2
回答
OpenMP
:为“shared”预先定义的“shared”?
、
、
j++) { } } }Invoking:
GCC
C++ Compiler g++ -O0 -g3 -Wall -c -fmessage-length=0 -fopenmp -MMD
浏览 0
提问于2012-11-03
得票数 9
回答已采纳
点击加载更多
热门
标签
更多标签
云服务器
ICP备案
对象存储
云点播
实时音视频
活动推荐
运营活动
广告
关闭
领券