Parallel processing 大规模计算的Julia并行加速性能

Parallel processing 大规模计算的Julia并行加速性能,parallel-processing,julia,Parallel Processing,Julia,一般上下文: 我用FORTRAN90开发了一个相当大的Navier-Stokes(有限差分)解算器。它具有自适应网格(因此存在负载平衡问题),我尝试了各种技术(MPI、OpenMP和OpenMP MPI hyrbid)来并行化它。然而,它的伸缩性不够好,即根据阿姆达尔定律,它并行运行96-97%的计算。此外,网格的一般大小为两亿个点,这将需要在以后增加 查询: 现在,我正在考虑切换到Julia,因为维护和向现有代码添加更多功能变得非常乏味 问题是我找不到一个关于朱莉娅平行表演的好答案。我在互联网

一般上下文:

我用FORTRAN90开发了一个相当大的Navier-Stokes(有限差分)解算器。它具有自适应网格(因此存在负载平衡问题),我尝试了各种技术(MPI、OpenMP和OpenMP MPI hyrbid)来并行化它。然而,它的伸缩性不够好,即根据阿姆达尔定律,它并行运行96-97%的计算。此外,网格的一般大小为两亿个点,这将需要在以后增加

查询:

现在,我正在考虑切换到Julia,因为维护和向现有代码添加更多功能变得非常乏味

问题是我找不到一个关于朱莉娅平行表演的好答案。我在互联网上搜索过,也看过很多youtube视频。我注意到,大多数人都说Julia非常适合并行计算,有些人甚至提供了一个条形图,显示与串行代码相比所用时间的减少。然而,一些答案/视频非常陈旧,这使得它们有点不可靠,因为这种新语言的性质在不断增长

因此,我想知道该语言是否有能力扩展到几千个核心

额外信息:

我仍在努力提高现有代码的加速比,以在几千个内核中实现几乎线性的性能。解算器需要每个时间步交换重叠点3-4次。因此,它涉及到巨大的通信开销。但是,非自适应网格版本的代码很容易扩展到20k内核


我还读到Julia没有将InfiniBand标准用于并行数据通信。

以下文章给出了pde约束参数估计问题的缩放结果,但没有达到您似乎感兴趣的核心数:。我还没有看到任何达到数千个内核的示例


关于infiniband:默认情况下,Julia使用共享内存在节点内进行通信,并跨节点使用TCP/IP,因此默认情况下不支持infiniband。但是,该语言允许实现自定义传输,我想有人会在某个时候添加infiniband支持,但我无法通过快速的google搜索找到任何实现。

不是答案,但可能有帮助:a。用谷歌学者找到的。不幸的是,它是paywalled@FelipeLema谢谢那是一篇有趣的文章。然而,正如你正确地说的,它并没有回答这个问题。