【发布时间】:2016-11-02 20:36:47
【问题描述】:
一般背景:
我开发了一个用 FORTRAN90 编写的相当大的 Navier-Stokes(有限差分)求解器。它具有自适应网格(因此存在负载平衡问题),并且我尝试了各种技术(MPI、OpenMP 和 OpenMP-MPI hyrbid)来并行化它。但是,它的扩展性不够好,即根据阿姆达尔定律,它并行运行 96-97% 的计算。另外,网格的一般大小是几亿个点,以后需要增加。
查询:
现在,我正在考虑切换到 Julia,因为维护现有代码和向现有代码添加更多功能变得非常乏味。
问题是我无法找到有关 Julia 并行性能的好答案。我在互联网上搜索并观看了很多 youtube 视频。我注意到的是,大多数人都说 Julia 非常适合并行计算,有些人甚至提供了一个条形图,显示与串行代码相比,经过时间的减少。但是,有些答案/视频已经很老了,由于这种新语言的不断发展,这使得它们有点不可靠。
因此,我想知道该语言是否有能力扩展到几千个核心?
额外信息:
我仍在努力提高现有代码的加速性能,以实现数千个内核的几乎线性性能。求解器每个时间步需要交换重叠点 3-4 次。因此,它涉及巨大的通信开销。但是,代码的非自适应网格版本可以轻松扩展到 20k 个内核。
我还在某处读到 Julia 不使用 InfiniBand 标准进行并行数据通信。
【问题讨论】:
-
不是答案,但可能会有所帮助:use case for parallel julia。使用谷歌学者找到它。不幸的是,它是付费的
-
@FelipeLema 谢谢!这是一篇有趣的文章。但是,正如您所说的那样,它没有回答问题。