JACC v1.0: High-productivity Performance Portability in the LLVM-compiled Julia Language
本文介绍了 JACC v1.0,这是一个针对经 LLVM 编译的 Julia 语言的统一框架,通过单一代码库,实现了在多种 CPU 和 GPU 架构上具有高生产力、可移植性和高性能的并行编程。
原始论文采用 CC BY 4.0 许可(https://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
现代超级计算机正变得日益复杂,内部集成了不同类型的处理器,能够以惊人的速度解决问题。几十年来,科学家们一直依赖几种标准语言来指挥这些机器,但随着硬件的演进,为这些系统编写代码已成为一项困难且专业化的任务。研究人员经常发现自己被迫多次重写相同的科学程序——一次是为了某种类型的计算机芯片,另一次则是为了另一种——仅仅为了获得相同的结果。这造成了一个瓶颈:将代码翻译适配到不同机器上所花费的时间,侵蚀了本该用于实际科学发现的时间。该领域许多人的目标是找到一种方法,能够编写一套通用的指令,使其在任何机器上都能高效运行,无论是个人笔记本电脑还是大规模国家级超级计算机,而无需了解每个处理器的复杂设计细节。
来自橡树岭国家实验室及其他机构的一个研究小组推出了一款名为 JACC 的新工具,旨在为使用 Julia 编程语言的科学家解决这一问题。Julia 是一种旨在像数学公式一样易于阅读,同时又能像最高效的机器码一样快速运行的语言。新的 JACC 软件充当了这种语言的通用翻译器,允许科学家编写一个版本的代码,使其既能在计算机的中央处理器上运行,也能在用于重型计算的专用图形芯片上运行。研究人员发现,这种方法不仅让编码变得更容易,还使软件的运行速度几乎能达到专门为每种特定硬件编写的代码的速度。这意味着科学家可以在笔记本电脑上开发模拟程序,然后无需更改任何一行代码,即可在世界级超级计算机上运行完全相同的程序。
这一成就的核心在于 JACC 如何处理科学家的工作与计算机硬件之间的关系。在过去,将程序从一种类型的处理器转移到另一种类型通常需要彻底重写,这就像是将一本书从英语翻译成法语,再翻译成日语,每一次翻译都可能面临失去细微差别或速度下降的风险。JACC 消除了这些单独翻译的需求。它提供了一套简单的命令,告诉计算机执行某项任务(例如在大型数字网格上计算数值),而无需指定由哪个特定的处理器来完成这项工作。该软件会自动检测计算机拥有的是 NVIDIA、AMD、Intel 还是 Apple 的芯片,然后将工作引导至最合适的可用处理器。这种灵活性使得研究人员可以使用现代笔记本电脑中的强大图形卡进行交互式测试,然后无缝切换到超级计算机中庞大的处理器阵列进行最终的大规模运行。
研究人员通过在各种现实世界的科学问题上进行测试,证明了该系统的有效性。他们将该工具应用于流体力学模拟,这类模拟用于建模空气如何流过机翼或水如何在管道中流动。在这些测试中,该软件在不同类型的硬件上运行,其性能表现与专家为每种特定机器编写的专用代码相匹配或非常接近。例如,在模拟流体运动时,该系统在图形芯片上的运行速度达到了最佳可能性能的极高水平(仅差几个百分点),这证明了使用单一代码库的便利性并不会以牺牲速度为代价。团队还展示了该系统可以处理涉及多个处理器在单台机器上协同工作的复杂任务,而这种能力随着超级计算机将更多动力集成到更少的物理单元中,正变得愈发重要。
除了单纯的速度之外,该工具还为以前难以管理的更复杂的科学探索打开了大门。研究人员展示了 JACC 可以用于模拟量子磁性材料,这一领域需要追踪无数微小粒子的行为。通过使用这个新系统,原本在单个处理器上需要运行一小时的计算,在图形芯片上运行时仅需几秒钟,且使用的是完全相同的代码。这种加速对于量子化学和核物理等领域至关重要,在这些领域中,科学家需要运行数千种模拟的变化,以了解材料在不同条件下的行为。能够在不同硬件上运行这些模拟而无需重写代码,意味着科学家可以更多地关注物理学本身,而不是编程的机械细节。
这项工作的意义在于它对未来如何构建和维护科学软件的影响。研究人员指出,该系统旨在与科学界现有的工具协同工作,从而实现平稳过渡而非对当前项目进行彻底重构。这意味着实验室可以逐步采用新系统,在决定全面迁移之前,先在代码的特定部分进行测试。该软件还支持高级特性,如共享内存(允许不同部分的计算快速访问数据)和异步执行(允许计算机在当前任务完全结束前就开始处理新任务)。这些特性对于充分利用最新的超级计算机至关重要,因为这些计算机的设计初衷就是为了同时处理多项任务。
展望未来,研究人员将这项技术视为更先进应用的基础。他们正在探索如何将该系统用于量子计算机的发展,在这些机器中,物理规则与我们今天使用的经典计算机截然不同。编写具有可移植性和高效性的代码的能力,可以帮助科学家在这些未来的硬件尚未完全就绪之前,就设计并测试其算法。此外,该系统正与智能软件相结合,该软件可以自动决定哪个处理器应该处理特定的任务,从而进一步减轻人类程序员的负担。这种易用性与高性能的结合表明,在未来,科学家的想法与运行中的模拟之间的障碍将比今天低得多。
这篇论文所呈现的工作代表了在使高性能计算面向更广泛的科学家群体开放方面迈出的重要一步。通过提供一个连接高层编程与底层硬件细节的桥梁,研究人员为更高效、更具生产力的科学发现开辟了一条路径。结果表明,实现高生产力和高性能这两者是可以兼得的,而这两个目标在过去往往是相互矛盾的。随着世界向着更复杂的计算系统发展,像 JACC 这样的工具可能会成为解锁这些机器全部潜力的关键,让科学家能够解决那些此前难以攻克的难题。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。