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

openmp - 英特尔 Cluster OpenMP 的类似物

有英特尔 Cluster OpenMP 的类似物吗?该库模拟共享内存机器(如 SMP 或 NUMA),同时在分布式内存机器(如以太网连接的 PC 集群)上运行。

该库允许直接在集群上启动 openmp 程序。

我寻找

  • 允许多线程程序在分布式集群上运行的库
  • 或库(替换例如 libgomp),允许 OpenMP 程序在分布式集群上运行
  • 或编译器,能够从 openmp 程序生成集群代码,除了 Intel C++
0 投票
3 回答
60297 浏览

c++ - 如何在 OpenMP 中使用锁?

我有两段 C++ 代码在 2 个不同的内核上运行。他们都写入同一个文件。

如何使用 OpenMP 并确保没有崩溃?

0 投票
6 回答
5432 浏览

c - 为什么我的计算机在使用并行代码时没有显示加速?

所以我意识到这个问题听起来很愚蠢(是的,我使用的是双核),但是我尝试了两个不同的库(Grand Central Dispatch 和 OpenMP),并且在使用 clock() 来对代码进行计时时使用和不使用使它平行,速度是一样的。(为了记录,他们都使用自己的并行形式)。他们报告在不同的线程上运行,但也许他们在同一个核心上运行?有什么方法可以检查吗?(这两个库都是用于 C 的,我在较低层感到不舒服。)这非常奇怪。有任何想法吗?

0 投票
2 回答
904 浏览

visual-studio-2008 - 是否可以将 OpenMP 库单独插入 Visual C++ 2008?

在 Visual Studio 2005中。OpenMP 没有随 Express Edition 提供,但可以单独下载并进行设置,因为编译器本身支持 OMP。

Visual Studio 2008也一样吗?我们都在使用标准版,它同样支持 OpenMP,但不附带库/头文件。我们有一些代码使用 OMP,但我们真的不希望仅仅为 OMP 升级我们的许可证的大成本。有没有办法做到这一点?

0 投票
3 回答
280 浏览

multithreading - openMP 是否适合并行化每秒运行多次的代码块?

假设您有一个典型的游戏循环,每秒运行大约 30 次。一个特定的函数需要大约 50% 的时间,并且看起来像是并行化的主要候选者 - 比如说它是一个大循环,或者有 4 个不同且独立的工作链正在进行。假设我们已经检查过函数本身可以很好并行化到 2 -4 个内核。

在这种情况下,OpenMP 是否可能会加快速度?我希望每帧天真地创建 1-3 个线程来拆分工作不会很好,但我真的不知道线程创建/销毁会带来什么开销,如果它是 10 毫秒或 100 毫秒。而且我不知道如果 OMP 在这种事情上很有效,或者只适合运行时间更长的代码。

想法?

0 投票
2 回答
813 浏览

parallel-processing - 有没有像clock() 这样更适合并行代码的东西?

所以我知道 clock() 测量时钟周期,因此对于测量时间不是很好,而且我知道有像 omp_get_wtime() 这样的函数来获取挂钟时间,但让我沮丧的是挂钟时间变化所以很多,并且想知道是否有某种方法可以测量不同的时钟周期(即使在其中执行了多个线程,也只有一个周期)。它必须是相对简单/原生的东西。谢谢

0 投票
1 回答
17791 浏览

c++ - 在 openmp 中迭代 std 容器

我正在尝试使用 openmp 通过 std::set 对循环进行多线程处理。当我编写以下代码时 -

我收到此错误:

是否有另一种正确的方法来使用 openmp 遍历 std 容器? 我知道我可以使用int i和迭代 from 0tos.size()和迭代器或operator[]在循环体中,但这看起来不那么干净。

0 投票
2 回答
1820 浏览

c - 使用openMp进行矩阵乘法时出现分段错误?

我的矩阵乘法代码是

我认为这只是因为矩阵对象,但为什么即使它作为参数传递它也会为空..

0 投票
2 回答
1613 浏览

openmp - OpenMP + SSE 没有加速

我的教授发现了这个使用 SSE 和 OpenMP 进行 3D 线性可分内核卷积的有趣实验,并将任务交给我对我们系统的统计数据进行基准测试。作者声称串行方法的速度提高了 18 倍!可能并非总是如此,但我们预计在双核 Intel 上运行它至少会加速 2-4 倍。

http://software.intel.com/en-us/articles/16bit-3d-convolution-sse4openmp-implementation-on-penryn-cpu/#comment-41994

唉,我们完全找不到加速。无论有没有 OpenMP,串行代码的性能总是更好。

我正在使用 Linux,并观察到某种趋势......当系统上没有其他进程正在运行时,一段时间后 loadavg 开始增加,并且 %CPU 利用率下降。

我意外遇到的另一个可能的误报......我启动了程序,然后立即暂停了它。然后我用 bg 在后台运行它,发现加速比超过 2。这种情况一直都在发生!

任何建议都会很棒。

谢谢,萨扬

0 投票
3 回答
2707 浏览

c++ - 从 MATLAB 运行多进程应用程序

我在 VC++ 中编写了一个多进程应用程序,并尝试使用system来自 MATLAB 的命令使用命令行参数执行它。它运行,但只在一个核心上运行——有什么建议吗?

更新:事实上,它甚至没有看到第二个核心。当我从 MATLAB 执行应用程序时,我使用了 OpenMP 并使用omp_get_max_threads()andomp_get_thread_num()进行检查,但如果我从命令窗口运行它(如预期的那样),它似乎是omp_get_max_threads()12

问题:我的任务管理器报告 CPU 使用率接近 100% --- 这是否意味着上述 API 出现故障,它仍在作为多进程应用程序运行?

确认:

我使用Process Explorer检查线程数是否有任何差异。

当我从命令窗口调用应用程序时,线程1会转到我的应用程序。cmd.exe2

当我从 MATLAB 调用它时,26线程是 for MATLAB.exe1forcmd.exe1for 我的应用程序。

有任何想法吗?