一般情况:
我开发了一个用FORTRAN90编写的相当大的Navier-Stokes(有限差分)求解器。它有自适应网格(因此负载平衡问题),我尝试了各种技术(MPI,OpenMP和OpenMP-MPI hyrbid)来并行化它。然而,它不能很好地扩展,即根据Amdahl定律,并行运行96-97%的计算。此外,网格的一般大小是几亿个点,这需要在将来稍后增加。
查询:
现在,我正在考虑转而使用Julia,因为维护现有代码并为其添加更多功能变得非常繁琐。
问题在于我无法找到关于Julia并行性能的好答案。我在互联网上搜索过,并观看了很多YouTube视频。我注意到的是,大多数人都认为Julia非常适合并行计算,有些人甚至提供了一个条形图,显示与串行代码相比经过的时间减少了。然而,一些答案/视频已经很老了,由于这种新语言不断增长,这使得它们变得有点不可靠。
因此,我想知道这种语言是否能够扩展甚至数千个核心?
额外信息:
我仍在努力提高现有代码的速度,以实现几千个内核的近乎线性的性能。解算器需要每个时间步长交换3-4次重叠点。因此,它涉及巨大的通信开销。但是,代码的非自适应网格版本可以轻松扩展到20k内核。
我还在某处读过Julia并不使用InfiniBand标准进行数据通信。
答案 0 :(得分:1)
以下论文针对pde约束参数估计问题进行了缩放结果,但未达到您认为感兴趣的核心数量附近的任何位置:https://arxiv.org/abs/1606.07399。我还没有看到任何数千个内核的例子。
Re infiniband:默认情况下,Julia使用共享内存进行节点内的通信,跨节点使用TCP / IP,因此默认情况下不支持infiniband。但是,该语言允许实现自定义传输,我想有人会在某些时候添加infiniband支持,但我找不到任何快速谷歌搜索的实现。