【发布时间】:2013-09-11 04:05:30
【问题描述】:
我正在使用 Fortran 代码在超级计算机上运行大规模模拟。我能够串行运行代码,但我想改进周转时间。我正在考虑使其并行化,我发现我可以使用自动并行化或 MPI,我的问题是:哪个更有可能改善周转时间?
我能够使用带有编译器标志 -parallel -par-report 的 Intel Fortran 编译器来查看哪些 DO 循环并行运行,因此,如果我在 4 个处理器上运行编译后的代码,那是否真的可以工作,或者我必须做些什么特别?
另外,你知道有什么对我有用的资源吗,我也学习 MPI。我希望能够使用更多处理器来增加模拟时间,这是我的最终目标。
【问题讨论】:
-
如果您能够使用自动并行器,您应该能够测量运行时间,从而提高速度。你得到了什么加速?显然它不会比你有 N 个处理器的 Nx 更快,除非你打开的是自动矢量化而不是自动并行化。
-
我可以使用自动并行器,但它仍然位于 Q 中。我能够在具有 pgf90 编译器的不同系统上使用自动矢量化,并且似乎我应该能够得到结果在 51 小时内与之前的 96 小时相比。谢谢。
-
“大规模模拟”是什么意思?在我的理解中,这意味着 >1000 个线程,只有 MPI 才能实现。
-
可能是“大规模模拟”是错误的术语,我的意思是模拟是非常计算机密集型的,它可以在单个节点上运行,但需要 96 小时才能获得 0.25 秒实际模拟运行,我需要获得一个通常在 1 秒后发生的稳态值,大约需要 20 天。我正在剪切流中进行白细胞变形,它具有许多参数,例如表面和细胞之间的结合,并且有 10,000 个元素来模拟细胞(它是 CFD 和 FEA 的组合)。做 FFT 和蒙特卡罗方法需要很长时间。
标签: parallel-processing fortran mpi