使用OpenMP,程序速度不快

时间:2016-10-24 16:10:13

标签: fortran openmp

我的目标是并行化我的Fortran程序中的一个部分。该计划的流程是:

  1. 从文件中读取数据
  2. 进行一些计算
  3. 将结果写入2个不同的文件
  4. 在这里,我希望将写入过程并行化,因为我正在写入不同的文件。

    quote

    但是这个程序没有更快的速度。所以我觉得我错过了什么?

2 个答案:

答案 0 :(得分:0)

通常,人们可以在带宽限制和计算边界算法中划分科学计算代码。带宽绑定算法只是对它们所需的数据进行少量操作。就像具有执行O(n)触发器的O(n)数据一样。考虑到硬盘速度或网络连接速度,I / O也是带宽绑定操作,因此不能或只能很难并行化。 如果您真的希望从并行化中获得性能,请将代码分成带宽绑定和计算绑定算法,并使用您的时间来并行化后续的算法。

答案 1 :(得分:0)

如果你更精确地指明你的问题,那么有数百名专家渴望解决它。从评论到上面的答案,我看到你正在使用二进制输出,但仍然有更快的写入带宽,这意味着你的磁盘速度很好,你不受解析的限制,而是你的实际程序是没有以比这更快的速度推出数据。

因此,优化代码,使其赶上写入速度,而不是使用同样慢的代码来提高写入速度。

以最大带宽顺序写入2个文件比并行写入(以相同的最大速度)更快更容易。

如果我弄错了,而你确实受到IO的限制,也许这个其他问题/答案可以帮助你:How to avoid programs in status D