在百亿亿次超级计算的加速时代,MPI被推到其逻辑极限。在过去的二十年中,无论它变得多么牢固,都可能需要重新考虑针对越来越大的异构系统的编程。
每个领域都有其新手必须承担的负担,对于HPC程序员而言,MPI就是其中之一。问题不仅仅在于使用MPI原语直接编写通信代码具有挑战性-这是众所周知的,尤其是对于具有棘手通信模式的代码。下一个十年的问题是,即使有最大的努力,加速也将成为大多数大型计算机上的规范,而纯MPI总体上不会通过CPU-GPU程序实现。答案是使用高级库。
一支扎根于阿贡国家实验室的团队,在其他大学的支持下,他们正在努力再次将MPI设置为亿万级课程,并在此过程中以较低的开销,可伸缩性以及使用某些自定义异步和自定义功能的能力证明了一些显着的成功其它功能。经过验证的结果,计划是继续针对具有GPU作为验证该概念的选择加速器的百亿分之一系统进行调整。
这项名为PetscSF的工作正在逐步取代Argonne国家实验室的便携式可扩展科学计算便携式工具包(PETSc)中的直接MPI调用。这是基于PDE的应用程序的数据结构和例程的源泉,它支持MPI,GPU(通过CUDA或OpenCL),以及伴随Tao优化库的混合MPI-GPU并行性。这是针对应用程序和特定于中心的,但是替换在GPU超级计算机上进行的MPI调用的概念可能远远超出了Argonne和这项工作的测试/开发站点,即Oak Ridge国家实验室的Summit超级计算机。
PetscSF设置了一个基本API,用于使用星型森林图形表示法以及基于目标体系结构的操纵空间来管理HPC应用程序的共享通信模式(可以在全CPU机器上使用,也可以在GPU加速下使用)。有关如何处理网络和节点内通信的详细信息,其中包括用例,突出了其在并行矩阵操作和非结构化网格上的功能,这两者在大规模HPC应用程序中都至关重要。 PetscSF可以处理不同的实现,包括那些使用MPI单向和双向通信的实现。
PetscSF的创建者小心地注意到,这并不是“替代MPI”,而是旨在克服在大型系统上直接使用MPI和GPU来解决一些费时的复杂性挑战。
他们指出,将CUDA用于GPU会给MPI带来“新挑战。当MPI在主机上运行时,用户希望在设备上进行数据通信,但是MPI规范没有设备数据或主机数据的概念。”他们补充说:“使用非CUDA感知的MPI实现,程序员必须在设备和主机之间来回复制数据,以便在主机上进行计算。”尽管支持CUDA的MPI可以通过允许程序员使用相同的API将设备缓冲区传递给MPI来解决此问题,但是仍然存在“语义不匹配”,因为CUDA内核是在CUDA流上异步执行的,而MPI不知道这是什么流,并且可以不能将其操作与具有适当数据依赖关系的流对齐。
这是PetscSF基于Nvidia在其GPU(NVSHMEM)上实施OpenSHMEM规范而通过Nvidia特定工作解决的几个问题之一。很多性能和可伸缩性都基于在PetscSF工作的核心上使用NVSHMEM。
如今,英伟达GPU并不是亿亿级领域中唯一的GPU。开发PetscSF的研究小组仅使用Nvidia的设备。我们很想知道AMD GPU会带来什么变化(如果有差异的话),AMD GPU正在将其运用于数个亿亿级和万亿级的系统上。
团队将研究相关的工作,以填补原始的MPI差距。他们说,向用户提供“共享内存错觉”的PGAS语言(UPC,Chapel,OpenSHMEM)导致“容易出错”的代码,因为共享内存编程很容易导致数据争用情况和死锁,难以检测,调试和锁定。修复”,并且不费吹灰之力就导致应用程序无法获得最佳性能-这不仅比使用MPI编程容易。其他一些特定的工作,包括High Performance Fortran,虽然允许用户为其数组编写数据分发指令,但“仍然失败,因为即使在今天,编译器也不足以使用间接索引数组来做到这一点。”
在这里可以找到更多详细信息,包括Summit系统的实验结果,该系统通常用于证明百亿亿次软件和应用程序中的新概念,甚至在未来几年甚至大型系统问世之前。这些结果包括整体PetscSF“乒乓”测试,以将其性能与原始MPI以及GPU上的异步共轭梯度进行比较。
直接从我们到您的收件箱,包括本周的重点摘要,分析和故事,之间没有任何内容。