Amazon Elastic Compute Cloud
用户指南(适用于 Linux 实例)

Elastic Fabric Adapter

Elastic Fabric Adapter (EFA) 是一种网络设备,可以将其附加到 Amazon EC2 实例以加速高性能计算 (HPC) 和机器学习应用程序。通过使用 EFA,您可以实现本地 HPC 集群的应用程序性能,并具有 AWS 云提供的可扩展性、灵活性和弹性。

与以前在基于云的 HPC 系统中使用的 TCP 传输相比,EFA 提供更低且更一致的延迟和更高的吞吐量。它提高了实例间通信的性能,这对于扩展 HPC 和机器学习应用程序至关重要。它经过优化以在现有的 AWS 网络基础设施上使用,并且可以根据应用程序要求进行扩展。

EFA 与 Libfabric 1.8.1 集成在一起,并支持适用于 HPC 应用程序的 Open MPI 4.0.2 和 Intel MPI 2019 Update 6 以及适用于机器学习应用程序的 Nvidia Collective Communications Library (NCCL)。

注意

在 Windows 实例上不支持 EFAs 的操作系统绕过功能。如果将 EFA 附加到一个 Windows 实例,该实例将作为 Elastic Network Adapter,而没有添加的 EFA 功能。

EFA 基础知识

EFA 是具有添加的功能的 Elastic Network Adapter (ENA)。它提供了 ENA 的所有功能,并具有额外的操作系统绕过功能。操作系统绕过是一种访问模式,它允许 HPC 和机器学习应用程序直接与网络接口硬件通信以提供低延迟且可靠的传输功能。


				将传统的 HPC 软件堆栈与使用 EFA 的软件堆栈进行比较。

以前,HPC 应用程序使用消息传递接口 (MPI) 与系统的网络传输进行交互。在 AWS 云中,这意味着应用程序与 MPI 进行交互,然后 MPI 使用操作系统的 TCP/IP 堆栈和 ENA 设备驱动程序以启用实例之间的网络通信。

通过使用 EFA,HPC 应用程序使用 MPI 或 NCCL 与 Libfabric API 进行交互。Libfabric API 绕过操作系统内核,并直接与 EFA 设备通信以将数据包放在网络上。这减少了开销,并且可以更有效地运行 HPC 应用程序。

注意

libfabric 是 OpenFabrics 接口 (OFI) 框架的核心组件,它定义并导出 OFI 的 user-space API。有关更多信息,请参阅 libfabric OpenFabrics 网站。

EFAs 和 ENA 之间的差异

Elastic Network Adapter (ENA) 提供支持 VPC 网络所需的传统 IP 网络功能。EFAs 提供与 ENA 相同的所有传统 IP 网络功能,并且它们还支持操作系统绕过功能。操作系统绕过允许 HPC 和机器学习应用程序绕过操作系统内核,并直接与 EFA 设备进行通信。

支持的接口和库

EFA 支持以下接口和库:

  • Open MPI 4.0.2

  • Intel MPI 2019 Update 6

  • NVIDIA Collective Communications Library (NCCL) 2.4.2 及更高版本

支持的实例类型

以下实例类型支持 EFAs:c5n.18xlarge, c5n.metal, i3en.24xlarge, m5dn.24xlarge, m5n.24xlarge, r5dn.24xlarge, r5n.24xlarge, and p3dn.24xlarge

支持 AMI

以下 AMI 支持 EFAs:Amazon Linux, Amazon Linux 2, RHEL 7.6, RHEL 7.7, CentOS 7, Ubuntu 16.04, and Ubuntu 18.04。

EFA 限制

EFA 具有以下限制:

  • 您只能为每个实例附加一个 EFA。

  • EFA 操作系统绕过流量限制为单个子网。换句话说,无法将 EFA 流量从一个子网发送到另一个子网。可以将来自 EFA 的普通 IP 流量从一个子网发送到另一个子网。

  • 无法路由 EFA 操作系统绕过流量。仍然可以路由来自 EFA 的普通 IP 流量。

  • EFA 必须是一个安全组的成员,以允许进出安全组本身的所有入站和出站流量。