【问题标题】:Julia parallel speedup performance for large scale computations用于大规模计算的 Julia 并行加速性能
【发布时间】: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 谢谢!这是一篇有趣的文章。但是,正如您所说的那样,它没有回答问题。

标签: parallel-processing julia


【解决方案1】:

以下论文具有 pde 约束参数估计问题的缩放结果,但未达到您似乎感兴趣的内核数量附近:https://arxiv.org/abs/1606.07399。我还没有看到任何达到数千个核心的例子。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 2015-09-09
    • 1970-01-01
    相关资源
    最近更新 更多