问题标签 [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.
multithreading - 并行,但速度较慢
我正在使用蒙特卡罗方法来计算 pi 并使用并行编程和 openmp 进行基本体验
问题是当我使用 1 个线程,x 次迭代时,总是比 n 个线程,x 次迭代运行得快。谁能告诉我为什么?
例如,代码运行如下“a.out 1 1000000”,其中 1 是线程,1000000 是迭代
openmp - 使用 openmp 并行化代码
下面的函数包含嵌套的 for 循环。其中有 3 个。为了便于理解,我在下面给出了整个函数。我想在最里面的 for 循环中并行化代码,因为它需要最大的 CPU 时间。然后我可以考虑外部 2 for 循环。我可以在最里面的 for 循环中看到依赖项和内部内联函数。是否可以重写最里面的 for 循环以使用 openmp pragma 启用并行化。请告诉如何。我只写了我感兴趣的循环,然后是这个循环存在的完整函数以供参考。
有兴趣并行化下面提到的循环。
存在此循环的完整功能如下供参考。/*!
我重写了代码以尝试解决最内层 for 循环中的依赖关系,即 for(y=0;y<4;y++) 和许多 LineSadBlk。如有错误请评论。我认为 refptr 和 orgptr 已通过此排序并解决了依赖关系,但 LineSadBlk0,1,2,3 仍然具有依赖关系,就好像我们并行运行第一次和第二次迭代一样,LineSadBlk0,1,2,3 的值将是被线程占用。请问这个怎么解决。
openmp - 如何并行化这个,使用 OPENMP 部分
我有这个函数,我想使用 openmp 部分进行并行化。我将函数分成不同的部分并应用了#pragma omp 部分,但它给出了分段错误。有人可以解释一下原因和解决方案。我应该在部分中使用一些子句。请问哪一个以及如何。
c++ - AMD 多核编程
我想开始编写应用程序(C++),它将利用额外的内核来执行需要执行大量计算并且其计算相互独立的部分代码。我有以下处理器:x64 Family 15 Model 104 Stepping 2 Authentic AMD ~1900 Mhz 在 Windows Vista Home Premium 32 位和 Opensuse 11.0 64 位上运行。
在 Intel 平台上,我使用了以下 API Intel TBB、OpenMP。他们是否在 AMD 上工作,AMD 是否有类似的 API。您的经验是什么?
visual-studio - VS2008 Pro OpenMP项目中对VCOMP90.DLL的依赖
我在 VS 2008 Pro 中有一个使用 OpenMP 的 DLL 项目。我使用 /MT 作为“代码生成”选项,因为我希望我的所有依赖项都静态链接到我的 DLL 中,因为我不想将许多库分发给我的客户 - 所有内容都应包含在这个 DLL 文件中。问题是我生成的 DLL 仍然依赖于 VCOMP90.DLL。
我怎样才能摆脱这种依赖?
一些信息:
- /openmp 在编译器选项中设置
- 我静态链接到 vcomp.lib
包括已设置
- 使用多线程库 (/MT)
非常感谢你的帮助!
c++ - OpenMP:堆损坏的原因,有人吗?
编辑:我可以同时运行同一个程序两次,没有任何问题 - 我如何使用 OpenMP 或其他方法复制它?
这是问题的基本框架。
我已经验证,当尝试通过 释放一些内存时MemDeallocFunctionInDLL()
,_CrtIsValidHeapPointer()
断言失败。
这是因为两个线程都在写入同一个内存吗?
所以为了解决这个问题,我想我会SomeClass
保密(这对我来说完全陌生,所以感谢任何帮助)。
现在,当它尝试在开始时为Data
.
注意:如果需要,我可以更改 DLL
注意:它可以完美运行,无需#pragma omp parallel for
编辑:现在Bar
看起来像这样:
仍然没有运气。
openmp - 如何使用 OpenMP 在中间的所有线程的同步(`barrier`)中创建`omp parallel for`
我有两个功能,do_step_one(i)
和do_step_two(i)
,i
从0
到N-1
。
目前,我有这个(顺序)代码:
do_step_one()
和的每次调用do_step2()
都可以按任何顺序并行执行,但任何都do_step_two()
需要结束所有的do_step_one()
开始(它使用do_step_one()
结果)。
我尝试了以下方法:
但是 gcc 抱怨
convolve_slices.c:21:警告:屏障区域可能不会紧密嵌套在工作共享、关键、有序、主或显式任务区域内。
我有什么误解?如何解决这个问题?
c - 如何在while循环中使用omp屏障,线程迭代次数不相等
我正在尝试使用 omp 实现 listranking 问题(也可以通过快捷方式知道)以获得数组 W 的总和前缀。我不知道我是否正确使用了flush pragma ..并且在编译“障碍”时出现警告区域可能不会紧密嵌套在工作共享、关键、有序、主或显式任务区域内”
}
求救啊啊啊啊!
visual-studio-2008 - Visual C++ 2008 标准版中的 OpenMP
如何在 VC++ 2008 中设置 OpenMP?编译器支持它,我相信我只缺少头文件/库。我是否可以像将框架 SDK 添加到 VC++ Express 以进行 MFC 开发一样获得它们?
java-native-interface - 为什么使用 OpenMP 编译的 JNI 库只能在 Java 的“主”线程上调用?
我使用各种#pragma omp 指令用C 编写了一个库来并行执行。我在 Mac OS X 10.6 上。然后,我将这些函数包装在一个 JNI 库中,并从我的 Java 应用程序中调用它们。
如果从主线程之外的 Java 线程调用它们,则似乎对包含 OpenMP 指令的本机函数的调用会因 EXC_BAD_ACCCESS 崩溃 - 换句话说,
有效,但在另一个线程上调用库,比如 EventQueue
EXC_BAD_ACCESS 崩溃。
我是 OpenMP 的新手,所以我不确定是什么原因造成的。java“主”线程有什么特别之处?它是否以某种特权模式运行,只有它才能访问初始化 OpenMP 并行化任务所需的资源?我也不太熟悉 OS X 上 JVM 的内部工作原理,所以我不确定 Java 线程和本机线程之间的关系是什么。
任何帮助表示赞赏!