并行处理 – 用于大规模计算的Julia并行加速性能

一般情况:

我开发了一个用FORTRAN90编写的相当大的Navier-Stokes(有限差分)求解器.它有自适应网格(因此负载平衡问题),我尝试了各种技术(MPI,OpenMP和OpenMP-MPI hyrbid)来并行化它.然而,它不能很好地扩展,即根据Amdahl定律它并行运行96-97%的计算.此外,网格的一般大小是几亿个点,这将需要在将来稍后增加.

查询:

现在,我正在考虑转而使用Julia,因为维护现有代码并为其添加更多功能变得非常繁琐.

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

因此,我想知道这种语言是否有能力扩展甚至几千个核心?

额外的信息:

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

我还读过某些地方,Julia没有并行使用InfiniBand标准进行数据通信.

最佳答案 下面的文章给出了pde约束参数估计问题的缩放结果,但是没有达到你似乎感兴趣的核心数量的任何地方:
https://arxiv.org/abs/1606.07399.我还没有看到任何高达数千个内核的例子.

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

点赞