亚马逊AWS官方博客
现已推出 – 适用于紧密耦合的 HPC 工作负载的 Elastic Fabric Adapter (EFA)
在 re:Invent 2018 上,我们发布了 Elastic Fabric Adapter (EFA) 并在当时以预览版形式推出。预览期间,AWS 客户在各种紧密耦合的 HPC 工作负载上对 EFA 进行了测试,为我们提供了有价值的反馈并帮助我们对最终产品进行了优化。
现已推出
今天我很高兴地宣布,EFA 现已准备好在多个 AWS 区域进行生产使用。它可以支持那些要求具有比传统 TCP 通信更低、更一致的网络延迟以及更高吞吐量的严苛型 HPC 工作负载。通过此次发布,您可以将 AWS 云的规模、灵活性和弹性应用于紧密耦合的 HPC 应用程序,而我也迫不及待地想要了解您使用它做了什么。例如,您可以扩展到数千个计算节点,而无需提前预留硬件或网络。
关于 EFA
Elastic Fabric Adapter 是一个具有更多功能的 AWS Elastic Network Adapter (ENA)(阅读我的文章 Elastic Network Adapter – Amazon EC2 的高性能网络接口,了解有关 ENA 的更多信息)。EFA 仍然可以处理 IP 流量,但也支持通常称为 OS 旁路的重要访问模型。使用此模型,应用程序(最常见的是通过一些用户空间中间件)可以访问网络接口,而无需让操作系统参与每条消息。这样做可以减少开销并使应用程序更有效地运行。其具体情况如此处所示(来源):
这块蛋糕的 MPI 实施和 libfabric 层起着至关重要的作用:
MPI – 作为“消息传递接口”的缩写,MPI 是一种历史悠久、旨在支持并行编程的通信协议。利用它所提供的功能,在一组紧密耦合的计算机上运行的进程可以采用与语言无关的方式进行通信。
libfabric – 此库适用于几种不同类型的网络结构提供程序(包括 EFA)和 MPI 等更高级别的库。EFA 支持标准 RDM(可靠数据报)和 DGRM(不可靠数据报)终端节点类型;要了解更多信息,请查看 libfabric 程序员手册。EFA 还支持我们称之为 Scalable Reliable Datagram 的新协议;该协议旨在在 AWS 网络中工作,并在我们的 Nitro 芯片中实施。
通过协同工作,这两个层(以及可以代替 MPI 插入的其他层)允许您将现有 HPC 代码带到 AWS 并在几乎不做任何更改的情况下运行它。
您今天可以在所有 AWS 区域的 c5n.18xlarge 和 p3dn.24xlarge 实例(只要这些实例可用)上使用 EFA。这些实例可以使用 EFA 在 VPC 子网内进行通信,而安全组必须具有允许安全组内的所有流量流动的入口和出口规则。每个实例都可以有一个 EFA,它可以在启动实例或停止实例时进行挂载。
您还需要以下软件组件:
EFA 内核模块 – EFA 驱动程序位于 Amazon GitHub 存储库以及 Amazon Linux 和 Amazon Linux 2 AMI 中。我们正在将其添加到其他 Linux 发行版的 AMI 中。
Libfabric 网络堆栈 – 您现在需要使用 AWS 自定义版本(在 Amazon Linux 和 Amazon Linux 2 AMI 中已存在)。我们正在将我们的更改纳入 libfabric 的下一版本 (1.8) 中。
MPI 或 NCCL 实施 – 您可以使用 Open MPI 3.1.3(或更高版本)或 NCCL(2.3.8 或更高版本)以及适用于 NCCL 的 OFI 驱动程序。我们还打算支持 Intel MPI 库。
您可以使用 CLI、API 或 EC2 控制台以及将在几周内推出的 CloudFormation 支持启动实例并挂载 EFA。如果您使用 CLI,则需要包含子网 ID 并要求提供 EFA,如下所示(确保包含相应的安全组):
实例启动之后,请运行 lspci | grep efa0
以验证 EFA 设备是否已挂载。您可以(但并非必须)在集群置放群组中启动实例,以便在每个轻脚都很重要的情况下从物理邻接中受益。在以这种方式使用时,EFA 可以提供 15.5 微秒的单向 MPI 延迟。
您也可以创建一个启动模板,然后使用它以按需或 Spot 形式启动 EC2 实例(直接或作为 EC2 Auto Scaling 组的一部分)、启动 Spot 队列,以及在 AWS Batch 上运行计算作业。
了解更多
要了解有关 EFA 的更多信息,并查看其他一些基准测试,请务必观看此 re:Invent 视频:(在具有 Elastic Fabric Adapter 的 EC2 上扩展 HPC 应用程序):
AWS 客户 CFD Direct 维护适用于计算流体动力学 (CFD) 的热门 OpenFOAM 平台,并且还生产 CFD Direct From the Cloud (CFDDC),后者是一款让您可以轻松地在 AWS 上运行 OpenFOAM 的 AWS Marketplace 产品。他们一直在对 EFA 进行测试和基准测试,并在最近一篇标题为采用 AWS EFA 的 OpenFOAM HPC 的博文中分享了他们的测量结果。在文章中,他们报告了一对模拟:
汽车周围的外部空气动力学 – 这个模拟超线性扩展到 200 多个内核,逐渐下降到 1000 个内核的线性扩展(每个内核大约 10 万个模拟单元)。
在具有水跃的堰上流动 – 根据“数据写入”设置,这个模拟(1000 个核心和 1 亿个单元)的比例在 67% 和 72.6% 之间。
阅读完整文章,了解更多信息并查看一些图表和可视化。
工作过程
我们计划以后为其他 EC2 实例类型添加 EFA 支持。一般情况下,我们计划为任何给定类型的两个最大尺寸为“n”的实例以及裸机实例提供 EFA 支持。