performance - 通过可简单并行的 DO 循环 (F90) 实现 MPI 加速

标签 performance fortran mpi fortran90 supercomputers

我有一个简单的 DO 循环(Fortran 90),其中各个迭代彼此独立,并且仅从硬盘驱动器输入/输出数据(进程之间不交换消息/MPI),我已经使用 MPI 进行并行化。 在顺序运行中,循环的一次迭代大约需要一天才能完成。如果我并行运行 29 个这样的迭代,大约需要 2.5 天。它位于 super 计算机的一个节点上(即没有节点间通信)。

我听人们说,对于可简单并行的程序(循环中的独立步骤),总执行时间应该大约接近于循环中仅运行一个步骤时的执行时间。

问题:您认为这种加速效果合适吗?

非常感谢。

最佳答案

由于您有独立的迭代,因此在 29 个核心上进行 29 次迭代的运行时间不应与在单个核心上进行单次迭代的运行时间相差甚远。除非满足以下一个或多个条件,否则您应该接近一天:

  • 您的计算节点上没有足够的内存来容纳所有进程及其数据;
  • 迭代之间的计算不平衡;
  • 存在大量磁盘输入/输出,导致磁盘访问出现竞争。
  • 可能还有其他一些我没有想到的。

关于performance - 通过可简单并行的 DO 循环 (F90) 实现 MPI 加速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31710951/

相关文章:

c - MPI_收集接收缓冲区中的垃圾 (MPI+C)

c++ - 将 MPI 数据类型返回给 MPI Gather

python - cProfile 在调用 numba jit 函数时会增加大量开销

c# - Fortran 函数说明

macos - 关闭 6 核 Intel Xeon 中的超线程

makefile - 发现 Makefile 或 cmake 的 MPI api 版本

Python 套接字 I/O 性能与其他语言的比较

java - 是否存在 Java 7's Hashmap implementation is preferred to Java8' s 实现的场景

mysql - 如何优化这个 MySQL 查询/结构?

arrays - 零大小数组的分配和在数组构造函数中的使用