【问题标题】:Timing Issue with 4 Threads / 4 Processes in Parallel Programming并行编程中 4 个线程/4 个进程的时序问题
【发布时间】:2014-11-17 15:16:26
【问题描述】:

我遇到了 OpenMP 和 MPI 执行时间问题。当我选择 4 线程 (OMP) 或 4 进程 (MPI) 时,我的执行时间比串行代码慢。

这两个脚本在其他机器上都有正确的计时,并且都使用 gettimeofday() 函数进行计时。下面是从 1-8 个线程/进程执行的两个脚本的屏幕截图:

RAM 未超过其限制,并且磁盘在执行期间不忙。该计算机托管 Intel i5 2500k(Stock 未超频)并在 Linux Mint 17 x64 上运行。

如前所述,这两个程序在其他机器上产生正确的计时,所以我认为这个问题与 cpu 亲和力和操作系统有关。

以前有人遇到过这个问题吗?

编辑 1:

在 MPI 执行中使用参数“bind-to-core”时,运行时间显着增加,但仍比串行慢得多:

【问题讨论】:

  • 该程序到底需要什么?数据处理?这真的取决于,因为如果你的程序真的饱和,更多的线程不会有利于性能,甚至会产生上下文切换的开销。似乎在 3 个线程/进程之后,您产生的开销大于获得的开销。你在 4 时有一个峰值,但没有看到一些代码,可能没有人可以帮助你,这真的很奇怪。
  • 开销没有问题,因为在其他机器上,由于 4 个线程/procs 后的开销,我得到了性能下降(在每个核心比率 1 个线程/Proc 时性能最佳。两个程序都采用开始时的图像,应用模糊算法,然后在结束时输出新图像。计时仅在算法上完成,因此由于 I/O 而没有计时开销。我会粘贴代码,但我不确定哪些部分由于每个脚本的长度而添加
  • 工作是如何划分的?如果将工作分为四种方式,可能会产生一些奇怪的副作用。我无法想象这真的是硬件问题。也许尝试从 U 盘运行不同的 linux 版本,然后在同一台机器上重试
  • 在 MPI 脚本中,proc 被动态放入购物车网格中,因此没有问题。在 OMP 脚本中。并行性是通过#pragma omp for 循环实现的,因此工作将被平均分配(我尝试了许多块大小也无济于事)。我发现的一些有趣的事情是 - 如果我在 mpi 脚本上提供参数 -bind-to-cpu,4 procs 的时间仍然很慢但明显更快(~5 秒)

标签: c mpi openmp intel linux-mint


【解决方案1】:

问题是硬件有问题。

我用相同系列/芯片组之一替换了主板(因此不需要安装),现在两个脚本上的时间都返回正确。

【讨论】:

  • 我还是不确定,主板有用于 CPU 和芯片组调整的高级设置。我尝试了几种配置(包括默认设置)但没有结果。我最好的猜测是该芯片组与 Linux Mint 存在问题,因为制造商已经为该板发布了优化的芯片组驱动程序,但仅适用于 Windows 操作系统。
猜你喜欢
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
  • 2022-11-03
  • 2016-07-24
相关资源
最近更新 更多