

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Elastic Fabric Adapter für AI/ML und HPC-Workloads auf Amazon EC2
<a name="efa"></a>

Ein Elastic Fabric Adapter (EFA) ist ein Netzwerkgerät, das Sie an Ihre Amazon-EC2-Instance anfügen können, um Künstliche Intelligenz (KI), Machine Learning und High Performance Computing (HPC)-Anwendungen zu beschleunigen. Mit EFA können Sie die Anwendungsleistung eines On-Premises- KI/ML- oder HPC-Clusters erreichen – mit der Skalierbarkeit, Flexibilität und Elastizität der AWS Cloud.

EFA bietet eine geringere und konsistentere Latenz und höheren Durchsatz als der TCP-Transport, der normalerweise in Cloud-basierten HPC-Systemen verwendet wird. Es verbessert die Leistung der Kommunikation zwischen Instanzen, was für Skalierungs- AI/ML und HPC-Anwendungen entscheidend ist. Es ist für die Verwendung in der vorhandenen AWS Netzwerkinfrastruktur optimiert und kann je nach Anwendungsanforderungen skaliert werden.

EFA ist in Libfabric integriert und unterstützt Nvidia Collective Communications Library (NCCL) und NVIDIA Inference Xfer Library (NIXL) für KI- und ML-Anwendungen sowie Open MPI 4.1 und höher sowie Intel MPI 2019 Update 5 und höher für HPC-Anwendungen. NCCL und MPI lassen sich in Libfabric 1.7.0 und höher integrieren. NIXL lässt sich in Libfabric 1.21.0 und höher integrieren.

EFA unterstützt RDMA (Remote Direct Memory Access)-Schreibvorgänge auf den meisten unterstützten Instance-Typen mit Nitro Version 4 und höher. RDMA-Lesevorgänge werden auf allen Instances mit Nitro Version 4 und höher unterstützt. Weitere Informationen finden Sie unter [Unterstützte Instance-Typen](#efa-instance-types).

**Topics**
+ [

## EFA-Grundlagen
](#efa-basics)
+ [

## Unterstützte Schnittstellen und Bibliotheken
](#efa-mpi)
+ [

## Unterstützte Instance-Typen
](#efa-instance-types)
+ [

## Unterstützte Betriebssysteme
](#efa-os)
+ [

## EFA-Einschränkungen
](#efa-limits)
+ [

## EFA-Preisgestaltung
](#efa-pricing)
+ [Erste Schritte mit EFA und MPI](efa-start.md)
+ [Erste Schritte mit EFA und NCCL](efa-start-nccl.md)
+ [Beginnen Sie mit EFA und NIXL](efa-start-nixl.md)
+ [Maximierung der Netzwerkbandbreite](efa-acc-inst-types.md)
+ [Erstellen Sie einen EFA und hängen Sie ihn an](create-efa.md)
+ [Trennen und Löschen eines EFA](detach-efa.md)
+ [Überwachen von EFA](efa-working-monitor.md)
+ [Prüfen des EFA-Installationsprogramms](efa-verify.md)
+ [Versionshinweise](efa-changelog.md)

## EFA-Grundlagen
<a name="efa-basics"></a>

Ein EFA-Gerät kann auf zwei Arten an eine EC2-Instance angefügt werden:

1. Verwendung einer herkömmlichen EFA-Schnittstelle, auch EFA genannt, mit ENA, die sowohl ein EFA-Gerät als auch ein ENA-Gerät erstellt.

1. Verwendung einer reinen EFA-Schnittstelle, bei der nur das EFA-Gerät erstellt wird.

Das EFA-Gerät bietet Funktionen wie eine integrierte Betriebssystemumgehung und die Überlastungskontrolle über das SRD-Protokoll (Scalable Reliable Datagram). Die EFA-Gerätefunktionen ermöglichen zuverlässige Transportfunktionen mit niedriger Latenz, sodass die EFA-Schnittstelle eine bessere Anwendungsleistung für HPC- und ML-Anwendungen auf Amazon EC2 bietet. Das ENA-Gerät bietet dagegen herkömmliche IP-Netzwerke.

![\[Im Gegensatz zu einem herkömmlichen HPC-Software-Stack, der EFA verwendet.\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/images/efa_stack.png)


Traditionell verwenden AI/ML Anwendungen NCCL und NIXL (für disaggregierte Inferenz). HPC-Anwendungen verwenden das Message Passing Interface (MPI) als Schnittstelle zum Netzwerktransport des Systems. In der AWS Cloud bedeutet dies, dass Anwendungen eine Schnittstelle zu NCCL, NIXL oder MPI haben, die dann den TCP/IP Stack des Betriebssystems und den ENA-Gerätetreiber verwenden, um die Netzwerkkommunikation zwischen Instanzen zu ermöglichen.

Mit einer herkömmlichen EFA- (EFA mit ENA) oder einer reinen EFA-Schnittstelle verwenden AI/ML Anwendungen NCCL und NIXL (für disaggregierte Inferenz). HPC-Anwendungen verwenden MPI, um direkt mit der Libfabric-API zu kommunizieren. Die Libfabric-API umgeht den Betriebssystem-Kernel und kommuniziert direkt mit dem EFA-Gerät, um Pakete auf dem Netzwerk zu platzieren. Dies reduziert den Overhead AI/ML und ermöglicht eine effizientere Ausführung von HPC-Anwendungen.

**Anmerkung**  
Libfabric ist eine Kernkomponente des OpenFabrics Interfaces (OFI) -Frameworks, das die Userspace-API von OFI definiert und exportiert. [Weitere Informationen finden Sie auf der Libfabric-Website. OpenFabrics](https://ofiwg.github.io/libfabric/)

### Unterschiede zwischen ENA-, EFA- und reinen EFA-Netzwerkschnittstellen
<a name="efa-differences"></a>

Amazon EC2 bietet zwei Arten von Netzwerkschnittstellen:
+ **ENA**-Schnittstellen bieten alle herkömmlichen IP-Netzwerk- und Routing-Funktionen, die zur Unterstützung von IP-Netzwerken für eine VPC erforderlich sind. Weitere Informationen finden Sie unter [Aktivierung eine verbesserten Vernetzung mit ENA in Ihren EC2-Instances](enhanced-networking-ena.md).
+ **EFA**-Schnittstellen (EFA mit ENA) bieten sowohl das ENA-Gerät für IP-Netzwerke als auch das EFA-Gerät für die Kommunikation mit niedriger Latenz und hohem Durchsatz.
+ **Nur-EFA**-Schnittstellen unterstützen nur die Funktionen des EFA-Geräts, ohne das ENA-Gerät für herkömmliche IP-Netzwerke.

Die folgende Tabelle enthält einen Vergleich von ENA-, EFA- und Nur-EFA-Netzwerkschnittstellen.


|  | ENA | EFA (EFA mit ENA) | Nur-EFA | 
| --- | --- | --- | --- | 
| Unterstützt IP-Netzwerkfunktionalität | Ja | Ja | Nein | 
| Können Adressen zugewiesen IPv4 werden IPv6  | Ja | Ja | Nein | 
| Kann als primäre Netzwerkschnittstelle für die Instance verwendet werden | Ja | Ja | Nein | 
| Wird auf das ENI-Anhangslimit der Instance angerechnet | Ja | Ja | Ja | 
| Unterstützung für Instance-Typen | Unterstützt auf allen Nitro-basierten Instance-Typen | [Unterstützte Instance-Typen](#efa-instance-types) | [Unterstützte Instance-Typen](#efa-instance-types) | 
| Benennung von Parametern in EC2 APIs | interface | efa | efa-only | 
| Benennung von Feldern in der EC2-Konsole | Keine Auswahl | EFA mit ENA | Nur-EFA | 

## Unterstützte Schnittstellen und Bibliotheken
<a name="efa-mpi"></a>

EFAs unterstützt die folgenden Schnittstellen und Bibliotheken:
+ Öffnen Sie MPI 4.1 und höher
+ Intel MPI 2019 Update 5 und höher
+ NVIDIA Collective Communications Library (NCCL) 2.4.2 und neuer
+ NVIDIA Inference Xfer Library (NIXL) 1.0.0 und höher
+ AWS Neuron SDK Version 2.3 und höher

## Unterstützte Instance-Typen
<a name="efa-instance-types"></a>

Alle der folgenden Instance-Typen unterstützen EFA. Darüber hinaus geben die Tabellen die RDMA-Lese- und RDMA-Schreibunterstützung für die Instance-Typen an.

------
#### [ Nitro v6 ]


| Instance-Typ | RDMA-Leseunterstützung | RDMA-Schreibunterstützung. | 
| --- |--- |--- |
| Allgemeine Zwecke | 
| --- |
| m8a.48xlarge | Ja | Ja | 
| M8 A, Metall, 48 XL | Ja | Ja | 
| m8azn.24x groß | Ja | Ja | 
| m8azn.metall-24xl | Ja | Ja | 
| m8gb. 16x groß | Ja | Ja | 
| 8 GB. 24 x groß | Ja | Ja | 
| 8 GB. 48 x groß | Ja | Ja | 
| m 8 GB, Metall, 24 XL | Ja | Ja | 
| m8 gb.metal-48xl | Ja | Ja | 
| m8gn.16x groß | Ja | Ja | 
| M8 Gn. 24 x groß | Ja | Ja | 
| M8 Gn. 48 x groß | Ja | Ja | 
| M8 Gn. Metall, 24 XL | Ja | Ja | 
| M8 Gn. Metall-48 XL | Ja | Ja | 
| m8i.48x groß | Ja | Ja | 
| m8i.96xlarge | Ja | Ja | 
| m8i.metal-48xl | Ja | Ja | 
| m8i.metal-96xl | Ja | Ja | 
| m8id. 48x groß | Ja | Ja | 
| m8id. 96x groß | Ja | Ja | 
| m8 id. Metall, 48 XL | Ja | Ja | 
| m8id.metall-96xl | Ja | Ja | 
| Für Datenverarbeitung optimiert | 
| --- |
| c8a.48x groß | Ja | Ja | 
| C8A.Metall-48 XL | Ja | Ja | 
| c8gb. 16x groß | Ja | Ja | 
| c 8 gb. 24 x groß | Ja | Ja | 
| c 8 gb. 48 x groß | Ja | Ja | 
| C 8 GB, Metall, 24 XL | Ja | Ja | 
| C8 GB.Metall-48 XL | Ja | Ja | 
| c8gn.16x groß | Ja | Ja | 
| c8gn.24xlarge | Ja | Ja | 
| c8gn.48xlarge | Ja | Ja | 
| c8gn.metal-24xl | Ja | Ja | 
| c8gn.metal-48xl | Ja | Ja | 
| c8i.48x groß | Ja | Ja | 
| c8i.96xlarge | Ja | Ja | 
| c8i.metall-48xl | Ja | Ja | 
| c8i.metal-96xl | Ja | Ja | 
| c8id.48x groß | Ja | Ja | 
| c8id.96x groß | Ja | Ja | 
| C8 ID, Metall, 48 XL | Ja | Ja | 
| c8id.metall-96xl | Ja | Ja | 
| RAM-optimiert | 
| --- |
| r8a.48x groß | Ja | Ja | 
| r8a.metal-48xl | Ja | Ja | 
| r8gb.16xlarge | Ja | Ja | 
| r8gb.24xlarge | Ja | Ja | 
| r8gb. 48x groß | Ja | Ja | 
| r8gb.metal-24xl | Ja | Ja | 
| R 8 GB, Metall, 48 XL | Ja | Ja | 
| r8gn.16xlarge | Ja | Ja | 
| r8gn.24xlarge | Ja | Ja | 
| r8gn.48xlarge | Ja | Ja | 
| r8gn.metal-24xl | Ja | Ja | 
| r8gn.metal-48xl | Ja | Ja | 
| r8i.48x groß | Ja | Ja | 
| r8i.96xlarge | Ja | Ja | 
| r8i.metall-48xl | Ja | Ja | 
| r8i.metal-96xl | Ja | Ja | 
| r8id.48x groß | Ja | Ja | 
| r8id.96x groß | Ja | Ja | 
| r8 id. Metall, 48 XL | Ja | Ja | 
| r8id.metal-96xl | Ja | Ja | 
| x8aedz.24x groß | Ja | Ja | 
| x8aedz.metall-24xl | Ja | Ja | 
| x8i.48x groß | Ja | Ja | 
| x8i.64x groß | Ja | Ja | 
| x8i.96x groß | Ja | Ja | 
| x8i.Metall-48xl | Ja | Ja | 
| x8i.Metall-96xl | Ja | Ja | 
| Speicheroptimiert | 
| --- |
| i8ge.48xlarge | Ja | Nein | 
| i8ge.metal-48xl | Ja | Nein | 
| Beschleunigte Datenverarbeitung | 
| --- |
| g7e.8 x groß | Ja | Ja | 
| g7e.12x groß | Ja | Ja | 
| g7e.24x groß | Ja | Ja | 
| g7e.48x groß | Ja | Ja | 
| p6-b200.48xlarge | Ja | Ja | 
| p6-b 300.48x groß | Ja | Ja | 
| High Performance Computing (HPC) | 
| --- |
| hpc8a.96x groß | Ja | Ja | 

------
#### [ Nitro v5 ]


| Instance-Typ | RDMA-Leseunterstützung | RDMA-Schreibunterstützung. | 
| --- |--- |--- |
| Allgemeine Zwecke | 
| --- |
| m8g.24xlarge | Ja | Nein | 
| m8g.48xlarge | Ja | Nein | 
| m8g.metal-24xl | Ja | Nein | 
| m8g.metal-48xl | Ja | Nein | 
| m8gd.24xlarge | Nein | Nein | 
| m8gd.48xlarge | Nein | Nein | 
| m8gd.metal-24xl | Nein | Nein | 
| m8gd.metal-48xl | Nein | Nein | 
| Für Datenverarbeitung optimiert | 
| --- |
| c7gn.16xlarge | Ja | Nein | 
| c7gn.metal | Ja | Nein | 
| c8g.24xlarge | Ja | Nein | 
| c8g.48xlarge | Ja | Nein | 
| c8g.metal-24xl | Ja | Nein | 
| c8g.metal-48xl | Ja | Nein | 
| c8gd.24xlarge | Nein | Nein | 
| c8gd.48xlarge | Nein | Nein | 
| c8gd.metal-24xl | Nein | Nein | 
| c8gd.metal-48xl | Nein | Nein | 
| RAM-optimiert | 
| --- |
| r8g.24xlarge | Nein | Nein | 
| r8g.48xlarge | Nein | Nein | 
| r8g.metal-24xl | Nein | Nein | 
| r8g.metal-48xl | Nein | Nein | 
| r8gd.24xlarge | Nein | Nein | 
| r8gd.48xlarge | Nein | Nein | 
| r8gd.metal-24xl | Nein | Nein | 
| r8gd.metal-48xl | Nein | Nein | 
| x8g.24xlarge | Nein | Nein | 
| x8g.48xlarge | Nein | Nein | 
| x8g.metal-24xl | Nein | Nein | 
| x8g.metal-48xl | Nein | Nein | 
| Speicheroptimiert | 
| --- |
| i7ie.48xlarge | Ja | Nein | 
| i7ie.metal-48xl | Ja | Nein | 
| i8g.48xlarge | Nein | Nein | 
| i8g.metall-48xl | Nein | Nein | 
| Beschleunigte Datenverarbeitung | 
| --- |
| p5en.48xlarge | Ja | Ja | 
| p6e-gb200.36xlarge | Ja | Ja | 
| Trn 2.3 x groß | Ja | Ja | 
| trn2.48xlarge | Ja | Ja | 
| trn2u.48xlarge | Ja | Ja | 
| High Performance Computing (HPC) | 
| --- |
| hpc7g.4xlarge | Ja | Nein | 
| hpc7g.8xlarge | Ja | Nein | 
| hpc7g.16xlarge | Ja | Nein | 

------
#### [ Nitro v4 ]


| Instance-Typ | RDMA-Leseunterstützung | RDMA-Schreibunterstützung. | 
| --- |--- |--- |
| Allgemeine Zwecke | 
| --- |
| m6a.48xlarge | Ja | Ja | 
| m6a.metal | Ja | Ja | 
| m6i.32xlarge | Ja | Ja | 
| m6i.metal | Ja | Ja | 
| m6id.32xlarge | Ja | Ja | 
| m6id.metal | Ja | Ja | 
| m6idn.32xlarge | Ja | Ja | 
| m6idn.metal | Ja | Ja | 
| m6in.32xlarge | Ja | Ja | 
| m6in.metal | Ja | Ja | 
| m7a.48xlarge | Ja | Nein | 
| m7a.metal-48xl | Ja | Nein | 
| m7g.16xlarge | Ja | Nein | 
| m7g.metal | Ja | Nein | 
| m7gd.16xlarge | Ja | Nein | 
| m7gd.metal | Ja | Nein | 
| m7i.48xlarge | Ja | Nein | 
| m7i.metal-48xl | Ja | Nein | 
| Für Datenverarbeitung optimiert | 
| --- |
| c6a.48xlarge | Ja | Ja | 
| c6a.metal | Ja | Ja | 
| c6gn.16xlarge | Ja | Ja | 
| c6i.32xlarge | Ja | Ja | 
| c6i.metal | Ja | Ja | 
| c6id.32xlarge | Ja | Ja | 
| c6id.metal | Ja | Ja | 
| c6in.32xlarge | Ja | Ja | 
| c6in.metal | Ja | Ja | 
| c7a.48xlarge | Ja | Nein | 
| c7a.metal-48xl | Ja | Nein | 
| c7g.16xlarge | Ja | Ja | 
| c7g.metal | Ja | Ja | 
| c7gd.16xlarge | Ja | Nein | 
| c7gd.metal | Ja | Nein | 
| c7i.48xlarge | Ja | Nein | 
| c7i.metal-48xl | Ja | Nein | 
| RAM-optimiert | 
| --- |
| r6a.48xlarge | Ja | Ja | 
| r6a.metal | Ja | Ja | 
| r6i.32xlarge | Ja | Ja | 
| r6i.metal | Ja | Ja | 
| r6id.32xlarge | Ja | Ja | 
| r6id.metal | Ja | Ja | 
| r6idn.32xlarge | Ja | Ja | 
| r6idn.metal | Ja | Ja | 
| r6in.32xlarge | Ja | Ja | 
| r6in.metal | Ja | Ja | 
| r7a.48xlarge | Nein | Nein | 
| r7a.metal-48xl | Nein | Nein | 
| r7g.16xlarge | Nein | Nein | 
| r7g.metal | Nein | Nein | 
| r7gd.16xlarge | Nein | Nein | 
| r7gd.metal | Nein | Nein | 
| r7i.48xlarge | Nein | Nein | 
| r7i.metal-48xl | Nein | Nein | 
| r7iz.32xlarge | Nein | Nein | 
| r7iz.metal-32xl | Nein | Nein | 
| u7i-6tb.112xlarge | Ja | Ja | 
| u7i-8tb.112xlarge | Ja | Ja | 
| u7i-12tb.224xlarge | Ja | Ja | 
| u7in-16tb.224xlarge | Ja | Ja | 
| u7in-24tb.224xlarge | Ja | Ja | 
| u7in-32tb.224xlarge | Ja | Ja | 
| u7inh-32tb.480xlarge | Ja | Ja | 
| x2idn.32xlarge | Ja | Ja | 
| x2idn.metal | Ja | Ja | 
| x2iedn.32xlarge | Ja | Ja | 
| x2iedn.metal | Ja | Ja | 
| Speicheroptimiert | 
| --- |
| i4g.16xlarge | Ja | Ja | 
| i4i.32xlarge | Ja | Ja | 
| i4i.metal | Ja | Ja | 
| i7i.24x groß | Ja | Nein | 
| i7i.48xlarge | Ja | Nein | 
| i7i.metal-48xl | Ja | Nein | 
| im4gn.16xlarge | Ja | Ja | 
| Beschleunigte Datenverarbeitung | 
| --- |
| f2.48xlarge | Ja | Ja | 
| g6.8xlarge | Ja | Ja | 
| g6.12xlarge | Ja | Ja | 
| g6.16xlarge | Ja | Ja | 
| g6.24xlarge | Ja | Ja | 
| g6.48xlarge | Ja | Ja | 
| g6e.8xlarge | Ja | Ja | 
| g6e.12xlarge | Ja | Ja | 
| g6e.16xlarge | Ja | Ja | 
| g6e.24xlarge | Ja | Ja | 
| g6e.48xlarge | Ja | Ja | 
| gr6.8xlarge | Ja | Ja | 
| p5.4xlarge | Ja | Ja | 
| p5.48xlarge | Ja | Ja | 
| p5e.48xlarge | Ja | Ja | 
| trn1.32xlarge | Ja | Ja | 
| trn1n.32xlarge | Ja | Ja | 
| High Performance Computing (HPC) | 
| --- |
| hpc6a.48xlarge | Ja | Ja | 
| hpc6id.32xlarge | Ja | Ja | 
| hpc7a.12xlarge | Ja | Nein | 
| hpc7a.24xlarge | Ja | Nein | 
| hpc7a.48xlarge | Ja | Nein | 
| hpc7a.96xlarge | Ja | Nein | 

------
#### [ Nitro v3 ]


| Instance-Typ | RDMA-Leseunterstützung | RDMA-Schreibunterstützung. | 
| --- |--- |--- |
| Allgemeine Zwecke | 
| --- |
| m5dn.24xlarge | Nein | Nein | 
| m5dn.metal | Nein | Nein | 
| m5n.24xlarge | Nein | Nein | 
| m5n.metal | Nein | Nein | 
| m5zn.12xlarge | Nein | Nein | 
| m5zn.metal | Nein | Nein | 
| Für Datenverarbeitung optimiert | 
| --- |
| c5n.9xlarge | Nein | Nein | 
| c5n.18xlarge | Nein | Nein | 
| c5n.metal | Nein | Nein | 
| RAM-optimiert | 
| --- |
| r5dn.24xlarge | Nein | Nein | 
| r5dn.metal | Nein | Nein | 
| r5n.24xlarge | Nein | Nein | 
| r5n.metal | Nein | Nein | 
| x2iezn.12xlarge | Nein | Nein | 
| x2iezn.metal | Nein | Nein | 
| Speicheroptimiert | 
| --- |
| i3en.12xlarge | Nein | Nein | 
| i3en.24xlarge | Nein | Nein | 
| i3en.metal | Nein | Nein | 
| Beschleunigte Datenverarbeitung | 
| --- |
| dl1.24xlarge | Ja | Nein | 
| dl2q.24xlarge | Nein | Nein | 
| g4dn.8xgroß | Nein | Nein | 
| g4dn.12xgroß | Nein | Nein | 
| g4dn.16xgroß | Nein | Nein | 
| g4dn.metal | Nein | Nein | 
| g5.8xlarge | Nein | Nein | 
| g5.12xlarge | Nein | Nein | 
| g5.16xlarge | Nein | Nein | 
| g5.24xlarge | Nein | Nein | 
| g5.48xlarge | Nein | Nein | 
| inf1.24xlarge | Nein | Nein | 
| p3dn.24xgroß | Nein | Nein | 
| p4d.24xgroß | Ja | Nein | 
| p4de.24xlarge | Ja | Nein | 
| vt1.24xlarge | Nein | Nein | 
| Vorherige Generation | 
| --- |
| p3dn.24xgroß | Nein | Nein | 

------

**Um die verfügbaren Instance-Typen zu sehen, die EFAs in einer bestimmten Region unterstützt werden**  
Die verfügbaren Instance-Typen variieren je nach Region. Um die verfügbaren Instance-Typen zu sehen, die EFAs in einer Region unterstützt werden, verwenden Sie den [describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html)Befehl mit dem `--region` Parameter. Schließen Sie den Parameter `--filters` ein, um die Ergebnisse auf die Instance-Typen zu beschränken, die EFA unterstützen, und den Parameter `--query`, um die Ausgabe auf den Wert von `InstanceType` zu beschränken.

```
aws ec2 describe-instance-types \
    --region us-east-1  \
    --filters Name=network-info.efa-supported,Values=true \
    --query "InstanceTypes[*].[InstanceType]"  \
    --output text | sort
```

## Unterstützte Betriebssysteme
<a name="efa-os"></a>

Die Betriebssystemunterstützung ist je nach Prozessortyp unterschiedlich. Die folgende Tabelle zeigt die unterstützten Betriebssysteme.


| Betriebssystem | Intel/AMD (`x86_64`)-Instance-Typen | AWS Graviton (`arm64`) -Instanztypen | 
| --- | --- | --- | 
| Amazon Linux 2023 | ✓ | ✓ | 
| Amazon Linux 2 | ✓ | ✓ | 
| RHEL 8 und 9 | ✓ | ✓ | 
| Debian 11, 12 und 13 | ✓ | ✓ | 
| Rocky Linux 8 und 9 | ✓ | ✓ | 
| Ubuntu 22.04 und 24.04 | ✓ | ✓ | 
| SUSE Linux Enterprise 15 und höher SP2  | ✓ | ✓ | 
| OpenSUSE Leap 15.5 und höher | ✓ |  | 

**Anmerkung**  
Einige der aufgelisteten Betriebssysteme werden möglicherweise nicht mit Intel MPI unterstützt. Wenn Sie Intel MPI verwenden, lesen Sie in der [Intel-MPI-Dokumentation](https://www.intel.com/content/www/us/en/developer/articles/system-requirements/mpi-library-system-requirements.html) nach, ob Ihr Betriebssystem unterstützt wird.

## EFA-Einschränkungen
<a name="efa-limits"></a>

EFAs haben die folgenden Einschränkungen:
+ RDMA-Schreibvorgänge werden nicht bei allen Instance-Typen unterstützt. Weitere Informationen finden Sie unter [Unterstützte Instance-Typen](#efa-instance-types).
+ EFA-Verkehr 1 zwischen d/P4de/DL P4-1-Instances und anderen Instance-Typen wird derzeit nicht unterstützt.
+ [Instance-Typen, die mehrere Netzwerkkarten unterstützen](using-eni.md#network-cards), können mit einer EFA pro Netzwerkkarte konfiguriert werden. Alle anderen unterstützten Instance-Typen unterstützen nur einen EFA pro Instance.
+ Dedicated Instances und Dedicated Hosts werden für `c7g.16xlarge`-, `m7g.16xlarge`- und `r7g.16xlarge`-Instances nicht unterstützt, wenn ein EFA angehängt ist.
+ EFA-Verkehr 1 kann Availability Zones nicht überschreiten oder. VPCs Dies gilt nicht für normalen IP-Verkehr vom ENA-Gerät einer EFA-Schnittstelle.
+ EFA-Datenverkehr1 kann nicht umgeleitet werden. Normaler IP-Datenverkehr vom ENA-Gerät einer EFA-Schnittstelle bleibt umleitbar.
+ EFA wird auf nicht unterstützt. AWS Outposts
+ Das EFA-Gerät einer EFA-Schnittstelle (EFA mit ENA) wird auf Windows-Instances nur für Anwendungen unterstützt, die auf dem AWS Cloud Digital Interface Software Development Kit (AWS CDI SDK) basieren. Wenn Sie eine EFA-Schnittstelle (EFA mit ENA) an eine Windows-Instance für Anwendungen anhängen, die nicht auf dem CDI-SDK basieren, funktioniert diese als ENA-Schnittstelle, jedoch ohne die zusätzlichen EFA-Gerätefunktionen. Die reine EFA-Schnittstelle wird von AWS CDI basierten Anwendungen unter Windows oder Linux nicht unterstützt. Weitere Informationen finden Sie im [AWS Cloud Digital Interface Software Development Kit (AWS CDI SDK) -Benutzerhandbuch](https://docs.aws.amazon.com/CDI-SDK/latest/ug/what-is.html).

1*EFA-Datenverkehr* bezieht sich auf den Datenverkehr, der über das EFA-Gerät entweder über eine EFA (EFA mit ENA)- oder eine Nur-EFA-Schnittstelle übertragen wird.

## EFA-Preisgestaltung
<a name="efa-pricing"></a>

EFA ist als optionales Amazon-EC2-Netzwerkfeature verfügbar, das Sie ohne zusätzliche Kosten auf jeder unterstützten Instance aktivieren können.

# Erste Schritte mit EFA und MPI für HPC-Workloads auf Amazon EC2
<a name="efa-start"></a>

Dieses Tutorial unterstützt Sie beim Starten eines EFA- und MPI-konformen Instance-Clusters für HPC-Workloads.

**Anmerkung**  
Die Instances `u7i-12tb.224xlarge`, `u7in-16tb.224xlarge`, `u7in-24tb.224xlarge` und `u7in-32tb.224xlarge` können bis zu 128 parallele MPI-Prozesse mit Open MPI oder bis zu 256 parallele MPI-Prozesse mit Intel MPI ausführen.

**Topics**
+ [

## Schritt 1: Vorbereiten einer EFA-aktivierten Sicherheitsgruppe
](#efa-start-security)
+ [

## Schritt 2: Starten einer temporären Instance
](#efa-start-tempinstance)
+ [

## Schritt 3: Installieren der EFA-Software
](#efa-start-enable)
+ [

## Schritt 4: (*Optional*) Open MPI 5 aktivieren
](#efa-start-ompi5)
+ [

## Schritt 5: (*Optional*) Installieren von Intel MPI
](#efa-start-impi)
+ [

## Schritt 6: Ptrace-Schutz aktivieren
](#efa-start-ptrace)
+ [

## Schritt 7. Bestätigen der Installation
](#efa-start-test)
+ [

## Schritt 8: Ihre HPC-Anwendung installieren
](#efa-start-hpc-app)
+ [

## Schritt 9: Ein EFA-fähiges AMI erstellen
](#efa-start-ami)
+ [

## Schritt 10: EFA-fähige Instances in einer Cluster-Placement-Gruppe starten
](#efa-start-instances)
+ [

## Schritt 11: Beenden der temporären Instance
](#efa-start-terminate)
+ [

## Schritt 12: Passwortloses SSH aktivieren
](#efa-start-passwordless)

## Schritt 1: Vorbereiten einer EFA-aktivierten Sicherheitsgruppe
<a name="efa-start-security"></a>

Ein EFA erfordert eine Sicherheitsgruppe, die allen ein- und ausgehenden Datenverkehr von und zur Sicherheitsgruppe zulässt. Mit dem folgenden Verfahren wird eine Sicherheitsgruppe erstellt, die den gesamten eingehenden und ausgehenden Verkehr zu und von sich selbst zulässt und die eingehenden SSH-Verkehr von einer beliebigen IPv4 Adresse für SSH-Konnektivität zulässt.

**Wichtig**  
Diese Sicherheitsgruppe dient nur zu Testzwecken. Für Produktionsumgebungen sollten Sie eine Regel für eingehenden SSH-Datenverkehr erstellen, die Datenverkehr nur von der IP-Adresse zulässt, von der aus Sie eine Verbindung herstellen, z. B. die IP-Adresse Ihres Computers oder einen Bereich von IP-Adressen im lokalen Netzwerk.

Weitere Szenarien finden Sie unter [Sicherheitsgruppenregeln für verschiedene Anwendungsfälle](security-group-rules-reference.md).

**So erstellen Sie eine EFA-fähige Sicherheitsgruppe:**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Security Groups** (Sicherheitsgruppen) und anschließend **Create Security Group** (Sicherheitsgruppe erstellen) aus.

1. Führen Sie im Fenster **Create Security Group** Folgendes aus:

   1. Geben Sie für **Security group name** (Name der Sicherheitsgruppe) einen beschreibenden Namen für die Sicherheitsgruppe ein, wie etwa `EFA-enabled security group`.

   1. (Optional:) Geben Sie unter **Description** (Beschreibung) eine kurze Beschreibung der Sicherheitsgruppe ein.

   1. Wählen Sie bei **VPC** die VPC aus, in der Sie Ihre EFA-fähigen Instances starten möchten.

   1. Wählen Sie **Sicherheitsgruppe erstellen** aus.

1. Wählen Sie die von Ihnen erstellte Sicherheitsgruppe aus und kopieren Sie dann auf der Registerkarte **Details** die **Security group ID** (Sicherheitsgruppen-ID).

1. Bei noch ausgewählter Sicherheitsgruppe wählen Sie **Actions** (Aktionen), **Edit inbound rules** (Eingangsregeln bearbeiten) aus und gehen dann folgendermaßen vor:

   1. Wählen Sie **Regel hinzufügen** aus.

   1. Wählen Sie für **Type (Typ)** die Option **All traffic (Gesamter Datenverkehr)** aus.

   1. Wählen Sie bei **Source type** (Quellentyp) **Custom** (Benutzerdefiniert) aus und fügen Sie die Sicherheitsgruppen-ID, die Sie kopiert hatten, ins Feld ein.

   1. Wählen Sie **Regel hinzufügen** aus.

   1. Wählen Sie unter **Typ** die Option **SSH** aus.

   1. **Wählen Sie als **Quelltyp** die Option Anywhere- aus. IPv4**

   1. Wählen Sie **Regeln speichern** aus.

1. Bei noch ausgewählter Sicherheitsgruppe wählen Sie **Actions** (Aktionen), **Edit outbound rules** (Ausgangsregeln bearbeiten) aus und gehen dann folgendermaßen vor:

   1. Wählen Sie **Regel hinzufügen** aus.

   1. Wählen Sie für **Type (Typ)** die Option **All traffic (Gesamter Datenverkehr)** aus.

   1. Wählen Sie bei **Destination type** (Zieltyp) **Custom** (Benutzerdefiniert) aus und fügen Sie die Sicherheitsgruppen-ID, die Sie kopiert hatten, ins Feld ein.

   1. Wählen Sie **Regeln speichern** aus.

## Schritt 2: Starten einer temporären Instance
<a name="efa-start-tempinstance"></a>

Starten Sie eine temporäre Instance, die Sie verwenden können, um die EFA-Softwarekomponenten zu installieren und zu konfigurieren. Sie können mit dieser Instance ein EFA-aktiviertes AMI erstellen, von dem Sie Ihre EFA-aktivierten Instances starten können. 

**So starten Sie eine temporäre Instance**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Instances** und dann **Instances starten** aus, um den Launch Instance Wizard zu öffnen.

1. (*Optional*) Geben Sie im Bereich **Name and tags** (Name und Tags) einen Namen für die Instance an, z. B. `EFA-instance`. Der Name wird der Instance als Ressourcen-Tag (`Name=EFA-instance`) zugewiesen.

1. Wählen Sie im Bereich **Application and OS Images** (Anwendungs- und Betriebssystem-Images) ein AMI für eines der [unterstützten Betriebssysteme](efa.md#efa-os) aus.

1. Wählen Sie im Bereich **Instance type** (Instance-Typ) einen [supported instance type](efa.md#efa-instance-types) (unterstützten Instance-Typ) aus.

1. Wählen Sie im Bereich **Key pair** (Schlüsselpaar) das Schlüsselpaar aus, das für die Instance verwendet werden soll.

1. Wählen Sie im Bereich **Network settings** (Netzwerkeinstellungen) **Edit** (Bearbeiten) aus und führen Sie dann Folgendes aus:

   1. Wählen Sie unter **Subnetz** das Subnetz aus, in dem die Instance gestartet werden soll. Wenn Sie kein Subnetz auswählen, können Sie die Instance nicht für EFA aktivieren.

   1. Wählen Sie bei **Firewall (security groups)** Firewall (Sicherheitsgruppen) **Select existing security group** (Vorhandene Sicherheitsgruppe auswählen) und dann die Sicherheitsgruppe aus, die Sie im vorherigen Schritt erstellt haben.

   1. Erweitern Sie den Abschnitt **Erweiterte Netzwerkkonfiguration**.

      Wählen Sie für **Netzwerkschnittstelle 1** **Netzwerkkartenindex = 0**, **Geräteindex = 0** und **Schnittstellentyp = EFA mit ENA** aus.

      **(Optional) Wenn Sie einen Instance-Typ mit mehreren Karten verwenden, z. B. `p4d.24xlarge` oder `p5.48xlarge`, wählen Sie für jede weitere erforderliche Netzwerkschnittstelle die Option **Netzwerkschnittstelle hinzufügen**, wählen Sie für **Netzwerkkartenindex** den nächsten ungenutzten Index aus und wählen Sie dann **Geräteindex = 1** und **Schnittstellentyp = EFA mit ENA** oder Nur-EFA** aus.

1. Konfigurieren Sie im Bereich **Storage** (Speicher) die Volumes nach Bedarf.

1. Wählen Sie im Bereich **Summary** (Zusammenfassung) rechts **Launch instance** (Instance starten) aus.

**Anmerkung**  
Erwägen Sie, die Verwendung von sowohl IMDSv2 für die temporäre Instance als auch für das AMI, das Sie in [Schritt 9](#efa-start-ami) erstellen, vorzuschreiben, sofern Sie dies nicht bereits [ IMDSv2 als Standard für das Konto festgelegt](configuring-IMDS-new-instances.md#set-imdsv2-account-defaults) haben. Weitere Informationen zu den IMDSv2 Konfigurationsschritten finden Sie unter[Konfigurieren von Instance-Metadatenoptionen für neue Instances](configuring-IMDS-new-instances.md). 

## Schritt 3: Installieren der EFA-Software
<a name="efa-start-enable"></a>

Installieren Sie den EFA-fähigen Kernel, die EFA-Treiber, Libfabric und den Open MPI-Stack, der zur Unterstützung von EFA auf Ihrer temporären Instance erforderlich ist.

Die Schritte unterscheiden sich abhängig davon, ob Sie EFA mit Open MPI, Intel MPI oder mit Open MPI und Intel MPI verwenden möchten.

**Anmerkung**  
Einige der Betriebssysteme werden möglicherweise nicht mit Intel MPI unterstützt. Wenn Sie Intel MPI verwenden, lesen Sie in der [Intel-MPI-Dokumentation](https://www.intel.com/content/www/us/en/developer/articles/system-requirements/mpi-library-system-requirements.html) nach, ob Ihr Betriebssystem unterstützt wird.

**So installieren Sie die EFA-Software**

1. Stellen Sie eine Verbindung zu der Instance her, die Sie gestartet haben. Weitere Informationen finden Sie unter [Herstellen einer Verbindung zu Ihrer Linux-Instance mit SSH](connect-to-linux-instance.md).

1. Um sicherzustellen, dass alle Ihre Softwarepakete aktuell sind, führen Sie ein schnelles Softwareupdate auf Ihrer Instance aus. Dieser Vorgang kann einige Minuten dauern.
   + Amazon Linux 2023, Amazon Linux 2, RHEL 8/9, Rocky Linux 8/9

     ```
     $ sudo yum update -y
     ```
   + Ubuntu und Debian

     ```
     $ sudo apt-get update && sudo apt-get upgrade -y
     ```
   + SUSE Linux Enterprise

     ```
     $ sudo zypper update -y
     ```

1. Starten Sie die Instance neu und stellen Sie die Verbindung zur Instance wieder her.

1. Laden Sie die EFA-Software-Installationsdateien herunter. Die Software-Installationsdateien sind in einer komprimierten Tarball-Datei (`.tar.gz`) verpackt. Laden Sie die neueste *stabile* Version mit dem folgenden Befehl herunter.

   Sie erhalten die neueste Version auch, indem Sie anstelle der Versionsnummer im vorangegangenen Befehl `latest` eingeben.

   ```
   $ curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz
   ```

1. (*Optional*) Überprüfen Sie die Authentizität und Integrität der EFA-Tarball-Datei (`.tar.gz`).

   Diese Vorgehensweise wird empfohlen, um die Identität des Software-Publishers zu überprüfen und sicherzustellen, dass die Datei seit ihrer Veröffentlichung nicht verändert oder beschädigt wurde. Wenn Sie die Tarball-Datei nicht überprüfen möchten, überspringen Sie diesen Schritt.
**Anmerkung**  
Falls Sie es vorziehen, die Tarball-Datei stattdessen mit einer SHA256 Prüfsumme MD5 oder zu verifizieren, finden Sie weitere Informationen unter. [Überprüfen des EFA-Installationsprogramms mithilfe einer Prüfsumme](efa-verify.md)

   1. Laden Sie den öffentlichen GPG-Schlüssel herunter und importieren Sie ihn in Ihren Schlüsselbund.

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer.key && gpg --import aws-efa-installer.key
      ```

      Der Befehl sollte einen Schlüsselwert zurückgeben. Notieren Sie sich den Schlüsselwert. Sie benötigen ihn im nächsten Schritt.

   1. Überprüfen Sie den Fingerabdruck des GPG-Schlüssels. Führen Sie den folgenden Befehl aus und geben den Schlüsselwert aus dem vorherigen Schritt an.

      ```
      $ gpg --fingerprint key_value
      ```

      Der Befehl sollte einen Fingerabdruck zurückgeben, der mit `4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCC` identisch ist. Wenn der Fingerabdruck nicht übereinstimmt, führen Sie das EFA-Installationsskript nicht aus und wenden Sie sich an den Support.

   1. Laden Sie die Signaturdatei herunter und überprüfen Sie die Signatur der EFA-Tarball-Datei.

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.47.0.tar.gz.sig
      ```

      Das folgende Beispiel zeigt eine Ausgabe.

      ```
      gpg: Signature made Wed 29 Jul 2020 12:50:13 AM UTC using RSA key ID DD2D3CCC
      gpg: Good signature from "Amazon EC2 EFA <ec2-efa-maintainers@amazon.com>"
      gpg: WARNING: This key is not certified with a trusted signature!
      gpg:          There is no indication that the signature belongs to the owner.
      Primary key fingerprint: 4E90 91BC BB97 A96B 26B1  5E59 A054 80B1 DD2D 3CCC
      ```

      Wenn das Ergebnis `Good signature` enthält und der Fingerabdruck mit dem Fingerabdruck übereinstimmt, der im vorherigen Schritt zurückgegeben wurde, fahren Sie mit dem nächsten Schritt fort. Wenn nicht, führen Sie das EFA-Installationsskript nicht aus und wenden Sie sich an den Support.

1. Extrahieren Sie die Daten aus der komprimierten `.tar.gz`-Datei und wechseln Sie in das extrahierte Verzeichnis.

   ```
   $ tar -xf aws-efa-installer-1.47.0.tar.gz && cd aws-efa-installer
   ```

1. Installieren Sie die EFA-Software. Führen Sie je nach Anwendungsfall einen der folgenden Schritte durch.
**Anmerkung**  
**EFA unterstützt NVIDIA GPUDirect mit SUSE Linux nicht**. Wenn Sie SUSE Linux verwenden, müssen Sie zusätzlich `--skip-kmod` festlegen, um die Installation von kmod zu verhindern. Standardmäßig erlaubt out-of-tree SUSE Linux keine Kernelmodule.

------
#### [ Open MPI and Intel MPI ]

   Falls Sie EFA mit Open MPI und Intel MPI verwenden möchten, müssen Sie die EFA-Software mit Libfabric und Open MPI installieren und **Schritt 5: Intel MPI installieren** abschließen.

   Führen Sie den folgenden Befehl aus, um die EFA-Software mit Libfabric und Open MPI zu installieren.

**Anmerkung**  
Ab EFA 1.30.0 sind sowohl Open MPI 4.1 als auch Open MPI 5 standardmäßig installiert. Sie können optional die Version von Open MPI angeben, die Sie installieren möchten. Um nur Open MPI 4.1 zu installieren, fügen Sie hinzu. `--mpi=openmpi4` Um nur Open MPI 5 zu installieren, schließen Sie `--mpi=openmpi5` ein. Um beide zu installieren, lassen Sie die `--mpi`-Option weg.

   ```
   $ sudo ./efa_installer.sh -y
   ```

   Libfabric ist auf `/opt/amazon/efa` installiert. Open MPI 4.1 ist installiert auf. `/opt/amazon/openmpi` Open MPI 5 ist auf `/opt/amazon/openmpi5` installiert.

------
#### [ Open MPI only ]

   Falls Sie EFA nur mit Open MPI verwenden möchten, müssen Sie die EFA-Software mit Libfabric und Open MPI installieren und **können Schritt 5: Intel MPI installieren** überspringen. Führen Sie den folgenden Befehl aus, um die EFA-Software mit Libfabric und Open MPI zu installieren.

**Anmerkung**  
Ab EFA 1.30.0 sind sowohl Open MPI 4.1 als auch Open MPI 5 standardmäßig installiert. Sie können optional die Version von Open MPI angeben, die Sie installieren möchten. Um nur Open MPI 4.1 zu installieren, fügen Sie hinzu. `--mpi=openmpi4` Um nur Open MPI 5 zu installieren, schließen Sie `--mpi=openmpi5` ein. Um beide zu installieren, lassen Sie die `--mpi`-Option weg.

   ```
   $ sudo ./efa_installer.sh -y
   ```

   Libfabric ist auf `/opt/amazon/efa` installiert. Open MPI 4.1 ist installiert auf. `/opt/amazon/openmpi` Open MPI 5 ist auf `/opt/amazon/openmpi5` installiert.

------
#### [ Intel MPI only ]

   Wenn Sie EFA nur mit Intel MPI verwenden möchten, können Sie die EFA-Software ohne Libfabric und Open MPI installieren. In diesem Fall verwendet Intel MPI seine eingebettete Libfabric. Wenn Sie dies tun, **müssen Sie Schritt :5 Intel MPI installieren abschließen**. 

   Führen Sie den folgenden Befehl aus, um die EFA-Software ohne Libfabric und Open MPI zu installieren.

   ```
   $ sudo ./efa_installer.sh -y --minimal
   ```

------

1. Wenn das EFA-Installationsprogramm Sie auffordert, die Instance neu zu starten, tun Sie dies und stellen Sie dann erneut eine Verbindung mit der Instance her. Melden Sie sich andernfalls von der Instance ab und wieder an, um die Installation abzuschließen.

1. Löschen Sie den unkomprimierten Tarball und den Tarball selbst. Andernfalls werden diese in das von Ihnen erstellte EFA-fähige AMI aufgenommen, wodurch dessen Größe erhöht wird.

## Schritt 4: (*Optional*) Open MPI 5 aktivieren
<a name="efa-start-ompi5"></a>

**Anmerkung**  
Führen Sie diesen Schritt nur aus, wenn Sie Open MPI 5 verwenden wollen.

Ab EFA 1.30.0 sind sowohl Open MPI 4.1 als auch Open MPI 5 standardmäßig installiert. Alternativ können Sie wählen, nur Open MPI 4.1 oder Open MPI 5 zu installieren.

Wenn Sie sich in **Schritt 3: EFA-Software installieren** für die Installation von Open MPI 5 entschieden haben und diese Software verwenden möchten, müssen Sie die folgenden Schritte ausführen, um sie zu aktivieren.

**So aktivieren Sie Open MPI 5**

1. Fügen Sie Open MPI 5 zur Umgebungsvariablen PATH hinzu.

   ```
   $ module load openmpi5
   ```

1. Stellen Sie sicher, dass Open MPI 5 für die Verwendung aktiviert ist.

   ```
   $ which mpicc
   ```

   Der Befehl sollte das Open-MPI-5-Installationsverzeichnis zurückgeben – `/opt/amazon/openmpi5`.

1. (*Optional*) Gehen Sie wie folgt vor, um sicherzustellen, dass Open MPI 5 bei jedem Start der Instance zur Umgebungsvariablen PATH hinzugefügt wird:

------
#### [ bash shell ]

   Fügen Sie `module load openmpi5` zu `/home/username/.bashrc` und `/home/username/.bash_profile` hinzu.

------
#### [ csh and tcsh shells ]

   Fügen Sie `module load openmpi5` zu `/home/username/.cshrc` hinzu.

------

Wenn Sie Open MPI 5 aus der Umgebungsvariablen PATH entfernen müssen, führen Sie den folgenden Befehl aus und entfernen Sie den Befehl aus den Shell-Startup-Skripten.

```
$ module unload openmpi5
```

## Schritt 5: (*Optional*) Installieren von Intel MPI
<a name="efa-start-impi"></a>

**Wichtig**  
Führen Sie diesen Schritt nur aus, wenn Sie vorhaben, Intel MPI zu verwenden. Wenn Sie vorhaben, nur Open MPI zu verwenden, überspringen Sie diesen Schritt. 

Intel MPI erfordert eine zusätzliche Einrichtung und Konfiguration der Umgebungsvariablen.

**Voraussetzung**  
Stellen Sie sicher, dass der Benutzer, der die folgenden Schritte ausführt, über sudo-Berechtigungen verfügt.

**So installieren Sie Intel MPI**

1. Gehen Sie wie folgt vor, um das Intel MPI-Installationsskript herunterzuladen

   1. Besuchen Sie die [Intel-Website](https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#mpi).

   1. Wählen Sie im Abschnitt **Intel MPI Library** (Intel-MPI-Bibliothek) auf der Website den Link für **Intel MPI Library for Linux**, **Offline**-Installationsprogramm aus.

1. Führen Sie das Skript für die Installation aus, das Sie im vorherigen Schritt heruntergeladen haben.

   ```
   $ sudo bash installation_script_name.sh
   ```

1. Wählen Sie im Installationsprogramm **Accept & install** (Akzeptieren und installieren) aus.

1. Lesen Sie das Intel-Verbesserungsprogramm durch, wählen Sie die entsprechende Option und dann **Begin Installation** (Mit der Installation beginnen) aus.

1. Nach abgeschlossener Installation wählen Sie **Schließen** aus.

1. Standardmäßig verwendet Intel MPI seine eingebettete (interne) Libfabric. Sie können Intel MPI so konfigurieren, dass stattdessen die Libfabric verwendet wird, die im EFA-Installationsprogramm enthalten ist. Typischerweise wird das EFA-Installationsprogramm mit einer neueren Version von Libfabric als Intel MPI ausgeliefert. In einigen Fällen ist Libfabric, die mit dem EFA-Installationsprogramm geliefert wird, leistungsfähiger als Intel MPI. Führen Sie je nach Shell einen der folgenden Schritte aus, um Intel MPI für die Verwendung von Libfabric zu konfigurieren, die mit dem EFA-Installationsprogramm geliefert wird.

------
#### [ bash shells ]

   Fügen Sie die folgende Anweisung zu `/home/username/.bashrc` und `/home/username/.bash_profile` hinzu.

   ```
   export I_MPI_OFI_LIBRARY_INTERNAL=0
   ```

------
#### [ csh and tcsh shells ]

   Fügen Sie die folgende Anweisung zu `/home/username/.cshrc` hinzu.

   ```
   setenv I_MPI_OFI_LIBRARY_INTERNAL 0
   ```

------

1. Fügen Sie Ihrem Shell-Skript den folgenden **Quell**-Befehl hinzu, um das `vars.sh`-Skript aus dem Installationsverzeichnis zum Einrichten der Compiler-Umgebung bei jedem Start der Instance zu beziehen. Führen Sie je nach Shell einen der folgenden Schritte durch.

------
#### [ bash shells ]

   Fügen Sie die folgende Anweisung zu `/home/username/.bashrc` und `/home/username/.bash_profile` hinzu.

   ```
   source /opt/intel/oneapi/mpi/latest/env/vars.sh
   ```

------
#### [ csh and tcsh shells ]

   Fügen Sie die folgende Anweisung zu `/home/username/.cshrc` hinzu.

   ```
   source /opt/intel/oneapi/mpi/latest/env/vars.csh
   ```

------

1. Wenn EFA aufgrund einer Fehlkonfiguration nicht verfügbar ist, verwendet Intel MPI standardmäßig den TCP/IP Netzwerk-Stack, was zu einer langsameren Anwendungsleistung führen kann. Sie können dies verhindern, indem Sie `I_MPI_OFI_PROVIDER` auf `efa` setzen. Dies führt dazu, dass Intel MPI mit dem folgenden Fehler fehlschlägt, wenn EFA nicht verfügbar ist:

   ```
   Abort (XXXXXX) on node 0 (rank 0 in comm 0): Fatal error in PMPI_Init: OtherMPI error,
   MPIR_Init_thread (XXX)........:	
   MPID_Init (XXXX)..............:
   MPIDI_OFI_mpi_init_hook (XXXX):
   open_fabric (XXXX)............:
   find_provider (XXXX)..........:
   OFI fi_getinfo() failed (ofi_init.c:2684:find_provider:
   ```

   Führen Sie je nach Shell einen der folgenden Schritte durch.

------
#### [ bash shells ]

   Fügen Sie die folgende Anweisung zu `/home/username/.bashrc` und `/home/username/.bash_profile` hinzu.

   ```
   export I_MPI_OFI_PROVIDER=efa
   ```

------
#### [ csh and tcsh shells ]

   Fügen Sie die folgende Anweisung zu `/home/username/.cshrc` hinzu.

   ```
   setenv I_MPI_OFI_PROVIDER efa
   ```

------

1. Standardmäßig gibt Intel MPI keine Debugging-Informationen aus. Sie können verschiedene Ausführlichkeitsstufen angeben, um die Debugging-Informationen zu steuern. Mögliche Werte (in der Reihenfolge der bereitgestellten Details) sind: `0` (Standard), `1`, `2`, `3`, `4`, `5`. Level `1` und höher druckt `libfabric version` und `libfabric provider`. Verwenden Sie `libfabric version`, um zu überprüfen, ob Intel MPI die interne Libfabric verwendet oder die Libfabric, die mit dem EFA-Installationsprogramm geliefert wird. Wenn es die interne Libfabric verwendet, wird der Version ein `impi` angehängt. Verwenden Sie diese `libfabric provider` Option, um zu überprüfen, ob Intel MPI EFA oder das Netzwerk verwendet. TCP/IP Wenn es EFA verwendet, ist der Wert `efa`. Wenn es TCP/IP verwendet, ist der Wert `tcp;ofi_rxm`.

   Um Debugging-Informationen zu aktivieren, führen Sie je nach Shell einen der folgenden Schritte durch.

------
#### [ bash shells ]

   Fügen Sie die folgende Anweisung zu `/home/username/.bashrc` und `/home/username/.bash_profile` hinzu.

   ```
   export I_MPI_DEBUG=value
   ```

------
#### [ csh and tcsh shells ]

   Fügen Sie die folgende Anweisung zu `/home/username/.cshrc` hinzu.

   ```
   setenv I_MPI_DEBUG value
   ```

------

1. Standardmäßig verwendet Intel MPI den gemeinsam genutzten Speicher des Betriebssystems (`shm`) für die Kommunikation innerhalb des Knotens und verwendet Libfabric (`ofi`) nur für die Kommunikation zwischen Knoten. Im Allgemeinen bietet diese Konfiguration die beste Leistung. In einigen Fällen kann die Intel-MPI-shm-Fabric jedoch dazu führen, dass bestimmte Anwendungen auf unbestimmte Zeit hängen bleiben.

   Um dieses Problem zu lösen, können Sie Intel MPI zwingen, Libfabric sowohl für die Kommunikation innerhalb von Knoten als auch zwischen Knoten zu verwenden. Führen Sie dazu je nach Shell einen der folgenden Schritte aus.

------
#### [ bash shells ]

   Fügen Sie die folgende Anweisung zu `/home/username/.bashrc` und `/home/username/.bash_profile` hinzu.

   ```
   export I_MPI_FABRICS=ofi
   ```

------
#### [ csh and tcsh shells ]

   Fügen Sie die folgende Anweisung zu `/home/username/.cshrc` hinzu.

   ```
   setenv I_MPI_FABRICS ofi
   ```

------
**Anmerkung**  
Der EFA-Libfabric-Anbieter verwendet den gemeinsam genutzten Speicher des Betriebssystems für die Kommunikation innerhalb des Knotens. Das bedeutet, dass die Einstellung von `I_MPI_FABRICS` auf `ofi` zu einer ähnlichen Leistung führt wie die Standardkonfiguration `shm:ofi`.

1. Melden Sie sich von der Instance ab. Melden Sie sich anschließend wieder an.

Wenn Sie Intel MPI nicht mehr verwenden möchten, entfernen Sie die Umgebungsvariablen aus den Shell-Startupskripts.

## Schritt 6: Ptrace-Schutz aktivieren
<a name="efa-start-ptrace"></a>

Um die Leistung Ihrer HPC-Anwendung zu verbessern, verwendet Libfabric den lokalen Speicher der Instance für die Kommunikation zwischen Prozessen, wenn die Prozesse auf derselben Instance ausgeführt werden. 

Das Shared Memory Feature verwendet Cross Memory Attach (CMA), das mit *Ptrace-Schutz* nicht unterstützt wird. Wenn Sie eine Linux-Distribution verwenden, beider standardmäßig Ptrace-Schutz aktiviert hat, z. B. Ubuntu, müssen Sie ihn deaktivieren. Wenn für Ihre Linux-Distribution standardmäßig kein Ptrace-Schutz aktiviert ist, überspringen Sie diesen Schritt.

**So deaktivieren Sie den Ptrace-Schutz**  
Führen Sie eine der folgenden Aufgaben aus:
+ Führen Sie den folgenden Befehl aus, um den Ptrace-Schutz vorübergehend zu deaktivieren.

  ```
  $ sudo sysctl -w kernel.yama.ptrace_scope=0
  ```
+ Um den Ptrace-Schutz dauerhaft zu deaktivieren, fügen Sie `kernel.yama.ptrace_scope = 0` zu `/etc/sysctl.d/10-ptrace.conf` hinzu und starten Sie die Instance neu.

## Schritt 7. Bestätigen der Installation
<a name="efa-start-test"></a>

**So bestätigen Sie die erfolgreiche Installation**

1. Bestätigen Sie durch Ausführen des folgenden Befehls, dass MPI erfolgreich installiert wurde:

   ```
   $ which mpicc
   ```
   + Für Open MPI muss der zurückgegebene Pfad `/opt/amazon/` enthalten
   + Für Intel MPI muss der zurückgegebene Pfad `/opt/intel/` enthalten. Wenn Sie nicht die erwartete Ausgabe erhalten, stellen Sie sicher, dass Sie das `vars.sh`-Skript für Intel MPI bezogen haben.

1. Um zu überprüfen, ob die EFA-Softwarekomponenten und Libfabric erfolgreich installiert wurden, führen Sie den folgenden Befehl aus.

   ```
   $ fi_info -p efa -t FI_EP_RDM
   ```

   Der Befehl muss Informationen zu den Libfabric-EFA-Schnittstellen zurückgeben. Das folgende Beispiel zeigt die Befehlsausgabe.

   ```
   provider: efa
       fabric: EFA-fe80::94:3dff:fe89:1b70
       domain: efa_0-rdm
       version: 2.0
       type: FI_EP_RDM
       protocol: FI_PROTO_EFA
   ```

## Schritt 8: Ihre HPC-Anwendung installieren
<a name="efa-start-hpc-app"></a>

Installieren Sie die HPC-Anwendung auf der temporären Instance. Der Installationsvorgang unterscheidet sich je nach spezifischer HPC-Anwendung. Weitere Informationen finden Sie unter [Software auf Ihrer AL2 Instance verwalten](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html) im *Amazon Linux 2-Benutzerhandbuch*.

**Anmerkung**  
In der Dokumentation Ihrer HPC-Anwendung finden Sie Installationsanweisungen.

## Schritt 9: Ein EFA-fähiges AMI erstellen
<a name="efa-start-ami"></a>

Nachdem Sie die erforderlichen Softwarekomponenten installiert haben, erstellen Sie ein AMI, das Sie erneut verwenden können, um Ihre EFA-fähigen Instances zu starten.

**So erstellen Sie ein AMI aus Ihrer temporären Instance:**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Instances** aus.

1. Wählen Sie die temporäre Instance aus, die Sie erstellt haben, und wählen Sie anschließend **Actions** (Aktionen), **Image** und **Create Image** (Image erstellen) aus.

1. Gehen Sie bei **Create Image** (Image erstellen) wie folgt vor:

   1. Geben Sie unter **Image name** (Image-Name) einen beschreibenden Namen für das AMI ein.

   1. (Optional:) Geben Sie bei **Image description** (Image-Beschreibung) eine kurze Beschreibung des Zwecks des AMI ein.

   1. Wählen Sie **Create Image (Image erstellen)** aus.

1. Wählen Sie im Navigationsbereich **AMIs** aus.

1. Suchen Sie das AMI, das Sie erstellt haben, in der Liste. Warten Sie, bis der Status von `pending` zu `available` wechselt, bevor Sie mit dem nächsten Schritt fortfahren.

## Schritt 10: EFA-fähige Instances in einer Cluster-Placement-Gruppe starten
<a name="efa-start-instances"></a>

Starten Sie die EFA-aktivierten Instances unter Verwendung des EFA-aktiviertenAMI, das Sie in **Schritt 7** erstellt haben, in einer Cluster Placement-Gruppe. Starten Sie dann die EFA-aktivierte Sicherheitsgruppe, die Sie in **Schritt 1** erstellt haben.

**Anmerkung**  
Es ist keine absolute Voraussetzung, Ihre EFA-aktivierten Instances in einer Cluster-Platzierungsgruppe zu starten. Wir empfehlen allerdings, Ihre EFA-Instances in einer Cluster-Placement-Gruppe zu starten, da die Instances dadurch in einer Gruppe mit niedriger Latenz in einer einzelnen Availability Zone gestartet werden.
Um die Verfügbarkeit von Kapazitäten sicherzustellen, wenn Sie die Instances Ihres Clusters skalieren, können Sie eine Kapazitätsreservierung für Ihre Cluster-Placement-Gruppe erstellen. Weitere Informationen finden Sie unter [Kapazitätsreservierungen mit Cluster-Placement-Gruppen verwenden](cr-cpg.md).

**So starten Sie eine Instance**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Instances** und dann **Instances starten** aus, um den Launch Instance Wizard zu öffnen.

1. (*Optional*) Geben Sie im Bereich **Name and tags** (Name und Tags) einen Namen für die Instance an, z. B. `EFA-instance`. Der Name wird der Instance als Ressourcen-Tag (`Name=EFA-instance`) zugewiesen.

1. Wählen Sie im Abschnitt **Anwendungs- und Betriebssystemimages** die Option **My AMIs** und dann das AMI aus, das Sie im vorherigen Schritt erstellt haben.

1. Wählen Sie im Bereich **Instance type** (Instance-Typ) einen [supported instance type](efa.md#efa-instance-types) (unterstützten Instance-Typ) aus.

1. Wählen Sie im Bereich **Key pair** (Schlüsselpaar) das Schlüsselpaar aus, das für die Instance verwendet werden soll.

1. Wählen Sie im Bereich **Network settings** (Netzwerkeinstellungen) **Edit** (Bearbeiten) aus und führen Sie dann Folgendes aus:

   1. Wählen Sie unter **Subnetz** das Subnetz aus, in dem die Instance gestartet werden soll. Wenn Sie kein Subnetz auswählen, können Sie die Instance nicht für EFA aktivieren.

   1. Wählen Sie bei **Firewall (security groups)** Firewall (Sicherheitsgruppen) **Select existing security group** (Vorhandene Sicherheitsgruppe auswählen) und dann die Sicherheitsgruppe aus, die Sie im vorherigen Schritt erstellt haben.

   1. Erweitern Sie den Abschnitt **Erweiterte Netzwerkkonfiguration**.

      Wählen Sie für **Netzwerkschnittstelle 1** **Netzwerkkartenindex = 0**, **Geräteindex = 0** und **Schnittstellentyp = EFA mit ENA** aus.

      (*Optional*) Wenn Sie einen Instance-Typ mit mehreren Karten verwenden, z. B. `p4d.24xlarge` oder `p5.48xlarge`, wählen Sie für jede weitere erforderliche Netzwerkschnittstelle die Option **Netzwerkschnittstelle hinzufügen**, wählen Sie für **Netzwerkkartenindex** den nächsten ungenutzten Index aus und wählen Sie dann **Geräteindex = 1** und **Schnittstellentyp = EFA mit ENA** oder **Nur-EFA** aus.

1. (*Optional*) Konfigurieren Sie im Bereich **Storage** (Speicher) die Volumes nach Bedarf.

1. Wählen Sie im Bereich **Advanced details** (Erweiterte Details) bei **Placement group name** (Placement-Gruppen-Name) die Cluster-Placement-Gruppe aus, in der die Instances gestartet werden sollen. Wenn Sie eine neue Cluster-Placement-Gruppe erstellen müssen, wählen Sie **Create new placement group** (Neue Placement-Gruppe erstellen).

1. Geben Sie im Bereich **Summary** (Zusammenfassung) rechts bei **Number of instances** (Anzahl der Instances) die Anzahl EFA-fähiger Instances ein, die Sie starten möchten, und wählen Sie dann **Launch instance** (Instance starten).

## Schritt 11: Beenden der temporären Instance
<a name="efa-start-terminate"></a>

An diesem Punkt benötigen Sie die temporäre Instance, die Sie in [Schritt 2](#efa-start-tempinstance) gestartet haben, nicht mehr. Sie können die Instance beenden, damit keine weiteren Kosten dafür anfallen.

**So beenden Sie die temporäre Instance:**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Instances** aus.

1. Wählen Sie die temporäre instance aus, die Sie erstellt haben, und wählen Sie anschließend **Aktionen**, **Instance-Zustand** und **Instance beenden (löschen)** aus.

1. Wenn Sie zur Bestätigung aufgefordert werden, wählen Sie **Beenden (löschen)** aus.

## Schritt 12: Passwortloses SSH aktivieren
<a name="efa-start-passwordless"></a>

Damit Ihre Anwendungen auf allen Instances in Ihrem Cluster ausgeführt werden können, müssen Sie passwortlosen SSH-Zugriff vom Führungsknoten auf die Mitgliedsknoten aktivieren. Der Führungsknoten ist die Instance, von der aus Sie die Anwendungen ausführen. Die verbleibenden Instances im Cluster sind die Mitgliedsknoten.

**So aktivieren Sie passwortloses SSH zwischen den Instances im Cluster:**

1. Wählen Sie eine Instance im Cluster als Führungsknoten aus und stellen Sie eine Verbindung zu ihr her.

1. Deaktivieren Sie `strictHostKeyChecking` und aktivieren Sie `ForwardAgent` für den Führungsknoten. Öffnen Sie `~/.ssh/config` mit dem bevorzugten Texteditor und fügen Sie Folgendes hinzu.

   ```
   Host *
       ForwardAgent yes
   Host *
       StrictHostKeyChecking no
   ```

1. Generieren Sie ein RSA-Schlüsselpaar.

   ```
   $ ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
   ```

   Das Schlüsselpaar wird im `$HOME/.ssh/`-Verzeichnis erstellt.

1. Ändern Sie die Berechtigungen des privaten Schlüssels auf dem Führungsknoten.

   ```
   $ chmod 600 ~/.ssh/id_rsa
   chmod 600 ~/.ssh/config
   ```

1. Öffnen Sie `~/.ssh/id_rsa.pub` mit Ihrem bevorzugten Texteditor und kopieren Sie den Schlüssel.

1. Gehen Sie für jeden Mitgliedsknoten im Cluster wie folgt vor:

   1. Stellen Sie eine Verbindung mit der Instance her.

   1. Öffnen Sie `~/.ssh/authorized_keys` mit Ihrem bevorzugten Texteditor und fügen Sie den öffentlichen Schlüssel hinzu, den Sie zuvor kopiert haben.

1. Um zu testen, ob das passwortlose SSH wie erwartet funktioniert, stellen Sie eine Verbindung zum Leaderknoten her und führen Sie den folgenden Befehl aus.

   ```
   $ ssh member_node_private_ip
   ```

   Sie sollten eine Verbindung zum Mitgliedsknoten herstellen können, ohne zur Eingabe eines Schlüssels oder Passworts aufgefordert zu werden.

# Erste Schritte mit EFA und NCCL für ML-Workloads auf Amazon EC2
<a name="efa-start-nccl"></a>

Die NVIDIA Collective Communications Library (NCCL) ist eine Bibliothek mit standardmäßigen kollektiven Kommunikationsroutinen für mehrere Benutzer GPUs über einen einzelnen Knoten oder mehrere Knoten. Die NCCL kann zusammen mit EFA, libfabric und MPI verwendet werden, um verschiedene Machine-Learning-Workloads zu unterstützen. Weitere Informationen finden Sie auf der [NCCL](https://developer.nvidia.com/nccl)-Website.

**Voraussetzungen**
+ Nur Instance-Typen der P-Serie mit beschleunigter Datenverarbeitung werden unterstützt. Weitere Informationen finden Sie unter [Beschleunigte Computing-Instances von Amazon EC2](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html#ac-sizes).
+ Nur Amazon Linux 2023, Amazon Linux 2, Ubuntu 24.04 und Ubuntu 22.04 Base AMIs werden unterstützt.
+ Die NCCL wird erst ab Version 2.4.2 mit EFA unterstützt.

*Weitere Informationen zum Ausführen von Machine-Learning-Workloads mit EFA und NCCL unter Verwendung von finden Sie unter AWS Deep Learning AMIs Using [EFA on the DLAMI](https://docs.aws.amazon.com/dlami/latest/devguide/tutorial-efa-using.html) im Developer Guide.AWS Deep Learning AMIs *

**Topics**
+ [

## Schritt 1: Vorbereiten einer EFA-aktivierten Sicherheitsgruppe
](#nccl-start-base-setup)
+ [

## Schritt 2: Starten einer temporären Instance
](#nccl-start-base-temp)
+ [

## Schritt 3: Installieren der Nvidia-GPU-Treiber, des Nvidia-CUDA-Toolkits und cuDNN
](#nccl-start-base-drivers)
+ [

## Schritt 4: Installieren GDRCopy
](#nccl-start-base-gdrcopy)
+ [

## Schritt 5: Installieren der EFA-Software
](#nccl-start-base-enable)
+ [

## Schritt 6: Installieren der NCCL
](#nccl-start-base-nccl)
+ [

## Schritt 7: Installieren der NCCL-Tests
](#nccl-start-base-tests)
+ [

## Schritt 8: Testen der EFA- und NCCL-Konfiguration
](#nccl-start-base-test)
+ [

## Schritt 9: Installieren der Machine-Learning-Anwendungen
](#nccl-start-base-app)
+ [

## Schritt 10: Erstellen eines EFA- und NCCL-konformen AMI
](#nccl-start-base-ami)
+ [

## Schritt 11: Beenden der temporären Instance
](#nccl-start-base-terminate)
+ [

## Schritt 12: Starten von EFA- und NCCL-konformen Instances in einer Cluster Placement-Gruppe
](#nccl-start-base-cluster)
+ [

## Schritt 13: Aktivieren von passwortlosem SSH
](#nccl-start-base-passwordless)

## Schritt 1: Vorbereiten einer EFA-aktivierten Sicherheitsgruppe
<a name="nccl-start-base-setup"></a>

Ein EFA erfordert eine Sicherheitsgruppe, die allen ein- und ausgehenden Datenverkehr von und zur Sicherheitsgruppe zulässt. Mit dem folgenden Verfahren wird eine Sicherheitsgruppe erstellt, die den gesamten eingehenden und ausgehenden Datenverkehr von und zu sich selbst zulässt und die eingehenden SSH-Verkehr von jeder beliebigen Adresse für SSH-Konnektivität zulässt. IPv4 

**Wichtig**  
Diese Sicherheitsgruppe dient nur zu Testzwecken. Für Produktionsumgebungen sollten Sie eine Regel für eingehenden SSH-Datenverkehr erstellen, die Datenverkehr nur von der IP-Adresse zulässt, von der aus Sie eine Verbindung herstellen, z. B. die IP-Adresse Ihres Computers oder einen Bereich von IP-Adressen im lokalen Netzwerk.

Weitere Szenarien finden Sie unter [Sicherheitsgruppenregeln für verschiedene Anwendungsfälle](security-group-rules-reference.md).

**So erstellen Sie eine EFA-fähige Sicherheitsgruppe:**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Security Groups** (Sicherheitsgruppen) und anschließend **Create Security Group** (Sicherheitsgruppe erstellen) aus.

1. Führen Sie im Fenster **Create Security Group** Folgendes aus:

   1. Geben Sie für **Security group name** (Name der Sicherheitsgruppe) einen beschreibenden Namen für die Sicherheitsgruppe ein, wie etwa `EFA-enabled security group`.

   1. (Optional:) Geben Sie unter **Description** (Beschreibung) eine kurze Beschreibung der Sicherheitsgruppe ein.

   1. Wählen Sie bei **VPC** die VPC aus, in der Sie Ihre EFA-fähigen Instances starten möchten.

   1. Wählen Sie **Sicherheitsgruppe erstellen** aus.

1. Wählen Sie die von Ihnen erstellte Sicherheitsgruppe aus und kopieren Sie dann auf der Registerkarte **Details** die **Security group ID** (Sicherheitsgruppen-ID).

1. Bei noch ausgewählter Sicherheitsgruppe wählen Sie **Actions** (Aktionen), **Edit inbound rules** (Eingangsregeln bearbeiten) aus und gehen dann folgendermaßen vor:

   1. Wählen Sie **Regel hinzufügen** aus.

   1. Wählen Sie für **Type (Typ)** die Option **All traffic (Gesamter Datenverkehr)** aus.

   1. Wählen Sie bei **Source type** (Quellentyp) **Custom** (Benutzerdefiniert) aus und fügen Sie die Sicherheitsgruppen-ID, die Sie kopiert hatten, ins Feld ein.

   1. Wählen Sie **Regel hinzufügen** aus.

   1. Wählen Sie unter **Typ** die Option **SSH** aus.

   1. **Wählen Sie als **Quelltyp** die Option Anywhere- aus. IPv4**

   1. Wählen Sie **Regeln speichern** aus.

1. Bei noch ausgewählter Sicherheitsgruppe wählen Sie **Actions** (Aktionen), **Edit outbound rules** (Ausgangsregeln bearbeiten) aus und gehen dann folgendermaßen vor:

   1. Wählen Sie **Regel hinzufügen** aus.

   1. Wählen Sie für **Type (Typ)** die Option **All traffic (Gesamter Datenverkehr)** aus.

   1. Wählen Sie bei **Destination type** (Zieltyp) **Custom** (Benutzerdefiniert) aus und fügen Sie die Sicherheitsgruppen-ID, die Sie kopiert hatten, ins Feld ein.

   1. Wählen Sie **Regeln speichern** aus.

## Schritt 2: Starten einer temporären Instance
<a name="nccl-start-base-temp"></a>

Starten Sie eine temporäre Instance, die Sie verwenden können, um die EFA-Softwarekomponenten zu installieren und zu konfigurieren. Sie können mit dieser Instance ein EFA-aktiviertes AMI erstellen, von dem Sie Ihre EFA-aktivierten Instances starten können.

**So starten Sie eine temporäre Instance**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Instances** und dann **Instances starten** aus, um den Launch Instance Wizard zu öffnen.

1. (*Optional*) Geben Sie im Bereich **Name and tags** (Name und Tags) einen Namen für die Instance an, z. B. `EFA-instance`. Der Name wird der Instance als Ressourcen-Tag (`Name=EFA-instance`) zugewiesen.

1. Wählen Sie im Bereich **Anwendungs- und Betriebssystem-Images** ein AMI für eines der unterstützten Betriebssysteme aus.

1. Wählen Sie im Bereich **Instance-Typ** einen unterstützten Instance-Typ aus.

1. Wählen Sie im Bereich **Key pair** (Schlüsselpaar) das Schlüsselpaar aus, das für die Instance verwendet werden soll.

1. Wählen Sie im Bereich **Network settings** (Netzwerkeinstellungen) **Edit** (Bearbeiten) aus und führen Sie dann Folgendes aus:

   1. Wählen Sie unter **Subnetz** das Subnetz aus, in dem die Instance gestartet werden soll. Wenn Sie kein Subnetz auswählen, können Sie die Instance nicht für EFA aktivieren.

   1. Wählen Sie bei **Firewall (security groups)** Firewall (Sicherheitsgruppen) **Select existing security group** (Vorhandene Sicherheitsgruppe auswählen) und dann die Sicherheitsgruppe aus, die Sie im vorherigen Schritt erstellt haben.

   1. Erweitern Sie den Abschnitt **Erweiterte Netzwerkkonfiguration**.

      Wählen Sie für **Netzwerkschnittstelle 1** **Netzwerkkartenindex = 0**, **Geräteindex = 0** und **Schnittstellentyp = EFA mit ENA** aus.

      (*Optional*) Wenn Sie einen Instance-Typ mit mehreren Karten verwenden, z. B. `p4d.24xlarge` oder `p5.48xlarge`, wählen Sie für jede weitere erforderliche Netzwerkschnittstelle die Option **Netzwerkschnittstelle hinzufügen**, wählen Sie für **Netzwerkkartenindex** den nächsten ungenutzten Index aus und wählen Sie dann **Geräteindex = 1** und **Schnittstellentyp = EFA mit ENA** oder **Nur-EFA** aus.

1. Konfigurieren Sie im Bereich **Storage** (Speicher) die Volumes nach Bedarf.
**Anmerkung**  
Sie müssen zusätzliche 10 bis 20 GiB Speicher für das Nvidia CUDA Toolkit bereitstellen. Wenn Sie nicht genügend Speicherplatz bereitstellen, erhalten Sie einen `insufficient disk space`-Fehler beim Versuch, die Nvidia-Treiber und das CUDA-Toolkit zu installieren.

1. Wählen Sie im Bereich **Summary** (Zusammenfassung) rechts **Launch instance** (Instance starten) aus.

## Schritt 3: Installieren der Nvidia-GPU-Treiber, des Nvidia-CUDA-Toolkits und cuDNN
<a name="nccl-start-base-drivers"></a>

------
#### [ Amazon Linux 2023 and Amazon Linux 2 ]

**Installieren der Nvidia GPU-Treiber, des Nvidia-CUDA-Toolkits und cuDNN**

1. Um sicherzustellen, dass alle Ihre Softwarepakete aktuell sind, führen Sie ein schnelles Softwareupdate auf Ihrer Instance aus.

   ```
   $ sudo yum upgrade -y && sudo reboot
   ```

   Stellen Sie nach dem Neustart der Instance erneut eine Verbindung dazu her.

1. Installieren Sie die Dienstprogramme, die zum Installieren der Nvidia GPU-Treiber und des Nvidia CUDA-Toolkits benötigt werden.

   ```
   $ sudo yum groupinstall 'Development Tools' -y
   ```

1. Deaktivieren Sie die `nouveau`-Open-Source-Treiber.

   1. Installieren Sie die erforderlichen Dienstprogramme und das Kernel-Header-Paket für Ihre derzeit ausgeführte Kernel-Version.

      ```
      $ sudo yum install -y wget kernel-devel-$(uname -r) kernel-headers-$(uname -r)
      ```

   1. Fügen Sie `nouveau` der Verweigerungsliste `/etc/modprobe.d/blacklist.conf ` hinzu.

      ```
      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf
      blacklist vga16fb
      blacklist nouveau
      blacklist rivafb
      blacklist nvidiafb
      blacklist rivatv
      EOF
      ```

   1. Hängen Sie `GRUB_CMDLINE_LINUX="rdblacklist=nouveau"` an die `grub`-Datei an und erstellen Sie die Grub-Konfiguration neu.

      ```
      $ echo 'GRUB_CMDLINE_LINUX="rdblacklist=nouveau"' | sudo tee -a /etc/default/grub \
      && sudo grub2-mkconfig -o /boot/grub2/grub.cfg
      ```

1. Starten Sie die Instance neu und stellen Sie die Verbindung zur Instance wieder her.

1. Vorbereiten der erforderlichen Repositorys

   1. Aktivieren Sie das EPEL Repository und legen Sie die Distribution auf `rhel7` fest.

      ```
      $ sudo amazon-linux-extras install epel \
      && distribution='rhel7'
      ```

   1. Richten Sie das CUDA Netzwerk-Repository ein und aktualisieren Sie den Repository-Cache.

      ```
      $ ARCH=$( /bin/arch ) \
      && sudo yum-config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/$distribution/${ARCH}/cuda-$distribution.repo \
      && sudo yum clean expire-cache
      ```

   1. (*Nur Kernel-Version 5.10*) Führen Sie diese Schritte nur aus, wenn Sie Amazon Linux 2 mit Kernel-Version 5.10 nutzen. Überspringen Sie dieses Schritte, wenn Sie Amazon Linux 2 mit Kernel-Version 4.12 verwenden. Um Ihre Kernel-Version zu überprüfen, führen Sie **uname -r** aus.

      1. Erstellen Sie die Nvidia-Treiberkonfigurationsdatei mit dem Namen `/etc/dkms/nvidia.conf`.

         ```
         $ sudo mkdir -p /etc/dkms \
         && echo "MAKE[0]=\"'make' -j2 module SYSSRC=\${kernel_source_dir} IGNORE_XEN_PRESENCE=1 IGNORE_PREEMPT_RT_PRESENCE=1 IGNORE_CC_MISMATCH=1 CC=/usr/bin/gcc10-gcc\"" | sudo tee /etc/dkms/nvidia.conf
         ```

      1. (Nur `p4d.24xlarge` und `p5.48xlarge`) Kopieren Sie die Konfigurationsdatei des Nvidia-Treibers.

         ```
         $ sudo cp /etc/dkms/nvidia.conf /etc/dkms/nvidia-open.conf
         ```

1. Installieren Sie die Nvidia-GPU-Treiber, das NVIDIA CUDA-Toolkit und cuDNN.

   ```
   $ sudo yum clean all \
   && sudo yum -y install nvidia-driver-latest-dkms \
   && sudo yum -y install cuda-drivers-fabricmanager cuda libcudnn8-devel
   ```

1. Starten Sie die Instance neu und stellen Sie die Verbindung zur Instance wieder her.

1. (Nur `p4d.24xlarge` und `p5.48xlarge`) Starten Sie den NVIDIA Fabric Manager Service und stellen Sie sicher, dass er beim Start der Instance automatisch gestartet wird. Nvidia Fabric Manager ist für das NV Switch Management erforderlich.

   ```
   $ sudo systemctl enable nvidia-fabricmanager && sudo systemctl start nvidia-fabricmanager
   ```

1. Stellen Sie sicher, dass die CUDA-Pfade bei jedem Start der Instance festgelegt werden.
   + Fügen Sie für *Bash*-Shells die folgenden Anweisungen zu `/home/username/.bashrc` und `/home/username/.bash_profile` hinzu. 

     ```
     export PATH=/usr/local/cuda/bin:$PATH
     export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```
   + Fügen Sie für *tcsh*-Shells die folgenden Anweisungen zu `/home/username/.cshrc` hinzu.

     ```
     setenv PATH=/usr/local/cuda/bin:$PATH
     setenv LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```

1. Führen Sie den folgenden Befehl aus, um zu bestätigen, dass die Nvidia GPU-Treiber funktionieren.

   ```
   $ nvidia-smi -q | head
   ```

   Der Befehl sollte Informationen über die Nvidia- GPUs, Nvidia-GPU-Treiber und das Nvidia CUDA-Toolkit zurückgeben.

------
#### [ Ubuntu 24.04 and Ubuntu 22.04 ]

**Installieren der Nvidia GPU-Treiber, des Nvidia-CUDA-Toolkits und cuDNN**

1. Um sicherzustellen, dass alle Ihre Softwarepakete aktuell sind, führen Sie ein schnelles Softwareupdate auf Ihrer Instance aus.

   ```
   $ sudo apt-get update && sudo apt-get upgrade -y
   ```

1. Installieren Sie die Dienstprogramme, die zum Installieren der Nvidia GPU-Treiber und des Nvidia CUDA-Toolkits benötigt werden.

   ```
   $ sudo apt-get update && sudo apt-get install build-essential -y
   ```

1. Um den Nvidia GPU-Treiber verwenden zu können, müssen Sie zunächst die `nouveau`-Open-Source-Treiber deaktivieren.

   1. Installieren Sie die erforderlichen Dienstprogramme und das Kernel-Header-Paket für Ihre derzeit ausgeführte Kernel-Version.

      ```
      $ sudo apt-get install -y gcc make linux-headers-$(uname -r)
      ```

   1. Fügen Sie `nouveau` der Verweigerungsliste `/etc/modprobe.d/blacklist.conf ` hinzu.

      ```
      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf
      blacklist vga16fb
      blacklist nouveau
      blacklist rivafb
      blacklist nvidiafb
      blacklist rivatv
      EOF
      ```

   1. Öffnen Sie `/etc/default/grub` mit dem bevorzugten Texteditor und fügen Sie Folgendes hinzu. 

      ```
      GRUB_CMDLINE_LINUX="rdblacklist=nouveau"
      ```

   1. Erstellen Sie die neue Grub-Konfiguration.

      ```
      $ sudo update-grub
      ```

1. Starten Sie die Instance neu und stellen Sie die Verbindung zur Instance wieder her.

1. Fügen Sie das CUDA-Repository hinzu und installieren Sie die Nvidia-GPU-Treiber, das NVIDIA-CUDA-Toolkit und cuDNN.
   + `p3dn.24xlarge`

     ```
     $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub \
     && wget -O /tmp/deeplearning.deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb \
     && sudo dpkg -i /tmp/deeplearning.deb \
     && wget -O /tmp/cuda.pin https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \
     && sudo mv /tmp/cuda.pin /etc/apt/preferences.d/cuda-repository-pin-600 \
     && sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub \
     && sudo add-apt-repository 'deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /' \
     && sudo apt update \
     && sudo apt install nvidia-dkms-535 \
     && sudo apt install -o Dpkg::Options::='--force-overwrite' cuda-drivers-535 cuda-toolkit-12-3 libcudnn8 libcudnn8-dev -y
     ```
   + `p4d.24xlarge` und `p5.48xlarge`

     ```
     $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub \
     && wget -O /tmp/deeplearning.deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb \
     && sudo dpkg -i /tmp/deeplearning.deb \
     && wget -O /tmp/cuda.pin https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \
     && sudo mv /tmp/cuda.pin /etc/apt/preferences.d/cuda-repository-pin-600 \
     && sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub \
     && sudo add-apt-repository 'deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /' \
     && sudo apt update \
     && sudo apt install nvidia-kernel-open-535 \
     && sudo apt install -o Dpkg::Options::='--force-overwrite' cuda-drivers-535 cuda-toolkit-12-3 libcudnn8 libcudnn8-dev -y
     ```

1. Starten Sie die Instance neu und stellen Sie die Verbindung zur Instance wieder her.

1. (Nur `p4d.24xlarge` und `p5.48xlarge`) Installieren Sie den NVIDIA Fabric Manager.

   1. Sie müssen die Version von Nvidia Fabric Manager installieren, die mit der Version des Nvidia-Kernelmoduls übereinstimmt, die Sie im vorherigen Schritt installiert haben.

      Führen Sie den folgenden Befehl aus, um die Version des Nvidia Kernelmoduls zu bestimmen.

      ```
      $ cat /proc/driver/nvidia/version | grep "Kernel Module"
      ```

      Es folgt eine Beispielausgabe.

      ```
      NVRM version: NVIDIA UNIX x86_64 Kernel Module  450.42.01  Tue Jun 15 21:26:37 UTC 2021
      ```

      Im obigen Beispiel wurde die Hauptversion `450` des Kernel-Moduls installiert. Dies bedeutet, dass Sie die Nvidia Fabric Manager-Version `450` installieren müssen.

   1. Installieren Sie den Nvidia Fabric Manager. Führen Sie den folgenden Befehl aus, und geben Sie die im vorherigen Schritt angegebene Hauptversion an.

      ```
      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-major_version_number
      ```

      Zum Beispiel, wenn die Hauptversion `450` des Kernelmoduls installiert wurde, verwenden Sie den folgenden Befehl, um die passende Version von Nvidia Fabric Manager zu installieren.

      ```
      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-450
      ```

   1. Starten Sie den Dienst und stellen Sie sicher, dass er beim Start der Instance automatisch gestartet wird. Nvidia Fabric Manager ist für das NV Switch Management erforderlich.

      ```
      $ sudo systemctl start nvidia-fabricmanager && sudo systemctl enable nvidia-fabricmanager
      ```

1. Stellen Sie sicher, dass die CUDA-Pfade bei jedem Start der Instance festgelegt werden.
   + Fügen Sie für *Bash*-Shells die folgenden Anweisungen zu `/home/username/.bashrc` und `/home/username/.bash_profile` hinzu. 

     ```
     export PATH=/usr/local/cuda/bin:$PATH
     export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```
   + Fügen Sie für *tcsh*-Shells die folgenden Anweisungen zu `/home/username/.cshrc` hinzu.

     ```
     setenv PATH=/usr/local/cuda/bin:$PATH
     setenv LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```

1. Führen Sie den folgenden Befehl aus, um zu bestätigen, dass die Nvidia GPU-Treiber funktionieren.

   ```
   $ nvidia-smi -q | head
   ```

   Der Befehl sollte Informationen zu den Nvidia- GPUs, Nvidia-GPU-Treibern und dem Nvidia CUDA-Toolkit zurückgeben.

------

## Schritt 4: Installieren GDRCopy
<a name="nccl-start-base-gdrcopy"></a>

Installieren Sie GDRCopy , um die Leistung von Libfabric zu verbessern. Weitere Informationen zu GDRCopy finden Sie im [GDRCopy Repository](https://github.com/NVIDIA/gdrcopy).

------
#### [ Amazon Linux 2023 and Amazon Linux 2 ]

**Um zu installieren GDRCopy**

1. Installieren Sie die erforderlichen Abhängigkeiten.

   ```
   $ sudo yum -y install dkms rpm-build make check check-devel subunit subunit-devel
   ```

1. Laden Sie das Paket herunter und GDRCopy entpacken Sie es.

   ```
   $ wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.4.tar.gz \
   && tar xf v2.4.tar.gz ; cd gdrcopy-2.4/packages
   ```

1. Erstellen Sie das GDRCopy RPM-Paket.

   ```
   $ CUDA=/usr/local/cuda ./build-rpm-packages.sh
   ```

1. Installieren Sie das GDRCopy RPM-Paket.

   ```
   $ sudo rpm -Uvh gdrcopy-kmod-2.4-1dkms.noarch*.rpm \
   && sudo rpm -Uvh gdrcopy-2.4-1.x86_64*.rpm \
   && sudo rpm -Uvh gdrcopy-devel-2.4-1.noarch*.rpm
   ```

------
#### [ Ubuntu 24.04 and Ubuntu 22.04 ]

**Um zu installieren GDRCopy**

1. Installieren Sie die erforderlichen Abhängigkeiten.

   ```
   $ sudo apt -y install build-essential devscripts debhelper check libsubunit-dev fakeroot pkg-config dkms
   ```

1. Laden Sie das Paket herunter und GDRCopy entpacken Sie es.

   ```
   $ wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.4.tar.gz \
   && tar xf v2.4.tar.gz \
   && cd gdrcopy-2.4/packages
   ```

1. Erstellen Sie das GDRCopy RPM-Paket.

   ```
   $ CUDA=/usr/local/cuda ./build-deb-packages.sh
   ```

1. Installieren Sie das GDRCopy RPM-Paket.

   ```
   $ sudo dpkg -i gdrdrv-dkms_2.4-1_amd64.*.deb \
   && sudo dpkg -i libgdrapi_2.4-1_amd64.*.deb \
   && sudo dpkg -i gdrcopy-tests_2.4-1_amd64.*.deb \
   && sudo dpkg -i gdrcopy_2.4-1_amd64.*.deb
   ```

------

## Schritt 5: Installieren der EFA-Software
<a name="nccl-start-base-enable"></a>

Installieren Sie den EFA-fähigen Kernel, die EFA-Treiber, Libfabric, aws-ofi-nccl das Plugin und den Open MPI-Stack, der für die Unterstützung von EFA auf Ihrer Instance erforderlich ist.

**So installieren Sie die EFA-Software**

1. Stellen Sie eine Verbindung zu der Instance her, die Sie gestartet haben. Weitere Informationen finden Sie unter [Herstellen einer Verbindung zu Ihrer Linux-Instance mit SSH](connect-to-linux-instance.md).

1. Laden Sie die EFA-Software-Installationsdateien herunter. Die Software-Installationsdateien sind in einer komprimierten Tarball-Datei (`.tar.gz`) verpackt. Laden Sie die neueste *stabile* Version mit dem folgenden Befehl herunter.

   Sie erhalten die neueste Version auch, indem Sie anstelle der Versionsnummer im vorangegangenen Befehl `latest` eingeben.

   ```
   $ curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz
   ```

1. (*Optional*) Überprüfen Sie die Authentizität und Integrität der EFA-Tarball-Datei (`.tar.gz`).

   Diese Vorgehensweise wird empfohlen, um die Identität des Software-Publishers zu überprüfen und sicherzustellen, dass die Datei seit ihrer Veröffentlichung nicht verändert oder beschädigt wurde. Wenn Sie die Tarball-Datei nicht überprüfen möchten, überspringen Sie diesen Schritt.
**Anmerkung**  
Falls Sie es vorziehen, die Tarball-Datei stattdessen mit einer Prüfsumme oder zu verifizieren, finden Sie weitere Informationen unter. MD5 SHA256 [Überprüfen des EFA-Installationsprogramms mithilfe einer Prüfsumme](efa-verify.md)

   1. Laden Sie den öffentlichen GPG-Schlüssel herunter und importieren Sie ihn in Ihren Schlüsselbund.

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer.key && gpg --import aws-efa-installer.key
      ```

      Der Befehl sollte einen Schlüsselwert zurückgeben. Notieren Sie sich den Schlüsselwert. Sie benötigen ihn im nächsten Schritt.

   1. Überprüfen Sie den Fingerabdruck des GPG-Schlüssels. Führen Sie den folgenden Befehl aus und geben den Schlüsselwert aus dem vorherigen Schritt an.

      ```
      $ gpg --fingerprint key_value
      ```

      Der Befehl sollte einen Fingerabdruck zurückgeben, der mit `4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCC` identisch ist. Wenn der Fingerabdruck nicht übereinstimmt, führen Sie das EFA-Installationsskript nicht aus und wenden Sie sich an den Support.

   1. Laden Sie die Signaturdatei herunter und überprüfen Sie die Signatur der EFA-Tarball-Datei.

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.47.0.tar.gz.sig
      ```

      Das folgende Beispiel zeigt eine Ausgabe.

      ```
      gpg: Signature made Wed 29 Jul 2020 12:50:13 AM UTC using RSA key ID DD2D3CCC
      gpg: Good signature from "Amazon EC2 EFA <ec2-efa-maintainers@amazon.com>"
      gpg: WARNING: This key is not certified with a trusted signature!
      gpg:          There is no indication that the signature belongs to the owner.
      Primary key fingerprint: 4E90 91BC BB97 A96B 26B1  5E59 A054 80B1 DD2D 3CCC
      ```

      Wenn das Ergebnis `Good signature` enthält und der Fingerabdruck mit dem Fingerabdruck übereinstimmt, der im vorherigen Schritt zurückgegeben wurde, fahren Sie mit dem nächsten Schritt fort. Wenn nicht, führen Sie das EFA-Installationsskript nicht aus und wenden Sie sich an den Support.

1. Extrahieren Sie die Daten aus der komprimierten `.tar.gz`-Datei und wechseln Sie in das extrahierte Verzeichnis.

   ```
   $ tar -xf aws-efa-installer-1.47.0.tar.gz && cd aws-efa-installer
   ```

1. Führen Sie das EFA-Software-Installationsskript aus.
**Anmerkung**  
Ab EFA 1.30.0 sind sowohl Open MPI 4.1 als auch Open MPI 5 standardmäßig installiert. Sofern Sie Open MPI 5 nicht benötigen, empfehlen wir, nur Open MPI 4.1 zu installieren. Mit dem folgenden Befehl wird nur Open MPI 4.1 installiert. Wenn Sie Open MPI 4.1 und Open MPI 5 installieren möchten, entfernen Sie es. `--mpi=openmpi4`

   ```
   $ sudo ./efa_installer.sh -y --mpi=openmpi4
   ```

   **Libfabric** ist im `/opt/amazon/efa`-Verzeichnis installiert. Das **aws-ofi-nccl Plugin** ist im Verzeichnis installiert. `/opt/amazon/ofi-nccl` **Open MPI** ist im `/opt/amazon/openmpi`-Verzeichnis installiert.

1. Wenn das EFA-Installationsprogramm Sie auffordert, die Instance neu zu starten, tun Sie dies und stellen Sie dann erneut eine Verbindung mit der Instance her. Melden Sie sich andernfalls von der Instance ab und wieder an, um die Installation abzuschließen.

1. Überprüfen Sie, ob die EFA-Softwarekomponenten erfolgreich installiert wurden.

   ```
   $ fi_info -p efa -t FI_EP_RDM
   ```

   Der Befehl muss Informationen zu den Libfabric-EFA-Schnittstellen zurückgeben. Das folgende Beispiel zeigt die Befehlsausgabe.
   + `p3dn.24xlarge` mit einer einzigen Netzwerkschnittstelle

     ```
     provider: efa
     fabric: EFA-fe80::94:3dff:fe89:1b70
     domain: efa_0-rdm
     version: 2.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     ```
   + `p4d.24xlarge` und `p5.48xlarge` mit mehreren Netzwerkschnittstellen

     ```
     provider: efa
     fabric: EFA-fe80::c6e:8fff:fef6:e7ff
     domain: efa_0-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::c34:3eff:feb2:3c35
     domain: efa_1-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::c0f:7bff:fe68:a775
     domain: efa_2-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::ca7:b0ff:fea6:5e99
     domain: efa_3-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     ```

## Schritt 6: Installieren der NCCL
<a name="nccl-start-base-nccl"></a>

Installieren Sie die NCCL Weitere Informationen zur NCCL finden Sie im [NCCL-Repository](https://github.com/NVIDIA/nccl).

**So installieren Sie die NCCL**

1. Navigieren Sie zum Verzeichnis `/opt`.

   ```
   $ cd /opt
   ```

1. Klonen Sie das offizielle NCCL-Repository in die Instance und navigieren Sie zum lokal geklonten Repository.

   ```
   $ sudo git clone https://github.com/NVIDIA/nccl.git -b v2.23.4-1 && cd nccl
   ```

1. Erstellen und installieren Sie die NCCL und geben Sie das CUDA-Installationsverzeichnis an.

   ```
   $ sudo make -j src.build CUDA_HOME=/usr/local/cuda
   ```

## Schritt 7: Installieren der NCCL-Tests
<a name="nccl-start-base-tests"></a>

Installieren Sie die NCCL-Tests. Mit den NCCL-Tests können Sie bestätigen, dass die NCCL richtig installiert wurde und wie erwartet funktioniert. Weitere Informationen zu den NCCL-Tests finden Sie unter [nccl-tests repository](https://github.com/NVIDIA/nccl-tests).

**So installieren Sie die NCCL-Tests**

1. Navigieren Sie zum Stammverzeichnis.

   ```
   $ cd $HOME
   ```

1. Klonen Sie das offizielle nccl-tests-Repository in die Instance und navigieren Sie zum lokal geklonten Repository.

   ```
   $ git clone https://github.com/NVIDIA/nccl-tests.git && cd nccl-tests
   ```

1. Fügen Sie das libfabric-Verzeichnis in die Variable `LD_LIBRARY_PATH` ein. 
   + Amazon Linux 2023 und Amazon Linux 2

     ```
     $ export LD_LIBRARY_PATH=/opt/amazon/efa/lib64:$LD_LIBRARY_PATH
     ```
   + Ubuntu 24.04 und Ubuntu 22.04

     ```
     $ export LD_LIBRARY_PATH=/opt/amazon/efa/lib:$LD_LIBRARY_PATH
     ```

1. Installieren Sie die NCCL-Tests und geben Sie die Installationsverzeichnisse für MPI, NCCL und CUDA an.

   ```
   $ make MPI=1 MPI_HOME=/opt/amazon/openmpi NCCL_HOME=/opt/nccl/build CUDA_HOME=/usr/local/cuda
   ```

## Schritt 8: Testen der EFA- und NCCL-Konfiguration
<a name="nccl-start-base-test"></a>

Führen Sie einen Test durch, um sicherzustellen, dass Ihre temporäre Instance richtig für EFA und NCCL konfiguriert ist. 

**So testen Sie EFA- und NCCL-Konfiguration**

1. Erstellen Sie eine Host-Datei, die die Hosts angibt, auf denen die Tests ausgeführt werden sollen. Der folgende Befehl erstellt eine Host-Datei namens `my-hosts`, die eine Referenz auf die Instance selbst enthält.

------
#### [ IMDSv2 ]

   ```
   [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
   && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/local-ipv4 >> my-hosts
   ```

------
#### [ IMDSv1 ]

   ```
   [ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/local-ipv4 >> my-hosts
   ```

------

1. Führen Sie den Test aus und geben Sie die Host-Datei (`--hostfile`) und die Anzahl der GPUs zu verwendenden Dateien () an. `-n` Der folgende Befehl führt den `all_reduce_perf` Test auf 8 GPUs auf der Instanz selbst aus und gibt die folgenden Umgebungsvariablen an.
   + `FI_EFA_USE_DEVICE_RDMA=1` – (nur `p4d.24xlarge`) verwendet die RDMA-Funktion des Geräts für einseitige und zweiseitige Übertragungen.
   + `NCCL_DEBUG=INFO`: ermöglicht eine detaillierte Debugging-Ausgabe. Sie können auch `VERSION` angeben, damit nur die NCCL-Version am Anfang des Tests ausgegeben wird oder `WARN`, damit nur Fehlermeldungen ausgegeben werden.

   Weitere Informationen zu den Argumenten für NCCL-Tests finden Sie unter [NCCL Tests README](https://github.com/NVIDIA/nccl-tests/blob/master/README.md) im offiziellen nccl-tests-Repository.
   + `p3dn.24xlarge`

     ```
     $ /opt/amazon/openmpi/bin/mpirun \
     -x LD_LIBRARY_PATH=/opt/nccl/build/lib:/usr/local/cuda/lib64:/opt/amazon/efa/lib:/opt/amazon/openmpi/lib:/opt/amazon/ofi-nccl/lib:$LD_LIBRARY_PATH \
     -x NCCL_DEBUG=INFO \
     --hostfile my-hosts -n 8 -N 8 \
     --mca pml ^cm --mca btl tcp,self --mca btl_tcp_if_exclude lo,docker0 --bind-to none \
     $HOME/nccl-tests/build/all_reduce_perf -b 8 -e 1G -f 2 -g 1 -c 1 -n 100
     ```
   + `p4d.24xlarge` und `p5.48xlarge`

     ```
     $ /opt/amazon/openmpi/bin/mpirun \
     -x FI_EFA_USE_DEVICE_RDMA=1 \
     -x LD_LIBRARY_PATH=/opt/nccl/build/lib:/usr/local/cuda/lib64:/opt/amazon/efa/lib:/opt/amazon/openmpi/lib:/opt/amazon/ofi-nccl/lib:$LD_LIBRARY_PATH \
     -x NCCL_DEBUG=INFO \
     --hostfile my-hosts -n 8 -N 8 \
     --mca pml ^cm --mca btl tcp,self --mca btl_tcp_if_exclude lo,docker0 --bind-to none \
     $HOME/nccl-tests/build/all_reduce_perf -b 8 -e 1G -f 2 -g 1 -c 1 -n 100
     ```

1. Sie können bestätigen, dass EFA als zugrunde liegender Anbieter für NCCL aktiv ist, wenn das `NCCL_DEBUG`-Protokoll gedruckt wird.

   ```
   ip-192-168-2-54:14:14 [0] NCCL INFO NET/OFI Selected Provider is efa*
   ```

   Die folgenden zusätzlichen Informationen werden angezeigt, wenn Sie eine `p4d.24xlarge`-Instance verwenden.

   ```
   ip-192-168-2-54:14:14 [0] NCCL INFO NET/OFI Running on P4d platform, Setting NCCL_TOPO_FILE environment variable to /home/ec2-user/install/plugin/share/aws-ofi-nccl/xml/p4d-24xl-topo.xml
   ```

## Schritt 9: Installieren der Machine-Learning-Anwendungen
<a name="nccl-start-base-app"></a>

Installieren Sie die Machine-Learning-Anwendungen auf der temporären Instance. Der Installationsvorgang variiert je nach Machine-Learning-Anwendung. Weitere Informationen zum Installieren von Software auf Ihrer Linux-Instance finden Sie unter [Verwalten von Software auf einer Amazon-Linux-2-Instance](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html).

**Anmerkung**  
In der Dokumentation Ihrer Machine-Learning-Anwendung finden Sie Installationsanleitungen.

## Schritt 10: Erstellen eines EFA- und NCCL-konformen AMI
<a name="nccl-start-base-ami"></a>

Nachdem Sie die erforderlichen Softwarekomponenten installiert haben, erstellen Sie ein AMI, das Sie erneut verwenden können, um Ihre EFA-fähigen Instances zu starten.

**So erstellen Sie ein AMI aus Ihrer temporären Instance:**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Instances** aus.

1. Wählen Sie die temporäre Instance aus, die Sie erstellt haben, und wählen Sie anschließend **Actions** (Aktionen), **Image** und **Create Image** (Image erstellen) aus.

1. Gehen Sie bei **Create Image** (Image erstellen) wie folgt vor:

   1. Geben Sie unter **Image name** (Image-Name) einen beschreibenden Namen für das AMI ein.

   1. (Optional:) Geben Sie bei **Image description** (Image-Beschreibung) eine kurze Beschreibung des Zwecks des AMI ein.

   1. Wählen Sie **Create Image (Image erstellen)** aus.

1. Wählen Sie im Navigationsbereich **AMIs** aus.

1. Suchen Sie das AMI, das Sie erstellt haben, in der Liste. Warten Sie, bis der Status von `pending` zu `available` wechselt, bevor Sie mit dem nächsten Schritt fortfahren.

## Schritt 11: Beenden der temporären Instance
<a name="nccl-start-base-terminate"></a>

An diesem Punkt benötigen Sie die temporäre Instance, die Sie gestartet haben, nicht mehr. Sie können die Instance beenden, damit keine weiteren Kosten dafür anfallen.

**So beenden Sie die temporäre Instance:**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Instances** aus.

1. Wählen Sie die temporäre instance aus, die Sie erstellt haben, und wählen Sie anschließend **Actions** (Aktionen), **Instance state** (Instance-Zustand) und **Terminate instance** (Instance beenden) aus.

1. Wählen Sie **Terminate (Kündigen)** aus, wenn Sie zur Bestätigung aufgefordert werden.

## Schritt 12: Starten von EFA- und NCCL-konformen Instances in einer Cluster Placement-Gruppe
<a name="nccl-start-base-cluster"></a>

Starten Sie die EFA- und NCCL-fähigen Instances in einer Cluster-Placement-Gruppe, indem Sie das EFA-fähige AMI und die EFA-fähige Sicherheitsgruppe verwenden, die Sie zuvor erstellt haben.

**Anmerkung**  
Es ist keine absolute Voraussetzung, Ihre EFA-aktivierten Instances in einer Cluster-Platzierungsgruppe zu starten. Wir empfehlen allerdings, Ihre EFA-Instances in einer Cluster-Placement-Gruppe zu starten, da die Instances dadurch in einer Gruppe mit niedriger Latenz in einer einzelnen Availability Zone gestartet werden.
Um die Verfügbarkeit von Kapazitäten sicherzustellen, wenn Sie die Instances Ihres Clusters skalieren, können Sie eine Kapazitätsreservierung für Ihre Cluster-Placement-Gruppe erstellen. Weitere Informationen finden Sie unter [Kapazitätsreservierungen mit Cluster-Placement-Gruppen verwenden](cr-cpg.md).

------
#### [ New console ]

**So starten Sie eine temporäre Instance**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Instances** und dann **Instances starten** aus, um den Launch Instance Wizard zu öffnen.

1. (*Optional*) Geben Sie im Bereich **Name and tags** (Name und Tags) einen Namen für die Instance an, z. B. `EFA-instance`. Der Name wird der Instance als Ressourcen-Tag (`Name=EFA-instance`) zugewiesen.

1. Wählen Sie im Abschnitt **Anwendungs- und Betriebssystemimages** die Option **My AMIs** und dann das AMI aus, das Sie im vorherigen Schritt erstellt haben.

1. Wählen Sie im Bereich **Instance type** (Instance-Typ) entweder `p3dn.24xlarge` oder `p4d.24xlarge` aus.

1. Wählen Sie im Bereich **Key pair** (Schlüsselpaar) das Schlüsselpaar aus, das für die Instance verwendet werden soll.

1. Wählen Sie im Bereich **Network settings** (Netzwerkeinstellungen) **Edit** (Bearbeiten) aus und führen Sie dann Folgendes aus:

   1. Wählen Sie unter **Subnetz** das Subnetz aus, in dem die Instance gestartet werden soll. Wenn Sie kein Subnetz auswählen, können Sie die Instance nicht für EFA aktivieren.

   1. Wählen Sie bei **Firewall (security groups)** Firewall (Sicherheitsgruppen) **Select existing security group** (Vorhandene Sicherheitsgruppe auswählen) und dann die Sicherheitsgruppe aus, die Sie im vorherigen Schritt erstellt haben.

   1. Erweitern Sie den Abschnitt **Erweiterte Netzwerkkonfiguration**.

      Wählen Sie für **Netzwerkschnittstelle 1** **Netzwerkkartenindex = 0**, **Geräteindex = 0** und **Schnittstellentyp = EFA mit ENA** aus.

      (Optional) Wenn Sie einen Instance-Typ mit mehreren Karten verwenden, z. B. `p4d.24xlarge` oder `p5.48xlarge`, wählen Sie für jede weitere erforderliche Netzwerkschnittstelle die Option **Netzwerkschnittstelle hinzufügen**, wählen Sie für **Netzwerkkartenindex** den nächsten ungenutzten Index aus und wählen Sie dann **Geräteindex = 1** und **Schnittstellentyp = EFA mit ENA** oder **Nur-EFA** aus.

1. (*Optional*) Konfigurieren Sie im Bereich **Storage** (Speicher) die Volumes nach Bedarf.

1. Wählen Sie im Bereich **Advanced details** (Erweiterte Details) bei **Placement group name** (Placement-Gruppen-Name) die Cluster-Placement-Gruppe aus, in der die Instance gestartet werden soll. Wenn Sie eine neue Cluster-Placement-Gruppe erstellen müssen, wählen Sie **Create new placement group** (Neue Placement-Gruppe erstellen).

1. Geben Sie im Bereich **Summary** (Zusammenfassung) rechts bei **Number of instances** (Anzahl der Instances) die Anzahl EFA-fähiger Instances ein, die Sie starten möchten, und wählen Sie dann **Launch instance** (Instance starten).

------
#### [ Old console ]

**So starten Sie EFA- und NCCL-fähige Instances in einer Cluster-Placement-Gruppe:**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie **Launch Instance** aus.

1. **Wählen Sie auf der Seite Choose an AMI** die Option **My** aus AMIs, suchen Sie das AMI, das Sie zuvor erstellt haben, und wählen Sie dann **Select aus**.

1. Wählen Sie auf der Seite **Choose an Instance Type** (Instance-Typ auswählen) die Option **p3dn.24xlarge** und dann **Next: Configure Instance Details** (Weiter: Instance-Details konfigurieren) aus.

1. Führen Sie auf der Seite **Configure Instance Details (Instance-Details konfigurieren)** die folgenden Schritte aus:

   1. Geben Sie bei **Number of instances** (Anzahl der Instances) die Anzahl der EFA- und NCCL-fähigen Instances ein, die gestartet werden sollen.

   1. Wählen Sie für **Network (Netzwerk)** und **Subnet (Subnetz)** die VPC und das Subnetz an, in das Sie die Instances starten möchten.

   1. Wählen Sie für **Placement group (Placement-Gruppe)** die Option **Add instance to placement group** (Instance der Placement-Gruppe hinzufügen) aus.

   1. Wählen Sie bei **Placement group name** (Name der Placement-Gruppe) die Option **Add to a new placement group** (Zu neuer Placement-Gruppe hinzufügen) aus und geben Sie dann einen beschreibenden Namen für die Placement-Gruppe ein. Wählen Sie dann bei **Placement group strategy** (Strategie für Placement-Gruppe) **cluster** aus.

   1. Wählen Sie für **EFA** **Enable (Aktivieren)** aus.

   1. Wählen Sie im Abschnitt **Network Interfaces (Netzwerkschnittstellen** für das Gerät **eth0** die Option **New network interface (Neue Netzwerkschnittstelle)** aus. Sie können optional eine primäre IPv4 Adresse und eine oder mehrere sekundäre IPv4 Adressen angeben. Wenn Sie die Instance in einem Subnetz starten, dem ein IPv6 CIDR-Block zugeordnet ist, können Sie optional eine primäre IPv6 Adresse und eine oder mehrere sekundäre IPv6 Adressen angeben.

   1. Wählen Sie **Next: Add Storage** aus.

1. Geben Sie auf der Seite **Add Storage** (Speicher hinzufügen) die Volumes an, die an die Instances angefügt werden sollen, ergänzend zu den Volumes, die vom AMI angegeben werden (z. B. der Root-Gerät-Volume). Wählen Sie dann **Next: Add Tags (Weiter: Tags (Markierungen) hinzufügen)** aus.

1. Geben Sie auf der Seite **Add Tags (Tags (Markierungen) hinzufügen)** Tags (Markierungen) für die Instances an, z. B. einen benutzerfreundlichen Namen, und wählen Sie anschließend **Next: Configure Security Group (Weiter: Sicherheitsgruppe konfigurieren)**.

1. Wählen Sie auf der Seite **Configure Security Group** (Sicherheitsgruppe konfigurieren) bei **Assign a security group** (Sicherheitsgruppe zuweisen) die Option **Select an existing security group** (Vorhandene Sicherheitsgruppe auswählen) und dann die Sicherheitsgruppe aus, die Sie zuvor erstellt haben.

1. Klicken Sie auf **Review and Launch**.

1. Überprüfen Sie auf der Seite **Review Instance Launch (Instance-Start überprüfen)** Ihre Einstellungen und wählen Sie anschließend **Launch (Starten)** aus, um ein Schlüsselpaar auszuwählen und Ihre Instance zu starten.

------

## Schritt 13: Aktivieren von passwortlosem SSH
<a name="nccl-start-base-passwordless"></a>

Damit Ihre Anwendungen auf allen Instances in Ihrem Cluster ausgeführt werden können, müssen Sie passwortlosen SSH-Zugriff vom Führungsknoten auf die Mitgliedsknoten aktivieren. Der Führungsknoten ist die Instance, von der aus Sie die Anwendungen ausführen. Die verbleibenden Instances im Cluster sind die Mitgliedsknoten.

**So aktivieren Sie passwortloses SSH zwischen den Instances im Cluster:**

1. Wählen Sie eine Instance im Cluster als Führungsknoten aus und stellen Sie eine Verbindung zu ihr her.

1. Deaktivieren Sie `strictHostKeyChecking` und aktivieren Sie `ForwardAgent` für den Führungsknoten. Öffnen Sie `~/.ssh/config` mit dem bevorzugten Texteditor und fügen Sie Folgendes hinzu.

   ```
   Host *
       ForwardAgent yes
   Host *
       StrictHostKeyChecking no
   ```

1. Generieren Sie ein RSA-Schlüsselpaar.

   ```
   $ ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
   ```

   Das Schlüsselpaar wird im `$HOME/.ssh/`-Verzeichnis erstellt.

1. Ändern Sie die Berechtigungen des privaten Schlüssels auf dem Führungsknoten.

   ```
   $ chmod 600 ~/.ssh/id_rsa
   chmod 600 ~/.ssh/config
   ```

1. Öffnen Sie `~/.ssh/id_rsa.pub` mit Ihrem bevorzugten Texteditor und kopieren Sie den Schlüssel.

1. Gehen Sie für jeden Mitgliedsknoten im Cluster wie folgt vor:

   1. Stellen Sie eine Verbindung mit der Instance her.

   1. Öffnen Sie `~/.ssh/authorized_keys` mit Ihrem bevorzugten Texteditor und fügen Sie den öffentlichen Schlüssel hinzu, den Sie zuvor kopiert haben.

1. Um zu testen, ob das passwortlose SSH wie erwartet funktioniert, stellen Sie eine Verbindung zum Leaderknoten her und führen Sie den folgenden Befehl aus.

   ```
   $ ssh member_node_private_ip
   ```

   Sie sollten eine Verbindung zum Mitgliedsknoten herstellen können, ohne zur Eingabe eines Schlüssels oder Passworts aufgefordert zu werden.

# Erste Schritte mit EFA und NIXL für Inferenz-Workloads auf Amazon EC2
<a name="efa-start-nixl"></a>

Die NVIDIA Inference Xfer Library (NIXL) ist eine Kommunikationsbibliothek mit hohem Durchsatz und niedriger Latenz, die speziell für disaggregierte Inferenz-Workloads entwickelt wurde. NIXL kann zusammen mit EFA und Libfabric verwendet werden, um die KV-Cache-Übertragung zwischen Prefill- und Decodierungsknoten zu unterstützen und ermöglicht eine effiziente KV-Cache-Bewegung zwischen verschiedenen Speicherebenen. [Weitere Informationen finden Sie auf der NIXL-Website.](https://github.com/ai-dynamo/nixl)

**Voraussetzungen**
+ Nur Ubuntu 24.04 und Ubuntu 22.04 Base werden unterstützt. AMIs 
+ EFA unterstützt nur NIXL 1.0.0 und höher.

**Topics**

## Schritt 1: Vorbereiten einer EFA-aktivierten Sicherheitsgruppe
<a name="nixl-start-base-setup"></a>

Ein EFA erfordert eine Sicherheitsgruppe, die allen ein- und ausgehenden Datenverkehr von und zur Sicherheitsgruppe zulässt. Mit dem folgenden Verfahren wird eine Sicherheitsgruppe erstellt, die allen eingehenden und ausgehenden Datenverkehr zu und von sich selbst zulässt und die eingehenden SSH-Verkehr von jeder Adresse für die SSH-Konnektivität zulässt. IPv4 

**Wichtig**  
Diese Sicherheitsgruppe dient nur zu Testzwecken. Für Produktionsumgebungen sollten Sie eine Regel für eingehenden SSH-Datenverkehr erstellen, die Datenverkehr nur von der IP-Adresse zulässt, von der aus Sie eine Verbindung herstellen, z. B. die IP-Adresse Ihres Computers oder einen Bereich von IP-Adressen im lokalen Netzwerk.

Weitere Szenarien finden Sie unter [Sicherheitsgruppenregeln für verschiedene Anwendungsfälle](security-group-rules-reference.md).

**So erstellen Sie eine EFA-fähige Sicherheitsgruppe:**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Security Groups** (Sicherheitsgruppen) und anschließend **Create Security Group** (Sicherheitsgruppe erstellen) aus.

1. Führen Sie im Fenster **Create Security Group** Folgendes aus:

   1. Geben Sie für **Security group name** (Name der Sicherheitsgruppe) einen beschreibenden Namen für die Sicherheitsgruppe ein, wie etwa `EFA-enabled security group`.

   1. (Optional:) Geben Sie unter **Description** (Beschreibung) eine kurze Beschreibung der Sicherheitsgruppe ein.

   1. Wählen Sie bei **VPC** die VPC aus, in der Sie Ihre EFA-fähigen Instances starten möchten.

   1. Wählen Sie **Sicherheitsgruppe erstellen** aus.

1. Wählen Sie die von Ihnen erstellte Sicherheitsgruppe aus und kopieren Sie dann auf der Registerkarte **Details** die **Security group ID** (Sicherheitsgruppen-ID).

1. Bei noch ausgewählter Sicherheitsgruppe wählen Sie **Actions** (Aktionen), **Edit inbound rules** (Eingangsregeln bearbeiten) aus und gehen dann folgendermaßen vor:

   1. Wählen Sie **Regel hinzufügen** aus.

   1. Wählen Sie für **Type (Typ)** die Option **All traffic (Gesamter Datenverkehr)** aus.

   1. Wählen Sie bei **Source type** (Quellentyp) **Custom** (Benutzerdefiniert) aus und fügen Sie die Sicherheitsgruppen-ID, die Sie kopiert hatten, ins Feld ein.

   1. Wählen Sie **Regel hinzufügen** aus.

   1. Wählen Sie unter **Typ** die Option **SSH** aus.

   1. **Wählen Sie als **Quelltyp** die Option Anywhere- aus. IPv4**

   1. Wählen Sie **Regeln speichern** aus.

1. Bei noch ausgewählter Sicherheitsgruppe wählen Sie **Actions** (Aktionen), **Edit outbound rules** (Ausgangsregeln bearbeiten) aus und gehen dann folgendermaßen vor:

   1. Wählen Sie **Regel hinzufügen** aus.

   1. Wählen Sie für **Type (Typ)** die Option **All traffic (Gesamter Datenverkehr)** aus.

   1. Wählen Sie bei **Destination type** (Zieltyp) **Custom** (Benutzerdefiniert) aus und fügen Sie die Sicherheitsgruppen-ID, die Sie kopiert hatten, ins Feld ein.

   1. Wählen Sie **Regeln speichern** aus.

## Schritt 2: Starten einer temporären Instance
<a name="nixl-start-base-temp"></a>

Starten Sie eine temporäre Instance, die Sie verwenden können, um die EFA-Softwarekomponenten zu installieren und zu konfigurieren. Sie können mit dieser Instance ein EFA-aktiviertes AMI erstellen, von dem Sie Ihre EFA-aktivierten Instances starten können.

**So starten Sie eine temporäre Instance**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Instances** und dann **Instances starten** aus, um den Launch Instance Wizard zu öffnen.

1. (*Optional*) Geben Sie im Bereich **Name and tags** (Name und Tags) einen Namen für die Instance an, z. B. `EFA-instance`. Der Name wird der Instance als Ressourcen-Tag (`Name=EFA-instance`) zugewiesen.

1. Wählen Sie im Bereich **Anwendungs- und Betriebssystem-Images** ein AMI für eines der unterstützten Betriebssysteme aus. Sie können auch ein unterstütztes DLAMI auswählen, das Sie auf der Seite mit den [DLAMI-Versionshinweisen](https://docs.aws.amazon.com/dlami/latest/devguide/appendix-ami-release-notes) finden.

1. Wählen Sie im Bereich **Instance-Typ** einen unterstützten Instance-Typ aus.

1. Wählen Sie im Bereich **Key pair** (Schlüsselpaar) das Schlüsselpaar aus, das für die Instance verwendet werden soll.

1. Wählen Sie im Bereich **Network settings** (Netzwerkeinstellungen) **Edit** (Bearbeiten) aus und führen Sie dann Folgendes aus:

   1. Wählen Sie unter **Subnetz** das Subnetz aus, in dem die Instance gestartet werden soll. Wenn Sie kein Subnetz auswählen, können Sie die Instance nicht für EFA aktivieren.

   1. Wählen Sie bei **Firewall (security groups)** Firewall (Sicherheitsgruppen) **Select existing security group** (Vorhandene Sicherheitsgruppe auswählen) und dann die Sicherheitsgruppe aus, die Sie im vorherigen Schritt erstellt haben.

   1. Erweitern Sie den Abschnitt **Erweiterte Netzwerkkonfiguration**.

      Wählen Sie für **Netzwerkschnittstelle 1** **Netzwerkkartenindex = 0**, **Geräteindex = 0** und **Schnittstellentyp = EFA mit ENA** aus.

      (*Optional*) Wenn Sie einen Instance-Typ mit mehreren Karten verwenden, z. B. `p4d.24xlarge` oder `p5.48xlarge`, wählen Sie für jede weitere erforderliche Netzwerkschnittstelle die Option **Netzwerkschnittstelle hinzufügen**, wählen Sie für **Netzwerkkartenindex** den nächsten ungenutzten Index aus und wählen Sie dann **Geräteindex = 1** und **Schnittstellentyp = EFA mit ENA** oder **Nur-EFA** aus.

1. Konfigurieren Sie im Bereich **Storage** (Speicher) die Volumes nach Bedarf.
**Anmerkung**  
Sie müssen zusätzliche 10 bis 20 GiB Speicher für das Nvidia CUDA Toolkit bereitstellen. Wenn Sie nicht genügend Speicherplatz bereitstellen, erhalten Sie einen `insufficient disk space`-Fehler beim Versuch, die Nvidia-Treiber und das CUDA-Toolkit zu installieren.

1. Wählen Sie im Bereich **Summary** (Zusammenfassung) rechts **Launch instance** (Instance starten) aus.

**Wichtig**  
Überspringen Sie Schritt 3, wenn Ihr AMI bereits Nvidia-GPU-Treiber, das CUDA-Toolkit und cuDNN enthält oder wenn Sie eine Nicht-GPU-Instance verwenden.

## Schritt 3: Installieren der Nvidia-GPU-Treiber, des Nvidia-CUDA-Toolkits und cuDNN
<a name="nixl-start-base-drivers"></a>

**Installieren der Nvidia GPU-Treiber, des Nvidia-CUDA-Toolkits und cuDNN**

1. Um sicherzustellen, dass alle Ihre Softwarepakete aktuell sind, führen Sie ein schnelles Softwareupdate auf Ihrer Instance aus.

   ```
   $ sudo apt-get update && sudo apt-get upgrade -y
   ```

1. Installieren Sie die Dienstprogramme, die zum Installieren der Nvidia GPU-Treiber und des Nvidia CUDA-Toolkits benötigt werden.

   ```
   $ sudo apt-get install build-essential -y
   ```

1. Um den Nvidia GPU-Treiber verwenden zu können, müssen Sie zunächst die `nouveau`-Open-Source-Treiber deaktivieren.

   1. Installieren Sie die erforderlichen Dienstprogramme und das Kernel-Header-Paket für Ihre derzeit ausgeführte Kernel-Version.

      ```
      $ sudo apt-get install -y gcc make linux-headers-$(uname -r)
      ```

   1. Fügen Sie `nouveau` der Verweigerungsliste `/etc/modprobe.d/blacklist.conf ` hinzu.

      ```
      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf
      blacklist vga16fb
      blacklist nouveau
      blacklist rivafb
      blacklist nvidiafb
      blacklist rivatv
      EOF
      ```

   1. Öffnen Sie `/etc/default/grub` mit dem bevorzugten Texteditor und fügen Sie Folgendes hinzu.

      ```
      GRUB_CMDLINE_LINUX="rdblacklist=nouveau"
      ```

   1. Erstellen Sie die neue Grub-Konfiguration.

      ```
      $ sudo update-grub
      ```

1. Starten Sie die Instance neu und stellen Sie die Verbindung zur Instance wieder her.

1. Fügen Sie das CUDA-Repository hinzu und installieren Sie die Nvidia-GPU-Treiber, das NVIDIA-CUDA-Toolkit und cuDNN.

   ```
   $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub \
   && wget -O /tmp/deeplearning.deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb \
   && sudo dpkg -i /tmp/deeplearning.deb \
   && wget -O /tmp/cuda.pin https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \
   && sudo mv /tmp/cuda.pin /etc/apt/preferences.d/cuda-repository-pin-600 \
   && sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub \
   && sudo add-apt-repository 'deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /' \
   && sudo apt update \
   && sudo apt install nvidia-dkms-535 \
   && sudo apt install -o Dpkg::Options::='--force-overwrite' cuda-drivers-535 cuda-toolkit-12-3 libcudnn8 libcudnn8-dev -y
   ```

1. Starten Sie die Instance neu und stellen Sie die Verbindung zur Instance wieder her.

1. (Nur `p4d.24xlarge` und `p5.48xlarge`) Installieren Sie den NVIDIA Fabric Manager.

   1. Sie müssen die Version von Nvidia Fabric Manager installieren, die mit der Version des Nvidia-Kernelmoduls übereinstimmt, die Sie im vorherigen Schritt installiert haben.

      Führen Sie den folgenden Befehl aus, um die Version des Nvidia Kernelmoduls zu bestimmen.

      ```
      $ cat /proc/driver/nvidia/version | grep "Kernel Module"
      ```

      Es folgt eine Beispielausgabe.

      ```
      NVRM version: NVIDIA UNIX x86_64 Kernel Module  450.42.01  Tue Jun 15 21:26:37 UTC 2021
      ```

      Im obigen Beispiel wurde die Hauptversion `450` des Kernel-Moduls installiert. Dies bedeutet, dass Sie die Nvidia Fabric Manager-Version `450` installieren müssen.

   1. Installieren Sie den Nvidia Fabric Manager. Führen Sie den folgenden Befehl aus, und geben Sie die im vorherigen Schritt angegebene Hauptversion an.

      ```
      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-major_version_number
      ```

      Zum Beispiel, wenn die Hauptversion `450` des Kernelmoduls installiert wurde, verwenden Sie den folgenden Befehl, um die passende Version von Nvidia Fabric Manager zu installieren.

      ```
      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-450
      ```

   1. Starten Sie den Dienst und stellen Sie sicher, dass er beim Start der Instance automatisch gestartet wird. Nvidia Fabric Manager ist für das NV Switch Management erforderlich.

      ```
      $ sudo systemctl start nvidia-fabricmanager && sudo systemctl enable nvidia-fabricmanager
      ```

1. Stellen Sie sicher, dass die CUDA-Pfade bei jedem Start der Instance festgelegt werden.
   + Fügen Sie für *Bash*-Shells die folgenden Anweisungen zu `/home/username/.bashrc` und `/home/username/.bash_profile` hinzu.

     ```
     export PATH=/usr/local/cuda/bin:$PATH
     export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```
   + Fügen Sie für *tcsh*-Shells die folgenden Anweisungen zu `/home/username/.cshrc` hinzu.

     ```
     setenv PATH=/usr/local/cuda/bin:$PATH
     setenv LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```

1. Führen Sie den folgenden Befehl aus, um zu bestätigen, dass die Nvidia GPU-Treiber funktionieren.

   ```
   $ nvidia-smi -q | head
   ```

   Der Befehl sollte Informationen über die Nvidia- GPUs, Nvidia-GPU-Treiber und das Nvidia-CUDA-Toolkit zurückgeben.

**Wichtig**  
Überspringen Sie Schritt 4 GDRCopy, wenn Ihr AMI bereits eine Instance enthält oder wenn Sie eine Nicht-GPU-Instance verwenden.

## Schritt 4: Installieren GDRCopy
<a name="nixl-start-base-gdrcopy"></a>

Installieren Sie GDRCopy , um die Leistung von Libfabric auf GPU-basierten Plattformen zu verbessern. [Weitere Informationen zu finden Sie im GDRCopy Repository. GDRCopy ](https://github.com/NVIDIA/gdrcopy)

**Um zu installieren GDRCopy**

1. Installieren Sie die erforderlichen Abhängigkeiten.

   ```
   $ sudo apt -y install build-essential devscripts debhelper check libsubunit-dev fakeroot pkg-config dkms
   ```

1. Laden Sie das Paket herunter und GDRCopy entpacken Sie es.

   ```
   $ wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.4.tar.gz \
   && tar xf v2.4.tar.gz \
   && cd gdrcopy-2.4/packages
   ```

1. Erstellen Sie die GDRCopy DEB-Pakete.

   ```
   $ CUDA=/usr/local/cuda ./build-deb-packages.sh
   ```

1. Installieren Sie die GDRCopy DEB-Pakete.

   ```
   $ sudo dpkg -i gdrdrv-dkms_2.4-1_amd64.*.deb \
   && sudo dpkg -i libgdrapi_2.4-1_amd64.*.deb \
   && sudo dpkg -i gdrcopy-tests_2.4-1_amd64.*.deb \
   && sudo dpkg -i gdrcopy_2.4-1_amd64.*.deb
   ```

**Wichtig**  
Überspringen Sie Schritt 5, wenn Ihr AMI bereits das neueste EFA-Installationsprogramm enthält.

## Schritt 5: Installieren der EFA-Software
<a name="nixl-start-base-enable"></a>

Installieren Sie den EFA-fähigen Kernel, die EFA-Treiber und den Libfabric-Stack, die für die Unterstützung von EFA auf Ihrer Instance erforderlich sind.

**So installieren Sie die EFA-Software**

1. Stellen Sie eine Verbindung zu der Instance her, die Sie gestartet haben. Weitere Informationen finden Sie unter [Herstellen einer Verbindung zu Ihrer Linux-Instance mit SSH](connect-to-linux-instance.md).

1. Laden Sie die EFA-Software-Installationsdateien herunter. Die Software-Installationsdateien sind in einer komprimierten Tarball-Datei (`.tar.gz`) verpackt. Laden Sie die neueste *stabile* Version mit dem folgenden Befehl herunter.

   ```
   $ curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz
   ```

1. Extrahieren Sie die Dateien aus der komprimierten `.tar.gz` Datei, löschen Sie den Tarball und navigieren Sie in das entpackte Verzeichnis.

   ```
   $ tar -xf aws-efa-installer-1.47.0.tar.gz && rm -rf aws-efa-installer-1.47.0.tar.gz && cd aws-efa-installer
   ```

1. Führen Sie das EFA-Software-Installationsskript aus.

   ```
   $ sudo ./efa_installer.sh -y
   ```

   **Libfabric** ist im `/opt/amazon/efa`-Verzeichnis installiert.

1. Wenn das EFA-Installationsprogramm Sie auffordert, die Instance neu zu starten, tun Sie dies und stellen Sie dann erneut eine Verbindung mit der Instance her. Melden Sie sich andernfalls von der Instance ab und wieder an, um die Installation abzuschließen.

1. Überprüfen Sie, ob die EFA-Softwarekomponenten erfolgreich installiert wurden.

   ```
   $ fi_info -p efa -t FI_EP_RDM
   ```

   Der Befehl muss Informationen zu den Libfabric-EFA-Schnittstellen zurückgeben. Das folgende Beispiel zeigt die Befehlsausgabe.
   + `p3dn.24xlarge` mit einer einzigen Netzwerkschnittstelle

     ```
     provider: efa
     fabric: EFA-fe80::94:3dff:fe89:1b70
     domain: efa_0-rdm
     version: 2.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     ```
   + `p4d.24xlarge` und `p5.48xlarge` mit mehreren Netzwerkschnittstellen

     ```
     provider: efa
     fabric: EFA-fe80::c6e:8fff:fef6:e7ff
     domain: efa_0-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::c34:3eff:feb2:3c35
     domain: efa_1-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::c0f:7bff:fe68:a775
     domain: efa_2-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::ca7:b0ff:fea6:5e99
     domain: efa_3-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     ```

## Schritt 6: Installieren Sie NIXL
<a name="nixl-start-base-nixl"></a>

Installieren Sie NIXL. Weitere Informationen zu NIXL finden Sie im [NIXL-Repository](https://github.com/ai-dynamo/nixl).

------
#### [ Pre-built distributions ]

**Um NIXL mit PyPI zu installieren**

1. Installieren Sie die erforderlichen Abhängigkeiten.

   ```
   $ sudo apt install pip
   ```

1. Installieren Sie NIXL.

   ```
   $ pip install nixl
   ```

------
#### [ Build from source ]

**Um NIXL aus dem Quellcode zu erstellen und zu installieren**

1. Installieren Sie die erforderlichen Abhängigkeiten.

   ```
   $ sudo apt install cmake pkg-config meson pybind11-dev libaio-dev nvidia-cuda-toolkit pip libhwloc-dev \
   && pip install meson ninja pybind11
   ```

1. Navigieren Sie zum Stammverzeichnis.

   ```
   $ cd $HOME
   ```

1. Klonen Sie das offizielle NIXL-Repository auf die Instanz und navigieren Sie zum lokalen geklonten Repository.

   ```
   $ sudo git clone https://github.com/ai-dynamo/nixl.git && cd nixl
   ```

1. Erstellen und installieren Sie NIXL und geben Sie den Pfad zum Libfabric-Installationsverzeichnis an.

   ```
   $ sudo meson setup . nixl --prefix=/usr/local/nixl -Dlibfabric_path=/opt/amazon/efa
   $ cd nixl && sudo ninja && sudo ninja install
   ```

------

## Schritt 7: Installieren Sie NIXL Benchmark und testen Sie Ihre EFA- und NIXL-Konfiguration
<a name="nixl-start-base-tests"></a>

Installieren Sie den NIXL-Benchmark und führen Sie einen Test durch, um sicherzustellen, dass Ihre temporäre Instance ordnungsgemäß für EFA und NIXL konfiguriert ist. Mit dem NIXL-Benchmark können Sie überprüfen, ob NIXL ordnungsgemäß installiert ist und wie erwartet funktioniert. Weitere Informationen finden Sie im [Nixlbench-Repository](https://github.com/ai-dynamo/nixl/tree/main/benchmark/nixlbench).

NIXL Benchmark (nixlbench) benötigt ETCD für die Koordination zwischen Client und Server. Um ETCD mit NIXL zu verwenden, sind ETCD-Server und -Client sowie die ETCD CPP-API erforderlich.

------
#### [ Build from Docker ]

**Um NIXL Benchmark mit Docker zu installieren und zu testen**

1. Klonen Sie das offizielle NIXL-Repository auf die Instanz und navigieren Sie zum Nixlbench-Build-Verzeichnis.

   ```
   $ git clone https://github.com/ai-dynamo/nixl.git
   $ cd nixl/benchmark/nixlbench/contrib
   ```

1. Erstellen Sie den Container.

   ```
   $ ./build.sh
   ```

   [Weitere Informationen zu den Docker-Build-Optionen finden Sie im Nixlbench-Repository.](https://github.com/ai-dynamo/nixl/tree/main/benchmark/nixlbench)

1. Docker-Installation.

   ```
   $ sudo apt install docker.io -y
   ```

1. Starten Sie den ETCD-Server für die Koordination.

   ```
   $ docker run -d --name etcd-server \
       -p 2379:2379 -p 2380:2380 \
       quay.io/coreos/etcd:v3.5.18 \
       /usr/local/bin/etcd \
       --data-dir=/etcd-data \
       --listen-client-urls=http://0.0.0.0:2379 \
       --advertise-client-urls=http://0.0.0.0:2379 \
       --listen-peer-urls=http://0.0.0.0:2380 \
       --initial-advertise-peer-urls=http://0.0.0.0:2380 \
       --initial-cluster=default=http://0.0.0.0:2380
   ```

1. Stellen Sie sicher, dass der ETCD-Server läuft.

   ```
   $ curl -L http://localhost:2379/health
   ```

   Erwartete Ausgabe:

   ```
   {"health":"true"}
   ```

1. Öffnen Sie zwei Terminals für die Instanz. Führen Sie auf beiden Terminals den folgenden Befehl aus, um die Installation zu überprüfen. Der Befehl verwendet den ETCD-Server auf derselben Instance, verwendet Libfabric als Backend und arbeitet mit GPU-Speicher.

   ```
   $ docker run -it --gpus all --network host nixlbench:latest \
       nixlbench --etcd_endpoints http://localhost:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM \
       --target_seg_type VRAM
   ```
**Anmerkung**  
Verwenden Sie den Wert `DRAM` anstelle von `VRAM` für Nicht-GPU-Instanzen.

------
#### [ Build from source ]

**Wichtig**  
Folgen Sie dieser Registerkarte nur, wenn Sie in Schritt 6 **Aus Quelle erstellen** ausgewählt haben.

**Um NIXL Benchmark zu installieren**

1. Installieren Sie die erforderlichen Systemabhängigkeiten.

   ```
   $ sudo apt install libgflags-dev
   ```

1. Installieren Sie den ETCD-Server und -Client.

   ```
   $ sudo apt install -y etcd-server etcd-client
   ```

1. Installieren Sie die ETCD CPP API.

   1. Installieren Sie die erforderlichen Abhängigkeiten für die ETCD CPP-API.

      ```
      $ sudo apt install libboost-all-dev libssl-dev libgrpc-dev libgrpc++-dev libprotobuf-dev protobuf-compiler-grpc libcpprest-dev
      ```

   1. Klonen und installieren Sie die ETCD CPP API.

      ```
      $ cd $HOME
      $ git clone https://github.com/etcd-cpp-apiv3/etcd-cpp-apiv3.git
      $ cd etcd-cpp-apiv3
      $ mkdir build && cd build
      $ cmake ..
      $ sudo make -j$(nproc) && sudo make install
      ```

1. Erstellen und installieren Sie Nixlbench.

   ```
   $ sudo meson setup . $HOME/nixl/benchmark/nixlbench -Dnixl_path=/usr/local/nixl/
   $ sudo ninja && sudo ninja install
   ```

**Um Ihre EFA- und NIXL-Konfiguration zu testen**

1. Starten Sie den ETCD-Server auf der Instanz.

   ```
   $ etcd --listen-client-urls "http://0.0.0.0:2379" \
       --advertise-client-urls "http://localhost:2379" &
   ```

1. Stellen Sie sicher, dass der ETCD-Server läuft.

   ```
   $ curl -L http://localhost:2379/health
   ```

   Erwartete Ausgabe:

   ```
   {"health":"true"}
   ```

1. Öffnen Sie zwei Terminals für die Instanz. Führen Sie auf beiden Terminals die folgenden Schritte aus, um nixlbench auszuführen.

   1. Navigieren Sie zu dem Verzeichnis, in dem Nixlbench installiert ist.

      ```
      $ cd /usr/local/nixlbench/bin/
      ```

   1. Führen Sie den Test aus und geben Sie das Backend, die Adresse des ETCD-Servers und den Initiatorsegmenttyp an. Der folgende Befehl verwendet den ETCD-Server auf derselben Instanz, verwendet Libfabric als Backend und arbeitet mit GPU-Speicher. Die Umgebungsvariablen konfigurieren Folgendes:
      + `NIXL_LOG_LEVEL=INFO`— Ermöglicht eine detaillierte Debugging-Ausgabe. Sie können auch angeben`WARN`, dass nur Fehlermeldungen empfangen werden sollen.
      + `LD_LIBRARY_PATH`— Legt den Pfad für die NIXL-Bibliothek fest.

      Weitere Informationen zu den NIXL-Benchmark-Argumenten finden Sie in der [NIXLbenchREADME-Datei](https://github.com/ai-dynamo/nixl/blob/main/benchmark/nixlbench/README.md) im offiziellen Nixlbench-Repository.

      ```
      $ export NIXL_LOG_LEVEL=INFO
      $ export LD_LIBRARY_PATH=/usr/local/nixl/lib/$(gcc -dumpmachine):$LD_LIBRARY_PATH
      
      $ nixlbench --etcd-endpoints 'http://localhost:2379' \
          --backend 'LIBFABRIC' \
          --initiator_seg_type 'VRAM' \
          --target_seg_type 'VRAM'
      ```
**Anmerkung**  
Verwenden Sie den Wert `DRAM` anstelle von `VRAM` für Nicht-GPU-Instanzen.

------

## Schritt 8: Installieren Sie Ihre Anwendungen für maschinelles Lernen
<a name="nixl-start-base-app"></a>

Installieren Sie die Machine-Learning-Anwendungen auf der temporären Instance. Der Installationsvorgang variiert je nach Machine-Learning-Anwendung.

**Anmerkung**  
Installationsanweisungen finden Sie in der Dokumentation Ihrer Anwendung für maschinelles Lernen.

## Schritt 9: Erstellen Sie ein EFA- und NIXL-fähiges AMI
<a name="nixl-start-base-ami"></a>

Nachdem Sie die erforderlichen Softwarekomponenten installiert haben, erstellen Sie ein AMI, das Sie erneut verwenden können, um Ihre EFA-fähigen Instances zu starten.

**So erstellen Sie ein AMI aus Ihrer temporären Instance:**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Instances** aus.

1. Wählen Sie die temporäre Instance aus, die Sie erstellt haben, und wählen Sie anschließend **Actions** (Aktionen), **Image** und **Create Image** (Image erstellen) aus.

1. Gehen Sie bei **Create Image** (Image erstellen) wie folgt vor:

   1. Geben Sie unter **Image name** (Image-Name) einen beschreibenden Namen für das AMI ein.

   1. (Optional:) Geben Sie bei **Image description** (Image-Beschreibung) eine kurze Beschreibung des Zwecks des AMI ein.

   1. Wählen Sie **Create Image (Image erstellen)** aus.

1. Wählen Sie im Navigationsbereich **AMIs** aus.

1. Suchen Sie das AMI, das Sie erstellt haben, in der Liste. Warten Sie, bis der Status von `pending` zu `available` wechselt, bevor Sie mit dem nächsten Schritt fortfahren.

## Schritt 10: Beenden der temporären Instance
<a name="nixl-start-base-terminate"></a>

An diesem Punkt benötigen Sie die temporäre Instance, die Sie gestartet haben, nicht mehr. Sie können die Instance beenden, damit keine weiteren Kosten dafür anfallen.

**So beenden Sie die temporäre Instance:**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Instances** aus.

1. Wählen Sie die temporäre instance aus, die Sie erstellt haben, und wählen Sie anschließend **Actions** (Aktionen), **Instance state** (Instance-Zustand) und **Terminate instance** (Instance beenden) aus.

1. Wählen Sie **Terminate (Kündigen)** aus, wenn Sie zur Bestätigung aufgefordert werden.

## Schritt 11: Starten Sie EFA- und NIXL-fähige Instances
<a name="nixl-start-base-cluster"></a>

**Starten Sie Ihre EFA- und NIXL-fähigen Instances mit dem EFA-fähigen AMI, das Sie in **Schritt 9** erstellt haben, und der EFA-fähigen Sicherheitsgruppe, die Sie in Schritt 1 erstellt haben.**

**Um EFA- und NIXL-fähige Instances zu starten**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Instances** und dann **Instances starten** aus, um den Launch Instance Wizard zu öffnen.

1. (*Optional*) Geben Sie im Bereich **Name and tags** (Name und Tags) einen Namen für die Instance an, z. B. `EFA-instance`. Der Name wird der Instance als Ressourcen-Tag (`Name=EFA-instance`) zugewiesen.

1. Wählen Sie im Abschnitt **Anwendungs- und Betriebssystemimages** die Option **My AMIs** und dann das AMI aus, das Sie im vorherigen Schritt erstellt haben.

1. Wählen Sie im Bereich **Instance-Typ** einen unterstützten Instance-Typ aus.

1. Wählen Sie im Bereich **Key pair** (Schlüsselpaar) das Schlüsselpaar aus, das für die Instance verwendet werden soll.

1. Wählen Sie im Bereich **Network settings** (Netzwerkeinstellungen) **Edit** (Bearbeiten) aus und führen Sie dann Folgendes aus:

   1. Wählen Sie unter **Subnetz** das Subnetz aus, in dem die Instance gestartet werden soll. Wenn Sie kein Subnetz auswählen, können Sie die Instance nicht für EFA aktivieren.

   1. Wählen Sie für **Firewall (Sicherheitsgruppen)** die **Option Bestehende Sicherheitsgruppe auswählen** und wählen Sie dann die Sicherheitsgruppe aus, die Sie in **Schritt 1** erstellt haben.

   1. Erweitern Sie den Abschnitt **Erweiterte Netzwerkkonfiguration**.

      Wählen Sie für **Netzwerkschnittstelle 1** **Netzwerkkartenindex = 0**, **Geräteindex = 0** und **Schnittstellentyp = EFA mit ENA** aus.

      (*Optional*) Wenn Sie einen Instance-Typ mit mehreren Karten verwenden, z. B. `p4d.24xlarge` oder `p5.48xlarge`, wählen Sie für jede weitere erforderliche Netzwerkschnittstelle die Option **Netzwerkschnittstelle hinzufügen**, wählen Sie für **Netzwerkkartenindex** den nächsten ungenutzten Index aus und wählen Sie dann **Geräteindex = 1** und **Schnittstellentyp = EFA mit ENA** oder **Nur-EFA** aus.

1. (*Optional*) Konfigurieren Sie im Bereich **Storage** (Speicher) die Volumes nach Bedarf.

1. Geben Sie im Bereich **Summary** (Zusammenfassung) rechts bei **Number of instances** (Anzahl der Instances) die Anzahl EFA-fähiger Instances ein, die Sie starten möchten, und wählen Sie dann **Launch instance** (Instance starten).

## Schritt 12: Passwortloses SSH aktivieren
<a name="nixl-start-base-passwordless"></a>

Damit Ihre Anwendungen auf allen Instances in Ihrem Cluster ausgeführt werden können, müssen Sie passwortlosen SSH-Zugriff vom Führungsknoten auf die Mitgliedsknoten aktivieren. Der Führungsknoten ist die Instance, von der aus Sie die Anwendungen ausführen. Die verbleibenden Instances im Cluster sind die Mitgliedsknoten.

**So aktivieren Sie passwortloses SSH zwischen den Instances im Cluster:**

1. Wählen Sie eine Instance im Cluster als Führungsknoten aus und stellen Sie eine Verbindung zu ihr her.

1. Deaktivieren Sie `strictHostKeyChecking` und aktivieren Sie `ForwardAgent` für den Führungsknoten. Öffnen Sie `~/.ssh/config` mit dem bevorzugten Texteditor und fügen Sie Folgendes hinzu.

   ```
   Host *
       ForwardAgent yes
   Host *
       StrictHostKeyChecking no
   ```

1. Generieren Sie ein RSA-Schlüsselpaar.

   ```
   $ ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
   ```

   Das Schlüsselpaar wird im `$HOME/.ssh/`-Verzeichnis erstellt.

1. Ändern Sie die Berechtigungen des privaten Schlüssels auf dem Führungsknoten.

   ```
   $ chmod 600 ~/.ssh/id_rsa
   chmod 600 ~/.ssh/config
   ```

1. Öffnen Sie `~/.ssh/id_rsa.pub` mit Ihrem bevorzugten Texteditor und kopieren Sie den Schlüssel.

1. Gehen Sie für jeden Mitgliedsknoten im Cluster wie folgt vor:

   1. Stellen Sie eine Verbindung mit der Instance her.

   1. Öffnen Sie `~/.ssh/authorized_keys` mit Ihrem bevorzugten Texteditor und fügen Sie den öffentlichen Schlüssel hinzu, den Sie zuvor kopiert haben.

1. Um zu testen, ob das passwortlose SSH wie erwartet funktioniert, stellen Sie eine Verbindung zum Leaderknoten her und führen Sie den folgenden Befehl aus.

   ```
   $ ssh member_node_private_ip
   ```

   Sie sollten eine Verbindung zum Mitgliedsknoten herstellen können, ohne zur Eingabe eines Schlüssels oder Passworts aufgefordert zu werden.

**Wichtig**  
Folgen Sie Schritt 13 nur, wenn Sie Schritt 7 befolgt haben.

## Schritt 13: Testen Sie Ihre EFA- und NIXL-Konfiguration instanzübergreifend
<a name="nixl-start-base-test-multi"></a>

Führen Sie einen Test durch, um sicherzustellen, dass Ihre Instances ordnungsgemäß für EFA und NIXL konfiguriert sind.

------
#### [ Build from Docker ]

**Um Ihre EFA- und NIXL-Konfiguration instanzübergreifend mit Docker zu testen**

1. Wählen Sie zwei Hosts aus, um den Nixlbench-Benchmark auszuführen. Verwenden Sie die IP-Adresse des ersten Hosts als ETCD-Server-IP für den Metadatenaustausch.

1. Starten Sie den ETCD-Server auf Host 1.

   ```
   $ docker run -d --name etcd-server \
       -p 2379:2379 -p 2380:2380 \
       quay.io/coreos/etcd:v3.5.18 \
       /usr/local/bin/etcd \
       --data-dir=/etcd-data \
       --listen-client-urls=http://0.0.0.0:2379 \
       --advertise-client-urls=http://0.0.0.0:2379 \
       --listen-peer-urls=http://0.0.0.0:2380 \
       --initial-advertise-peer-urls=http://0.0.0.0:2380 \
       --initial-cluster=default=http://0.0.0.0:2380
   ```

1. Stellen Sie sicher, dass der ETCD-Server läuft.

   ```
   $ curl -L http://localhost:2379/health
   ```

   ```
   {"health":"true"}
   ```

1. Führen Sie den Nixlbench-Benchmark auf Host 1 aus.

   ```
   $ docker run -it --gpus all --network host nixlbench:latest \
       nixlbench --etcd_endpoints http://localhost:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM
   ```

1. Führen Sie den Nixlbench-Benchmark auf Host 2 aus.

   ```
   $ docker run -it --gpus all --network host nixlbench:latest \
       nixlbench --etcd_endpoints http://ETCD_SERVER_IP:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM
   ```

------
#### [ Build from source ]

**Wichtig**  
Folgen Sie dieser Registerkarte nur, wenn Sie in Schritt **6 Aus Quelle erstellen** ausgewählt haben.

**Um Ihre EFA- und NIXL-Konfiguration instanzübergreifend zu testen**

1. Wählen Sie zwei Hosts aus, um den Nixlbench-Benchmark auszuführen. Verwenden Sie die IP-Adresse des ersten Hosts als ETCD-Server-IP für den Metadatenaustausch.

1. Starten Sie den ETCD-Server auf Host 1.

   ```
   $ etcd --listen-client-urls "http://0.0.0.0:2379" \
       --advertise-client-urls "http://localhost:2379" &
   ```

1. Stellen Sie sicher, dass der ETCD-Server läuft.

   ```
   $ curl -L http://localhost:2379/health
   ```

   ```
   {"health":"true"}
   ```

1. Führen Sie den Nixlbench-Benchmark auf Host 1 aus.

   ```
   $ export NIXL_LOG_LEVEL=INFO
   $ export LD_LIBRARY_PATH=$HOME/nixl/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
   
   $ nixlbench \
       --etcd-endpoints http://localhost:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM
   ```

1. Führen Sie den Nixlbench-Benchmark auf Host 2 aus.

   ```
   $ export NIXL_LOG_LEVEL=INFO
   $ export LD_LIBRARY_PATH=$HOME/nixl/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
   
   $ nixlbench \
       --etcd-endpoints http://ETCD_SERVER_IP:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM
   ```

------

## *Schritt 14: Testen Sie die disaggregierte Inferenzbereitstellung über vLLM (optional)*
<a name="nixl-start-base-serve"></a>

Nach der Installation von NIXL können Sie NIXL über LLM-Inferenz- und Serving-Frameworks wie vLLM und Tensorrt-LLM verwenden. SGLang

**Um Ihren Inferenz-Workload mit vLLM zu bedienen**

1. Installieren Sie vLLM.

   ```
   $ pip install vllm
   ```

1. Starten Sie den vLLM-Server mit NIXL. Die folgenden Beispielbefehle erstellen eine Prefill- (Producer) und eine Decodierungsinstanz (Consumer) für die NIXL-Handshake-Verbindung, den KV-Connector, die KV-Rolle und das Transport-Backend. [Ausführliche Beispiele und Skripts finden Sie im Nutzungshandbuch. NIXLConnector](https://github.com/vllm-project/vllm/blob/2d977a7a9ead3179fde9ed55d69393ef7b6cec47/docs/features/nixl_connector_usage.md)

   Um NIXL mit EFA zu verwenden, legen Sie die Umgebungsvariablen entsprechend Ihrem Setup und Anwendungsfall fest.
   + Konfiguration des Herstellers (Prefiller)

     ```
     $ vllm serve your-application \
         --port 8200 \
         --enforce-eager \
         --kv-transfer-config '{"kv_connector":"NixlConnector","kv_role":"kv_both","kv_buffer_device":"cuda","kv_connector_extra_config":{"backends":["LIBFABRIC"]}}'
     ```
   + Konfiguration für Verbraucher (Decoder)

     ```
     $ vllm serve your-application \
         --port 8200 \
         --enforce-eager \
         --kv-transfer-config '{"kv_connector":"NixlConnector","kv_role":"kv_both","kv_buffer_device":"cuda","kv_connector_extra_config":{"backends":["LIBFABRIC"]}}'
     ```

   Die vorherige Beispielkonfiguration legt Folgendes fest:
   + `kv_role`to`kv_both`, was eine symmetrische Funktionalität ermöglicht, bei der der Konnektor sowohl als Produzent als auch als Verbraucher agieren kann. Dies bietet Flexibilität für Versuchsaufbauten und Szenarien, in denen die Rollenverteilung nicht im Voraus festgelegt ist.
   + `kv_buffer_device`to`cuda`, was die Verwendung von GPU-Speicher ermöglicht.
   + NIXL-Backend zu`LIBFABRIC`, wodurch der NIXL-Verkehr über EFA übertragen werden kann.

# Maximieren der Netzwerkbandbreite auf Amazon-EC2-Instances mit mehreren Netzwerkkarten
<a name="efa-acc-inst-types"></a>

Viele Instance-Typen, die EFA unterstützen, verfügen auch über mehrere Netzwerkkarten. Weitere Informationen finden Sie unter [Netzwerkkarten](using-eni.md#network-cards). Wenn Sie EFA mit einem dieser Instance-Typen verwenden möchten, empfehlen wir die folgende Grundkonfiguration:
+ Erstellen Sie für die primäre Netzwerkschnittstelle (Netzwerkkartenindex`0`, Geräteindex`0`) eine ENA-Schnittstelle. Sie können eine Nur-EFA-Netzwerkschnittstelle nicht als primäre Netzwerkschnittstelle verwenden.
+ Wenn der Netzwerkkartenindex 0 EFA unterstützt, erstellen Sie eine reine EFA-Netzwerkschnittstelle für den Netzwerkkartenindex`0`, Geräteindex. `1`
+ Verwenden Sie für jede weitere Netzwerkschnittstelle je nach Anwendungsfall, z. B. ENA-Bandbreitenanforderungen oder IP-Adressraum, den nächsten ungenutzten Netzwerkkartenindex`0`, den Geräteindex, den Geräteindex für die Netzwerkschnittstelle, den and/or Geräteindex `1` für die ENA-Netzwerkschnittstelle, den Geräteindex, den Geräteindex für die ENA-Netzwerkschnittstelle. Anwendungs-Fallbeispiele finden Sie unter [EFA-Konfiguration für P5- und P5e-Instances](#efa-for-p5).

**Anmerkung**  
P5-Instances erfordern, dass Netzwerkschnittstellen auf eine bestimmte Weise konfiguriert werden, um eine maximale Netzwerkbandbreite zu ermöglichen. Weitere Informationen finden Sie unter [EFA-Konfiguration für P5- und P5e-Instances](#efa-for-p5).

Die folgenden Beispiele zeigen, wie eine Instance auf der Grundlage dieser Empfehlungen gestartet wird.

------
#### [ Instance launch ]

**Um dies EFAs während des Instance-Starts mit dem Launch-Instance-Assistenten festzulegen**

1. Wählen Sie im Abschnitt **Netzwerkeinstellungen** die Option **Bearbeiten** aus.

1. **Erweiterte Netzwerkkonfiguration** erweitert

1. Erstellen Sie für die primäre Netzwerkschnittstelle (Netzwerkkartenindex`0`, Geräteindex`0`) eine ENA-Schnittstelle. Sie können eine Nur-EFA-Netzwerkschnittstelle nicht als primäre Netzwerkschnittstelle verwenden.

1. Wenn der Netzwerkkartenindex 0 EFA unterstützt, erstellen Sie eine reine EFA-Netzwerkschnittstelle für den Netzwerkkartenindex`0`, Geräteindex. `1`

1. Verwenden Sie für jede weitere Netzwerkschnittstelle je nach Anwendungsfall, z. B. ENA-Bandbreitenanforderungen oder IP-Adressraum, den nächsten ungenutzten Netzwerkkartenindex`0`, den Geräteindex, den Geräteindex für die Netzwerkschnittstelle, den and/or Geräteindex `1` für die ENA-Netzwerkschnittstelle, den Geräteindex, den Geräteindex für die ENA-Netzwerkschnittstelle. Anwendungs-Fallbeispiele finden Sie unter [EFA-Konfiguration für P5- und P5e-Instances](#efa-for-p5).

**[Um dies EFAs beim Start der Instanz mit dem Befehl run-instances anzugeben](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)**  
Geben Sie für `--network-interfaces` die erforderliche Anzahl von Netzwerkschnittstellen an. Geben Sie für die primäre Netzwerkschnittstelle `NetworkCardIndex=0`, `DeviceIndex=0` und `InterfaceType=interface` an. Wenn der Netzwerkkartenindex 0 EFA unterstützt, geben Sie`NetworkCardIndex=0`, `DeviceIndex=1` und an. `InterfaceType=efa-only` `NetworkCardIndex`Geben Sie für alle weiteren Netzwerkschnittstellen den nächsten ungenutzten Index an, `DeviceIndex=0` für`InterfaceType=efa-only`, and/or `DeviceIndex=1` für`InterfaceType=interface`.

Der folgende Ausschnitt eines Beispielbefehls zeigt eine Anfrage mit 32 EFA-Netzwerkschnittstellen und einem ENA-Gerät.

```
$ aws ec2 run-instances \
 --instance-type p5.48xlarge \
 --count 1 \
 --key-name key_pair_name \
 --image-id ami-0abcdef1234567890 \
 --network-interfaces "NetworkCardIndex=0,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=0,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=1,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=2,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=3,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=4,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=5,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=6,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=7,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=8,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=9,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=10,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=11,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=12,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=13,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=14,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=15,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=16,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=17,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=18,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=19,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=20,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=21,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=22,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=23,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=24,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=25,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=26,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=27,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=28,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=29,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=30,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=31,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only"
...
```

------
#### [ Launch templates ]

**So fügen Sie EFAs über die Amazon-EC2-Konsole zu einer Startvorlage hinzu**

1. Erweitern Sie unter **Netzwerkeinstellungen** **Erweiterte Netzwerkkonfiguration**.

1. Erstellen Sie für die primäre Netzwerkschnittstelle (Netzwerkkartenindex`0`, Geräteindex`0`) eine ENA-Schnittstelle. Sie können eine Nur-EFA-Netzwerkschnittstelle nicht als primäre Netzwerkschnittstelle verwenden.

1. Wenn der Netzwerkkartenindex 0 EFA unterstützt, erstellen Sie eine reine EFA-Netzwerkschnittstelle für den Netzwerkkartenindex`0`, Geräteindex. `1`

1. Verwenden Sie für jede weitere Netzwerkschnittstelle je nach Anwendungsfall, z. B. ENA-Bandbreitenanforderungen oder IP-Adressraum, den nächsten ungenutzten Netzwerkkartenindex`0`, den Geräteindex, den Geräteindex für die Netzwerkschnittstelle, den and/or Geräteindex `1` für die ENA-Netzwerkschnittstelle, den Geräteindex, den Geräteindex für die ENA-Netzwerkschnittstelle. Anwendungs-Fallbeispiele finden Sie unter [EFA-Konfiguration für P5- und P5e-Instances](#efa-for-p5). 

**Um eine Startvorlage EFAs mit dem folgenden Befehl zu erweitern [create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html)**  
Geben Sie für `NetworkInterfaces` die erforderliche Anzahl von Netzwerkschnittstellen an. Geben Sie für die primäre Netzwerkschnittstelle `NetworkCardIndex=0`, `DeviceIndex=0` und `InterfaceType=interface` an. Wenn der Netzwerkkartenindex 0 EFA unterstützt, geben Sie `NetworkCardIndex=0``DeviceIndex=1`, und `InterfaceType=efa-only` an. `NetworkCardIndex`Geben Sie für alle weiteren Netzwerkschnittstellen den nächsten ungenutzten Index an, `DeviceIndex=0` für`InterfaceType=efa-only`, and/or `DeviceIndex=1` für`InterfaceType=interface`.

Der folgende Ausschnitt zeigt ein Beispiel mit 3 Netzwerkschnittstellen (von möglichen 32 Netzwerkschnittstellen).

```
"NetworkInterfaces":[
{
  "NetworkCardIndex":0,
  "DeviceIndex":0,
  "InterfaceType": "interface",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
},
{
  "NetworkCardIndex": 0,
  "DeviceIndex": 1,
  "InterfaceType": "efa-only",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
},
{
  "NetworkCardIndex": 1,
  "DeviceIndex": 0,
  "InterfaceType": "efa-only",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
},
{
  "NetworkCardIndex": 2,
  "DeviceIndex": 0,
  "InterfaceType": "efa-only",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
},
{
  "NetworkCardIndex": 3,
  "DeviceIndex": 0,
  "InterfaceType": "efa-only",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
}
...
```

------

## EFA-Konfiguration für P5- und P5e-Instances
<a name="efa-for-p5"></a>

`p5.48xlarge`- und `p5e.48xlarge`-Instances unterstützen 32 Netzwerkkarten und haben eine gesamte Netzwerkbandbreitenkapazität von 3 200 Gbit/s, wovon bis zu 800 Gbit/s für IP-Netzwerkdatenverkehr genutzt werden können. Da EFA- und IP-Netzwerkverkehr dieselben zugrunde liegenden Ressourcen gemeinsam nutzen, reduziert die Bandbreite, die von der einen verwendet wird, die Bandbreite, die der anderen zur Verfügung steht. Das bedeutet, dass Sie die Netzwerkbandbreite in beliebiger Kombination zwischen EFA-Verkehr und IP-Verkehr verteilen können, sofern die Gesamtbandbreite 3 200 Gbit/s und die IP-Bandbreite 800 Gbit/s nicht überschreitet. Wenn Sie beispielsweise 400 Gbit/s für die IP-Bandbreite verwenden, können Sie bis zu 2 800 Gbit/s EFA-Bandbreite gleichzeitig erreichen.

**Anwendungsfall 1: IP-Adressen speichern und potenzielle Linux-IP-Probleme vermeiden**

Diese Konfiguration bietet bis zu 3 200 Gbit/s EFA-Netzwerkbandbreite und bis zu 100 Gbit/s IP-Netzwerkbandbreite mit einer privaten IP-Adresse. Diese Konfiguration trägt auch dazu bei, potenzielle Linux-IP-Probleme zu vermeiden, wie z. B. die unzulässige automatische Zuweisung öffentlicher IP-Adressen und IP-Routing-Herausforderungen (Probleme bei der Zuordnung von Host-Namen zu IP-Adressen und Nichtübereinstimmungen der Quell-IP-Adressen), die auftreten können, wenn eine Instance über mehrere Netzwerkschnittstellen verfügt. 
+ Verwenden Sie für die primäre Netzwerkschnittstelle (Netzwerkkartenindex 0, Geräteindex 0) eine ENA-Schnittstelle.
+ Erstellen Sie für Netzwerkkartenindex 0, Geräteindex 1, eine reine EFA-Netzwerkschnittstelle.
+ Verwenden Sie für die übrigen Netzwerkschnittstellen (Netzwerkkartenindizes 1—31, Geräteindex 0) ausschließlich EFA-Netzwerkschnittstellen.

**Anwendungsfall 2: Maximale EFA- und IP-Netzwerkbandbreite**

Diese Konfiguration bietet bis zu 3 200 Gbit/s EFA-Netzwerkbandbreite und bis zu 800 Gbit/s IP-Netzwerkbandbreite mit 8 privaten IP-Adressen. Mit dieser Konfiguration können Sie öffentliche IP-Adressen nicht automatisch zuweisen. Sie können jedoch nach dem Start eine elastische IP-Adresse an die primäre Netzwerkschnittstelle anhängen (Netzwerkkartenindex=0, Geräteindex=0), um eine Internetverbindung herzustellen.
+ Verwenden Sie für die primäre Netzwerkschnittstelle (Netzwerkkartenindex 0, Geräteindex 0) eine ENA-Netzwerkschnittstelle.
+ Führen Sie für die verbleibenden Schnittstellen die folgenden Schritte aus:
  + Geben Sie Netzwerkschnittstellen nur für EFA für Netzwerkkartenindex 0 (Geräteindex 1) an, und verwenden Sie für Netzwerkkartenindizes 1, 2 und 3 den Geräteindex 0.
  + Geben Sie eine ENA-Netzwerkschnittstelle und vier reine EFA-Netzwerkschnittstellen **in jeder** der folgenden Netzwerkkarten-Index-Untergruppen an und verwenden Sie Geräteindex 1 für die ENA-Netzwerkschnittstelle und den Geräteindex 0 für reine EFA-Netzwerkschnittstellen:
    + [4,5,6,7]
    + [8,9,10,11]
    + [12,13,14,15]
    + [16,17,18,19]
    + [20,21,22,23]
    + [24,25,26,27]
    + [28,29,30,31]

Das folgende Beispiel veranschaulicht diese Konfiguration:

```
$ aws --region $REGION ec2 run-instances \
 --instance-type p5.48xlarge \
 --count 1 \
 --key-name key_pair_name \
 --image-id ami_id \
 --network-interfaces "NetworkCardIndex=0,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=0,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=1,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=2,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=3,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=4,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=4,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=5,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=6,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=7,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=8,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=8,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=9,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=10,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=11,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=12,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=12,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=13,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=14,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=15,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=16,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=16,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=17,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=18,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=19,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=20,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=20,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=21,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=22,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=23,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=24,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=24,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=25,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=26,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=27,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=28,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=28,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=29,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=30,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=31,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only"
...
```

## EFA-Konfiguration für P6-B200-Instances
<a name="efa-for-p6-b200"></a>

P6-B200-Instances haben eine gesamte Netzwerkbandbreitenkapazität von 3 200 Gbit/s, wovon bis zu 1 600 Gbit/s für ENA genutzt werden können. Sie verfügen über 8 GPUs und 8 Netzwerkkarten, wobei jede Netzwerkkarte bis zu 400 Gbit/s EFA-Bandbreite und 200 Gbit/s ENA-Bandbreite unterstützt. Da EFA- und ENA-Netzwerkverkehr dieselben zugrunde liegenden Ressourcen gemeinsam nutzen, reduziert die Bandbreite, die von der einen verwendet wird, die Bandbreite, die der anderen zur Verfügung steht.

**Anwendungsfall 1: IP-Adressen speichern**

Diese Konfiguration verbraucht mindestens eine private IP-Adresse pro Instance und unterstützt bis zu 3 200 Gbit/s EFA-Bandbreite und 200 Gbit/s ENA-Bandbreite.
+ Verwenden Sie für die primäre Netzwerkschnittstelle (Netzwerkkartenindex 0, Geräteindex 0) eine ENA-Schnittstelle.
+ Erstellen Sie für Netzwerkkartenindex 0, Geräteindex 1, eine reine EFA-Netzwerkschnittstelle.
+ Verwenden Sie für die verbleibenden 7 Netzwerkkarten (Netzwerkkartenindizes 1—7, Geräteindex 0) ausschließlich EFA-Netzwerkschnittstellen.

**Anwendungsfall 2: Maximale EFA- und ENA-Bandbreite**

Diese Konfiguration verbraucht mindestens 8 private IP-Adressen pro Instance und unterstützt bis zu 3 200 Gbit/s EFA-Bandbreite und 1600 Gbit/s ENA-Bandbreite.
+ Verwenden Sie für die primäre Netzwerkschnittstelle (Netzwerkkartenindex 0, Geräteindex 0) eine ENA-Schnittstelle.
+ Erstellen Sie für Netzwerkkartenindex 0, Geräteindex 1, eine reine EFA-Netzwerkschnittstelle.
+ Erstellen Sie für die verbleibenden 7 Netzwerkkarten (Netzwerkkartenindizes 1—7) eine reine EFA-Netzwerkschnittstelle auf Geräteindex 0 und eine ENA-Netzwerkschnittstelle auf Geräteindex 1.

## EFA-Konfiguration für P6e-Instanzen GB200
<a name="efa-for-p6e"></a>

GB200 P6e-Instances können mit bis zu 17 Netzwerkkarten konfiguriert werden. Die folgende Abbildung zeigt das Layout der physischen Netzwerkschnittstellenkarte (NIC) für GB200 P6e-Instances zusammen mit der Zuordnung der Netzwerkkartenindizes (). NCIs

![\[Zuordnung von physischen Netzwerkschnittstellenkarten (NIC) und Netzwerkkartenindex (NCI) für P6e-Instanzen. GB200\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/images/p6e.png)


Das primäre NCI (Index 0) unterstützt bis zu 100 Gbit/s ENA-Bandbreite. NCIs mit den folgenden Indizes werden ausschließlich EFA-Netzwerkschnittstellen und eine EFA-Bandbreite von 400 Gbit/s unterstützt: [1, 3, 5, 7, 9, 11, 13, 15]. NCIs mit den folgenden Indizes werden bis zu 200 Gbit/s ENA- oder EFA-Bandbreite unterstützt: [2, 4, 6, 8, 10, 12, 14, 16].

Die folgenden Gruppen teilen NCIs sich eine zugrunde liegende physische Netzwerkkarte auf dem Host:
+ [1 und 2]
+ [3 und 4]
+ [5 und 6]
+ [7 und 8]
+ [9 und 10]
+ [11 und 12]
+ [13 und 14]
+ [15 und 16]

Jede physische NIC unterstützt eine Bandbreite von bis zu 400 Gbit/s. Da NCIs sich die Gruppen dieselbe zugrunde liegende physische Netzwerkkarte teilen, reduziert die von einer Gruppe verwendete Bandbreite die Bandbreite, die der anderen zur Verfügung steht. Wenn beispielsweise NIC 2 200 Gbit/s ENA-Bandbreite verwendet, kann NCI 1 gleichzeitig bis zu 200 Gbit/s EFA-Bandbreite verwenden.

Jede zugrunde liegende GPU auf dem Host kann Datenverkehr direkt über die folgenden Paare sendenNCIs:
+ [1 und 3]
+ [5 und 7]
+ [9 und 11]
+ [13 und 15]

Jede GPU unterstützt bis zu 400 Gbit/s EFA-Bandbreite. Da die Netzwerkkarten in diesen Gruppen dieselbe GPU gemeinsam nutzen, reduziert die Bandbreite, die von der einen verwendet wird, die Bandbreite, die der anderen zur Verfügung steht- Wenn beispielsweise NIC 1 200 Gbit/s EFA-Bandbreite verwendet, kann NCI 3 gleichzeitig bis zu 200 Gbit/s EFA-Bandbreite verwenden. Um eine maximale EFA-Leistung zu erzielen, empfehlen wir Ihnen daher, **einen der folgenden Schritte** durchzuführen, um eine EFA-Bandbreite von insgesamt 1 600 Gbit/s zu erreichen:
+ Fügen Sie nur einer NCI in jeder Gruppe eine reine EFA-Netzwerkschnittstelle hinzu, um 400 Gbit/s pro Netzwerkschnittstelle zu erreichen (*4 EFA-Netzwerkschnittstellen x 400 Gbit/s*).
+ Fügen Sie jeder NCI in jeder Gruppe eine reine EFA-Netzwerkschnittstelle hinzu, um 200 Gbit/s pro Netzwerkschnittstelle zu erreichen (*8 EFA-Netzwerkschnittstellen x 200 Gbit/s*).

Die folgende Konfiguration bietet beispielsweise bis zu 1 600 Gbit/s EFA-Bandbreite mit einer einzigen reinen EFA-Netzwerkschnittstelle in jeder NCI-Gruppe und bis zu 100 Gbit/s ENA-Netzwerkbandbreite, wenn nur die primäre NCI verwendet wird (Index 0).
+ Verwenden Sie für die primäre NCI (Netzwerkkartenindex 0, Geräteindex 0) eine EFA-Netzwerkschnittstelle.
+ Fügen Sie den Folgenden eine reine EFA-Netzwerkschnittstellen hinzu:
  + NCI 1, Geräteindex 0
  + NCI 5, Geräteindex 0
  + NCI 9, Geräteindex 0
  + NCI 13, Geräteindex 0

## EFA-Konfiguration für P6-B300-Instanzen
<a name="efa-for-p6-b300"></a>

P6-B300-Instances haben eine gesamte Netzwerkbandbreitenkapazität von bis zu 6400 Gbit/s für EFA-Verkehr und bis zu 3870 Gbit/s für ENA-Verkehr. Sie verfügen über 8 GPUs und 17 Netzwerkkarten, wobei die primäre Netzwerkkarte nur eine ENA-Netzwerkschnittstelle mit bis zu 350 Gbit/s Bandbreite unterstützt. Die sekundären Netzwerkkarten unterstützen bis zu 400 Gbit/s EFA und bis zu 220 Gbit/s ENA-Bandbreite. Da EFA- und ENA-Netzwerkverkehr dieselben zugrunde liegenden Ressourcen gemeinsam nutzen, reduziert die Bandbreite, die von der einen verwendet wird, die Bandbreite, die der anderen zur Verfügung steht.

![\[Zuordnung von physischen Netzwerkschnittstellenkarten (NIC) und Netzwerkkartenindex (NCI) für P6-B300-Instances.\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/images/p6-b300.png)


**Anwendungsfall 1: IP-Adressen speichern**

Diese Konfiguration verbraucht mindestens eine private IP-Adresse pro Instanz und unterstützt bis zu 6400 Gbit/s EFA-Bandbreite und bis zu 350 Gbit/s ENA-Bandbreite.
+ Verwenden Sie für die primäre Netzwerkschnittstelle (Netzwerkkartenindex 0, Geräteindex 0) eine ENA-Netzwerkschnittstelle.
+ Verwenden Sie für die übrigen Netzwerkkarten (Netzwerkkartenindizes 1—16, Geräteindex 0) ausschließlich EFA-Netzwerkschnittstellen.

```
--network-interfaces \
"NetworkCardIndex=0,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=1,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=2,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=3,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=4,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=5,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=6,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=7,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=8,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=9,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=10,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=11,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=12,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=13,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=14,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=15,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=16,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only"
```

**Anwendungsfall 2: Maximale EFA- und ENA-Bandbreite**

Diese Konfiguration verbraucht mindestens 17 private IP-Adressen pro Instanz und unterstützt bis zu 6400 Gbit/s EFA-Bandbreite und bis zu 3870 Gbit/s ENA-Bandbreite.
+ Verwenden Sie für die primäre Netzwerkschnittstelle (Netzwerkkartenindex 0, Geräteindex 0) eine ENA-Netzwerkschnittstelle.
+ Erstellen Sie für die übrigen Netzwerkkarten eine reine EFA-Schnittstelle (Netzwerkkartenindizes 1—16, Geräteindex 0) und eine ENA-Schnittstelle (Netzwerkkartenindizes 1—16, Geräteindex 1).

```
--network-interfaces \
"NetworkCardIndex=0,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=1,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=2,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=3,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=4,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=5,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=6,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=7,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=8,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=9,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=10,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=11,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=12,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=13,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=14,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=15,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=16,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=1,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=2,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=3,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=4,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=5,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=6,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=7,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=8,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=9,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=10,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=11,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=12,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=13,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=14,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=15,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=16,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface"
```

# Erstellen eines Elastic Fabric Adapters und Hinzufügen zu einer Amazon-EC2-Instance
<a name="create-efa"></a>

Sie können einen EFA erstellen und ihn mit einer Amazon-EC2-Instance verbinden, wie jede andere elastische Netzwerkschnittstelle in Amazon EC2. Im Gegensatz zu elastischen Netzwerkschnittstellen EFAs können sie jedoch nicht an eine Instance in einem bestimmten Zustand angehängt oder von dieser getrennt werden. `running`

**Überlegungen**
+  Sie können die Sicherheitsgruppe ändern, die einem EFA zugeordnet ist. Zum Aktivieren der Funktion der Betriebssystemumgehung muss das EFA zu einer Sicherheitsgruppe gehören, die allen eingehenden und ausgehenden Datenverkehr von und zu der Sicherheitsgruppe selbst zulässt. Weitere Informationen finden Sie unter [Schritt 1: Vorbereiten einer EFA-aktivierten Sicherheitsgruppe](efa-start.md#efa-start-security).

  Sie können die Sicherheitsgruppe, die einem EFA zugewiesen ist, auf gleiche Weise ändern, wie Sie die Sicherheitsgruppe ändern, die einer Elastic Network Interface zugewiesen ist. Weitere Informationen finden Sie unter [Ändern der Netzwerkschnittstellen-Attribute](modify-network-interface-attributes.md).
+ Sie weisen einer EFA-Netzwerkschnittstelle (EFA mit ENAIPv4) eine Elastic IP () und eine IPv6 Adresse auf die gleiche Weise zu, wie Sie einer elastic network interface eine IP-Adresse zuweisen. Weitere Informationen finden Sie unter [Verwalten von IP-Adressen](managing-network-interface-ip-addresses.md).

  Sie können einer Nur-EFA-Netzwerkschnittstelle keine IP-Adresse zuweisen.

**Topics**
+ [

## Erstellen eines EFA
](#efa-create)
+ [

## Anfügen eines EFA an eine gestoppte Instance
](#efa-attach)
+ [

## Anfügen einer EFA beim Starten einer Instance
](#efa-launch)
+ [

## Hinzufügen eines EFA zu einer Startvorlage
](#efa-launch-template)

## Erstellen eines EFA
<a name="efa-create"></a>

Sie können ein EFA in einem Subnetz in einer VPC erstellen. Sie können das EFA nach der Erstellung nicht in ein anderes Subnetz verschieben und Sie können es nur an Instances in der gleichen Availability Zone anfügen.

------
#### [ Console ]

**So erstellen Sie eine EFA-Netzwerkschnittstelle (EFA mit ENA oder nur ENA)**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Klicken Sie im Navigationsbereich auf **Network Interfaces** (Netzwerkschnittstellen) und wählen Sie dann **Netzwerkschnittstelle erstellen** aus.

1. Geben Sie unter **Description (Beschreibung)** einen aussagekräftigen Namen für das EFA ein.

1. Wählen Sie für **Subnet (Subnetz)** das Subnetz aus, in das Sie das EFA erstellen möchten.

1. Wählen Sie für **Schnittstellentyp** eine der folgenden Optionen:
   + **EFA mit ENA** – Um eine Netzwerkschnittstelle zu erstellen, die sowohl ENA- als auch EFA-Geräte unterstützt.
   + **Nur EFA** – Um eine Netzwerkschnittstelle nur mit einem EFA-Gerät zu erstellen.

1. (Nur für EFA mit ENA) Konfigurieren Sie die IP-Adresse und die Präfixzuweisung für die Netzwerkschnittstelle. Die Art der IP-Adressen und Präfixe, die Sie zuweisen können, hängt vom ausgewählten Subnetz ab. Für IPv4 reine Subnetze können Sie nur IPv4 IP-Adressen und Präfixe zuweisen. Für Subnetze, die IPv6 nur den Status „-Status“ haben, können Sie nur IPv6 IP-Adressen und Präfixe zuweisen. Dual-Stack-Subnetzen können Sie sowohl IP-Adressen als auch Präfixe IPv4 zuweisen. IPv6 
**Anmerkung**  
Sie können einer reinen EFA-Netzwerkschnittstelle keine IP-Adressen zuweisen.

   1. Wählen Sie für **Private IPv4 and/or **IPv6 Adressadresse**** die Option **Automatisch zuweisen**, damit Amazon EC2 automatisch eine IP-Adresse aus dem ausgewählten Subnetz zuweist, oder wählen Sie **Benutzerdefiniert**, um die zuzuweisende IP-Adresse manuell anzugeben.

   1. Wenn Sie eine IPv6 Adresse zuweisen, können Sie optional die Option Primäre IP **zuweisen** aktivieren. IPv6 Dadurch wird der Netzwerkschnittstelle eine primäre IPv6 globale Unicast-Adresse (GUA) zugewiesen. Durch die Zuweisung einer primären IPv6 Adresse können Sie verhindern, dass der Datenverkehr zu den Instances oder unterbrochen wird. ENIs [Weitere Informationen finden Sie unter IPv6 Adressen.](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#vpc-ipv6-addresses)

   1. Wählen Sie für IPv4 die **Delegierung** von and/or **IPv6 Präfix-Delegierungen** **Automatisch zuweisen**, damit Amazon EC2 automatisch ein Präfix aus dem CIDR-Block des Subnetzes zuweist, oder wählen Sie **Benutzerdefiniert**, um manuell ein Präfix aus dem CIDR-Block des Subnetzes anzugeben. Wenn Sie ein Präfix angeben, wird AWS überprüft, ob es nicht bereits einer anderen Ressource zugewiesen ist. Weitere Informationen finden Sie unter [Präfix-Delegierung für EC2 Amazon-Netzwerkschnittstellen](ec2-prefix-eni.md).

   1. (Optional) Konfigurieren Sie die **Timeout-Einstellungen für die Nachverfolgung von Verbindungen im Leerlauf**. Weitere Informationen finden Sie unter [Timeout für die Nachverfolgung von Leerlaufverbindungen](security-group-connection-tracking.md#connection-tracking-timeouts).
      + **Timeout für bestehende TCP-Verbindungen** – Die Timeout-Zeit in Sekunden für bestehende TCP-Verbindungen im Leerlauf. Min: 60 Sekunden. Max: 432 000 Sekunden (fünf Tage). Standard: 432 000 Sekunden. Empfohlen: Weniger als 432 000 Sekunden.
      + **UDP-Timeout** – Die Timeout-Zeit in Sekunden für UDP-Datenflüsse im Leerlauf, bei denen Datenverkehr nur in eine Richtung oder nur in einer einzelnen Anforderung-Antwort-Transaktion übermittelt wurde. Min: 30 Sekunden. Max: 60 Sekunden. Standard: 30 Sekunden.
      + **UDP-Stream-Timeout** – Die Timeout-Zeit in Sekunden für UDP-Datenflüsse im Leerlauf, die als Streams klassifiziert sind, bei denen mehr als eine Anforderung-Antwort-Transaktion stattgefunden hat. Min: 60 Sekunden. Max: 180 Sekunden (3 Minuten) Standard: 180 Sekunden.

1. Wählen Sie unter **Security groups (Sicherheitsgruppen)** eine oder mehrere Sicherheitsgruppen aus.

1. Klicken Sie auf **Create network interface (Netzwerkschnittstellen erstellen)**.

------
#### [ AWS CLI ]

**So erstellen Sie ein EFA**  
Verwenden Sie den Befehl [create-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html). Geben Sie für `--interface-type` entweder `efa` für eine EFA-Netzwerkschnittstelle oder `efa-only` für eine reine EFA-Netzwerkschnittstelle an.

```
aws ec2 create-network-interface \
    --subnet-id subnet-0abcdef1234567890 \
    --interface-type efa \
    --description "my efa"
```

------
#### [ PowerShell ]

**So erstellen Sie ein EFA**  
Verwenden Sie das cmdlet [New-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2NetworkInterface.html). Geben Sie für `-InterfaceType` entweder `efa` für eine EFA-Netzwerkschnittstelle oder `efa-only` für eine reine EFA-Netzwerkschnittstelle an.

```
New-EC2NetworkInterface `
    -SubnetId subnet-0abcdef1234567890 `
    -InterfaceType efa `
    -Description "my efa"
```

------

## Anfügen eines EFA an eine gestoppte Instance
<a name="efa-attach"></a>

Sie können ein EFA an jede unterstützte Instance anfügen, die sich im Zustand `stopped` befindet. Sie können keine EFA an eine Instance anfügen, die sich im Zustand `running` befindet. Weitere Informationen zu den unterstützten Instance-Typen finden Sie unter [Unterstützte Instance-Typen](efa.md#efa-instance-types).

Sie fügen einen EFA auf gleiche Weise an eine Instance an, wie Sie eine Schnittstelle an eine Instance anfügen. Weitere Informationen finden Sie unter [Netzwerkschnittstelle anhängen](network-interface-attachments.md#attach_eni).

## Anfügen einer EFA beim Starten einer Instance
<a name="efa-launch"></a>

------
#### [ AWS CLI ]

**So fügen Sie beim Starten einer Instance eine vorhandene EFA an**  
Verwenden den Befehl [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) mit der Option `--network-interfaces`. Geben Sie für die primäre Netzwerkschnittstelle eine EFA-Netzwerkschnittstelle und `NetworkCardIndex=0` und `DeviceIndex=0` an. Um mehrere EFA-Netzwerkschnittstellen anzuschließen, finden Sie Informationen unter [Maximierung der Netzwerkbandbreite](efa-acc-inst-types.md).

```
--network-interfaces "NetworkCardIndex=0, \
    DeviceIndex=0, \
    NetworkInterfaceId=eni-1234567890abcdef0, \
    Groups=sg-1234567890abcdef0, \
    SubnetId=subnet-0abcdef1234567890"
```

**So fügen Sie beim Starten einer Instance eine neue EFA an**  
Verwenden den Befehl [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) mit der Option `--network-interfaces`. Verwenden Sie für die primäre Netzwerkschnittstelle `NetworkCardIndex=0`, `DeviceIndex=0` und `InterfaceType=efa` an. Wenn Sie mehrere EFA-Netzwerkschnittstellen anschließen, finden Sie weitere Informationen unter [Maximierung der Netzwerkbandbreite](efa-acc-inst-types.md).

```
--network-interfaces "NetworkCardIndex=0, \
    DeviceIndex=0, \
    InterfaceType=efa, \
    Groups=sg-1234567890abcdef0, \
    SubnetId=subnet-0abcdef1234567890"
```

------
#### [ PowerShell ]

**So fügen Sie beim Starten einer Instance eine vorhandene EFA an**  
Verwenden Sie das [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html)Cmdlet mit dem Parameter. `-NetworkInterfaces`

```
-NetworkInterface $networkInterface
```

Definieren Sie die Netzwerkschnittstelle wie folgt.

```
$networkInterface = New-Object Amazon.EC2.Model.InstanceNetworkInterfaceSpecification
$networkInterface.DeviceIndex = 0
$networkInterface.NetworkInterfaceId = "eni-1234567890abcdef0"
$networkInterface.Groups = @("sg-1234567890abcdef0")
$networkInterface.SubnetId = "subnet-0abcdef1234567890"
```

**So fügen Sie beim Starten einer Instance eine neue EFA an**  
Verwenden Sie das [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html)Cmdlet mit dem Parameter. `-NetworkInterfaces`

```
-NetworkInterface $networkInterface
```

Definieren Sie die Netzwerkschnittstelle wie folgt.

```
$networkInterface = New-Object Amazon.EC2.Model.InstanceNetworkInterfaceSpecification
$networkInterface.DeviceIndex = 0
$networkInterface.InterfaceType = "efa"
$networkInterface.Groups = @("sg-1234567890abcdef0")
$networkInterface.SubnetId = "subnet-0abcdef1234567890"
```

------

## Hinzufügen eines EFA zu einer Startvorlage
<a name="efa-launch-template"></a>

Sie können eine Startvorlage erstellen, die die Konfigurationsdaten zum Starten einer EFA-aktivierten Instance enthält. Sie können sowohl EFA- als auch Nur-EFA-Netzwerkschnittstellen in der Startvorlage angeben. Zum Erstellen einer EFA-aktivierten Startvorlage erstellen Sie eine neue Startvorlage und geben einen unterstützten Instance-Typen, Ihr EFA-aktiviertes AMI und eine EFA-aktivierte Sicherheitsgruppe an. Geben Sie für `NetworkInterfaces` die anzuschließenden EFA-Netzwerkschnittstellen an. Verwenden Sie für die primäre Netzwerkschnittstelle `NetworkCardIndex=0`, `DeviceIndex=0` und `InterfaceType=efa` an. Wenn Sie mehrere EFA-Netzwerkschnittstellen anschließen, finden Sie weitere Informationen unter [Maximieren der Netzwerkbandbreite auf Amazon-EC2-Instances mit mehreren Netzwerkkarten](efa-acc-inst-types.md).

Sie können Startvorlagen verwenden, um EFA-fähige Instances mit anderen AWS Diensten wie oder zu starten. [AWS Batch[AWS ParallelCluster](https://docs.aws.amazon.com/parallelcluster/latest/ug/what-is-aws-parallelcluster.html)](https://docs.aws.amazon.com/batch/latest/userguide/what-is-batch.html)

Weitere Informationen zum Erstellen von Startvorlagen finden Sie unter [Eine Amazon-EC2-Startvorlage erstellen](create-launch-template.md).

# Trennen und löschen Sie eine EFA von einer Amazon-EC2-Instance
<a name="detach-efa"></a>

Sie können eine EFA von einer Amazon-EC2-Instance trennen und sie auf dieselbe Weise wie alle anderen Elastic-Network-Schnittstellen in Amazon EC2 löschen.

## Trennen eines EFA
<a name="efa-detach"></a>

Zum Trennen eines EFA von der Instance müssen Sie zuerst die Instance stoppen. Sie können kein EFA von einer Instance trennen, die sich in einem laufenden Zustand befindet.

Sie trennen ein EFA auf gleiche Weise von einer Instance, wie Sie eine Elastic Network-Schnittstelle von einer Instance trennen. Weitere Informationen finden Sie unter [Netzwerkschnittstelle abhängen](network-interface-attachments.md#detach_eni).

## Löschen eines EFA
<a name="efa-delete"></a>

Zum Löschen eines EFA müssen Sie es zuerst von der Instance trennen. Sie können keinen EFA löschen, während er an eine Instance angefügt ist.

Sie löschen EFAs auf die gleiche Weise wie Elastic Network-Schnittstellen. Weitere Informationen finden Sie unter [Löschen einer Netzwerkschnittstelle](delete_eni.md).

# Elastic Fabric-Adapter auf Amazon EC2 überwachen
<a name="efa-working-monitor"></a>

Sie können die folgenden Features zum Überwachen der Leistung Ihrer Elastic Fabric Adapter verwenden.

**Topics**
+ [

## EFA-Treiber-Metriken für eine Amazon-EC2-Instance
](#efa-driver-metrics)
+ [

## Amazon VPC-Flussprotokolle
](#efa-flowlog)
+ [

## Amazon CloudWatch
](#efa-cloudwatch)

## EFA-Treiber-Metriken für eine Amazon-EC2-Instance
<a name="efa-driver-metrics"></a>

Der Elastic Fabric Adapter (EFA)-Treiber veröffentlicht mehrere Metriken von den Instances, an die EFA-Schnittstellen angeschlossen sind, in Echtzeit. Sie können diese Metriken verwenden, um Probleme mit der Instance-Leistung zu beheben, die richtige Cluster-Größe für einen Workload auszuwählen, Skalierungsaktivitäten proaktiv zu planen und Anwendungen zu vergleichen, um zu bestimmen, ob sie die auf einer Instance verfügbare EFA-Leistung maximieren.

**Topics**
+ [

### Verfügbare EFA-Treibermetriken
](#available-efa-metrics)
+ [

### EFA-Treibermetriken für Ihre Instance abrufen
](#view-efa-driver-metrics)

### Verfügbare EFA-Treibermetriken
<a name="available-efa-metrics"></a>

Die ENA-Treiber publizieren die folgenden Metriken in Echtzeit an die Instance. Dabei geben Sie die Gesamtzahl der Fehler, Verbindungsereignisse und Pakete oder Bytes an, die seit dem Start der Instance oder dem letzten Treiber-Reset von den angehängten EFA-Geräten gesendet, empfangen oder gelöscht wurden.


| Metrik | Description | Unterstützte Instance-Typen | 
| --- | --- | --- | 
| tx\$1bytes |  Die Anzahl der übertragenen Bytes. Einheit: Bytes  | Alle Instance-Typen, die EFA unterstützen | 
| rx\$1bytes |  Die Anzahl der empfangenen Bytes. Einheit: Bytes  | Alle Instance-Typen, die EFA unterstützen | 
| tx\$1pkts |  Die Anzahl der übertragenen Pakete. Einheit: Anzahl  | Alle Instance-Typen, die EFA unterstützen | 
| rx\$1pkts |  Die Anzahl der empfangenen Pakete. Einheit: Anzahl  | Alle Instance-Typen, die EFA unterstützen | 
| rx\$1drops |  Die Anzahl der empfangenen und dann verworfenen Pakete. Einheit: Anzahl  | Alle Instance-Typen, die EFA unterstützen | 
| send\$1bytes |  Die Anzahl der über Sendevorgänge gesendeten Bytes. Einheit: Bytes  | Alle Instance-Typen, die EFA unterstützen | 
| recv\$1bytes |  Die Anzahl der von Sendevorgängen empfangenen Bytes. Einheit: Bytes  | Alle Instance-Typen, die EFA unterstützen | 
| send\$1wrs |  Die Anzahl der über Sendevorgängen gesendeten Pakete. Einheit: Anzahl  | Alle Instance-Typen, die EFA unterstützen | 
| recv\$1wrs |  Die Anzahl der von Sendevorgängen empfangenen Pakete. Einheit: Anzahl  | Alle Instance-Typen, die EFA unterstützen | 
| rdma\$1write\$1wrs |  Die Anzahl der abgeschlossenen RDMA-Schreibvorgänge. Einheit: Anzahl  | Alle Instance-Typen, die EFA unterstützen | 
| rdma\$1read\$1wrs |  Die Anzahl der abgeschlossenen RDMA-Schreibvorgänge. Einheit: Anzahl  | Alle Instance-Typen, die EFA unterstützen | 
| rdma\$1write\$1bytes |  Die Anzahl der von anderen Instances mithilfe von RDMA-Schreibvorgängen darauf geschriebenen Bytes. Einheit: Bytes  | Alle Instance-Typen, die EFA unterstützen | 
| rdma\$1read\$1bytes |  Die Anzahl der über RDMA-Lesevorgänge empfangenen Bytes. Einheit: Bytes  | Alle Instance-Typen, die EFA unterstützen | 
| rdma\$1write\$1wr\$1err |  Die Anzahl der RDMA-Schreibvorgänge, bei denen lokale oder externe Fehler aufgetreten sind. Einheit: Anzahl  | Alle Instance-Typen, die EFA unterstützen | 
| rdma\$1read\$1wr\$1err |  Die Anzahl der RDMA-Schreibvorgänge, bei denen lokale oder externe Fehler aufgetreten sind. Einheit: Anzahl  | Alle Instance-Typen, die EFA unterstützen | 
| rdma\$1read\$1resp\$1bytes |  Die Anzahl der als Antwort auf RDMA-Lesevorgänge gesendeten Bytes. Einheit: Bytes  | Alle Instance-Typen, die EFA unterstützen | 
| rdma\$1write\$1recv\$1bytes |  Die Anzahl der von Sendevorgängen empfangenen Bytes. Einheit: Bytes  | Alle Instance-Typen, die EFA unterstützen | 
| retrans\$1bytes |  Die Anzahl der erneut übertragenen EFA-SRD-Bytes. Einheit: Anzahl  | Instance-Typen von Nitro v4 und höher, die EFA unterstützen | 
| retrans\$1pkts |  Die Anzahl der erneut übertragenen EFA-SRD-Pakete. Einheit: Bytes  | Instance-Typen von Nitro v4 und höher, die EFA unterstützen | 
| retrans\$1timeout\$1events |  Die Häufigkeit, mit der EFA-SRD-Datenverkehr das Zeitlimit überschritten hat und zu einer Änderung des Netzwerkpfads geführt hat. Einheit: Anzahl  | Instance-Typen von Nitro v4 und höher, die EFA unterstützen | 
| impaired\$1remote\$1conn\$1events |  Wie oft EFA-SRD-Verbindungen in einen beeinträchtigten Status übergegangen sind, was zu einer verringerten Durchsatzrate geführt hat. Einheit: Anzahl  | Instance-Typen von Nitro v4 und höher, die EFA unterstützen | 
| unresponsive\$1remote\$1events |  Wie oft eine EFA-SRD-Remoteverbindung nicht reagiert hat. Einheit: Anzahl  | Instance-Typen von Nitro v4 und höher, die EFA unterstützen | 

Weitere Informationen zu den Instance-Typen, die EFA unterstützen, finden Sie unter [Unterstützte Instance-Typen](efa.md#efa-instance-types).

### EFA-Treibermetriken für Ihre Instance abrufen
<a name="view-efa-driver-metrics"></a>

Sie können das Befehlszeilentool [rdma-tool](https://man7.org/linux/man-pages/man8/rdma.8.html) verwenden, um die Metriken für alle mit einer Instance verbundenen EFA-Schnittstellen wie folgt abzurufen:

```
$ rdma -p statistic show
link rdmap0s31/1 
    tx_bytes 0 
    tx_pkts 0 
    rx_bytes 0 
    rx_pkts 0 
    rx_drops 0 
    send_bytes 0 
    send_wrs 0 
    recv_bytes 0 
    recv_wrs 0 
    rdma_read_wrs 0 
    rdma_read_bytes 0 
    rdma_read_wr_err 0 
    rdma_read_resp_bytes 0 
    rdma_write_wrs 0 
    rdma_write_bytes 0 
    rdma_write_wr_err 0
    retrans_bytes 0
    retrans_pkts 0
    retrans_timeout_events 0
    unresponsive_remote_events 0
    impaired_remote_conn_events 0
```

Alternativ können Sie die Metriken für jede EFA-Schnittstelle, die an eine Instance angefügt ist, mit dem folgenden Befehl aus den SYS-Dateien abrufen.

```
$ more /sys/class/infiniband/device_number/ports/port_number/hw_counters/* | cat
```

Beispiel

```
$ more /sys/class/infiniband/rdmap0s31/ports/1/hw_counters/* | cat
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/lifespan
::::::::::::::
12
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_resp_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_wr_err
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_recv_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_wr_err
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/recv_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/recv_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rx_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rx_drops
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rx_pkts
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/send_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/send_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/tx_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/tx_pkts
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/retrans_bytes
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/retrans_pkts
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/retrans_timeout_events
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/unresponsive_remote_events
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/impaired_remote_conn_events
::::::::::::::
0
```

## Amazon VPC-Flussprotokolle
<a name="efa-flowlog"></a>

Sie können ein Amazon VPC-Flow-Protokoll erstellen, um Informationen über den Datenverkehr zu und von Ihrem EFA zu erfassen. Flow-Protokolldaten können in Amazon CloudWatch Logs und Amazon S3 veröffentlicht werden. Nachdem Sie ein Flow-Protokoll erstellt haben, können Sie die darin enthaltenen Daten abrufen und an dem gewählten Ziel anzeigen. Weitere Informationen finden Sie unter [VPC-Flow-Protokolle](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) im *Amazon VPC Benutzerhandbuch*.

Sie erstellen ein Flow-Protokoll für einen EFA auf gleiche Weise, wie Sie ein Flow-Protokoll für eine Elastic Network Interface erstellen. Weitere Informationen finden Sie unter [Erstellen eines Flow-Protokolls](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-flow-logs.html#create-flow-log) im *Amazon-VPC-Benutzerhandbuch*.

In den Flow-Protokolleinträgen wird EFA-Datenverkehr von `srcAddress` und `destAddress` identifiziert, die beide als MAC-Adressen formatiert sind, wie im folgenden Beispiel veranschaulicht.

```
version accountId  eniId        srcAddress        destAddress       sourcePort destPort protocol packets bytes start      end        action log-status
2       3794735123 eni-10000001 01:23:45:67:89:ab 05:23:45:67:89:ab -          -        -        9       5689  1521232534 1524512343 ACCEPT OK
```

## Amazon CloudWatch
<a name="efa-cloudwatch"></a>

Wenn Sie EFA in einem Amazon EKS-Cluster verwenden, können Sie Ihre EFAs Nutzung von CloudWatch Container Insights überwachen. Amazon CloudWatch Container Insights unterstützt alle [EFA-Treibermetriken](#efa-driver-metrics) mit Ausnahme von: `retrans_bytes``retrans_pkts`,`retrans_timeout_events`,`unresponsive_remote_events`, und`impaired_remote_conn_events`.

Weitere Informationen finden Sie unter [Amazon EKS- und Kubernetes Container Insights-Metriken](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-enhanced-EKS.html#Container-Insights-metrics-EFA) im * CloudWatch Amazon-Benutzerhandbuch*.

# Überprüfen des EFA-Installationsprogramms mithilfe einer Prüfsumme
<a name="efa-verify"></a>

Sie können den EFA-Tarball (`.tar.gz`Datei) optional mit einer OR-Prüfsumme verifizieren. MD5 SHA256 Diese Vorgehensweise wird empfohlen, um die Identität des Software-Publishers zu überprüfen und zu prüfen, ob die Anwendung seit der Veröffentlichung nicht verändert oder beschädigt wurde.

**So überprüfen Sie die Tarball**  
Verwenden Sie das Hilfsprogramm **md5sum** für die MD5 Prüfsumme oder das Hilfsprogramm **sha256sum** für die Prüfsumme und geben Sie den SHA256 Tarball-Dateinamen an. Sie müssen den Befehl aus dem Verzeichnis heraus ausführen, in dem Sie die Tarball-Datei gespeichert haben.
+ MD5

  ```
  $  md5sum tarball_filename.tar.gz
  ```
+ SHA256

  ```
  $  sha256sum tarball_filename.tar.gz
  ```

Die Befehle sollten einen Prüfsummenwert im folgenden Format zurückgeben.

```
checksum_value tarball_filename.tar.gz
```

Vergleichen Sie den vom Befehl zurückgegebenen Prüfsummenwert mit dem in der folgenden Tabelle angegebenen Prüfsummenwert. Wenn die Prüfsummen übereinstimmen, ist es sicher, das Installationsskript auszuführen. Wenn die Prüfsummen nicht übereinstimmen, führen Sie das Installationsskript nicht aus, und wenden Sie sich an den Support Support.

Der folgende Befehl verifiziert beispielsweise den EFA 1.9.4-Tarball anhand der Prüfsumme. SHA256 

```
$  sha256sum aws-efa-installer-1.9.4.tar.gz
```

Beispielausgabe:

```
1009b5182693490d908ef0ed2c1dd4f813cc310a5d2062ce9619c4c12b5a7f14 aws-efa-installer-1.9.4.tar.gz
```

In der folgenden Tabelle sind die Prüfsummen für aktuelle Versionen von EFA aufgeführt.


| Version | Prüfsummen | 
| --- | --- | 
| EFA 1.47.0 |  **MD5: **`c81d4caf24dabc04a6e4818590620f5f` **SHA256: **`2df4201e046833c7dc8160907bee7f52b76ff80ed147376a2d0ed8a0dd66b2db`  | 
| EFA 1.46.0 |  **MD5: a88bbd9b71624d7ca401b54bc2fc0c19** `` **SHA256: **`8302bd7849afb95c903a875d7dcb6f85b3d7629e9a8b67d020031cfc6f4d0ee1`  | 
| EFA 1.45.1 |  **MD5: 91c3c87e16bbcaca1513252c38b771bb** `` **SHA256: **`9aeb20c645135b6039cc08986d8f14e63280f7839e882a74df5e83627ffeaa17`  | 
| EFA 1.45.0 |  **MD5: 800aeddfa9d9c5f139a7b8f7c4fec627** `` **SHA256: **`25ba26a0877fe3317390dc126aad2f23e27fc461cf0b940004f032cb342fa539`  | 
| EFA 1,44.0 |  **MD5: d024f6bebe080db42745103b84ca7c43** `` **SHA256: **`f129a5b44a49d593d247e55a59eb9bcb57121566e1c2e42b832a4e794fa83d8a`  | 
| EFA 1.43.3 |  **MD5: **`4dbc6eeecc516760253c10cbedb6319d` **SHA256: **`6c470ebce254c7165347b5048895ac2996c88567271642297f4c597738300652`  | 
| EFA 1.43.2 |  **MD5: **`7287b25a07c9747c0d4001e8fc5f59b2` **SHA256: **`de15c5bdbc83b952afbde876110830c604ad0796680e5157c05f7c1979a41069`  | 
| EFA 1.43.1 |  **MD5: **`7cfafc8debaea51dd4966fa0b2bba673` **SHA256: 54211eda0c193138ee8ed09b5fb41c41fc76fe0a77935fa4ec8d989466342740** ``  | 
| EFA 1,43,0 |  **MD5: **`f2b3dd7dc8670b541f7c23fd58e5e503` **SHA256: **`786df3458c499237be33bb8e50ffd4da7c18c20e254380ffc80fb90833d8cc73`  | 
| EFA 1.42.0 |  **MD5: **`94b2b1db09da1dde08ec049db1f24370` **SHA256: **`4114fe612905ee05083ae5cb391a00a012510f3abfecc642d86c9a5ae4be9008`  | 
| EFA 1.41.0 |  **MD5: **`086181c3ee3f8da512fc6e1c795e8936` **SHA256: **`3506354cdfbe31ff552fe75f5d0d9bb7efd29cf79bd99457347d29c751c38f9f`  | 
| EFA 1.40.0 |  **MD5: **`f3ec6f73fbeaccba082327507581157c` **SHA256: **`30491b0fe7c3470d4439594538855c981b05fa69862d74f8c05eb9b97912368a`  | 
| EFA 1.39.0 |  **MD5: **`c223d5954a85a7fbcd248c942b866e43` **SHA256: **`2cbc028c03064633bb990782b47c36156637769e2f48704417a9c700a7a32101`  | 
| EFA 1.38.1 |  **MD5: **`f112569e828ab65187777f794bab542c` **SHA256: **`83923374afd388b1cfcf4b3a21a2b1ba7cf46a01a587f7b519b8386cb95e4f81`  | 
| EFA 1.38.0 |  **MD5: **`43a2a446b33a2506f40853d55059f1ea` **SHA256: **`4f436954f35ad53754b4d005fd8d0be63de3b4184de41a695b504bdce0fecb22`  | 
| EFA 1.37.0 |  **MD5: **`6328070192bae920eca45797ad4c1db1` **SHA256: **`2584fc3c8bb99f29b3285e275747ff09d67c18e162c2a652e36c976b72154bfb`  | 
| EFA 1.36.0 |  **MD5: **`1bec83180fbffb23452ab6469ca21dfa` **SHA256: **`de183f333cfb58aeb7908a67bf9106985ba3ccb7f8638b851d2a0d8dbfacaec4`  | 
| EFA 1.35.0 |  **MD5: **`252f03c978dca5f8e8d9f34e488b256e` **SHA256: **`432b6ad4368ba0cd8b902729d14a908a97be7a3dcc5239422ea994a47f35a5e1`  | 
| EFA 1.34.0 |  **MD5: **`5cd4b28d27a31677c16139b54c9acb45` **SHA256: **`bd68839e741b0afd3ec2e37d50603803cfa7a279c120f0a736cc57c2ff2d7fdc`  | 
| EFA 1.33.0 |  **MD5: **`e2f61fccbcaa11e2ccfddd3660522276` **SHA256: **`0372877b87c6a7337bb7791d255e1053b907d030489fb2c3732ba70069185fce`  | 
| EFA 1.32.0 |  **MD5: **`db8d65cc028d8d08b5a9f2d88881c1b1` **SHA256: **`5f7233760be57f6fee6de8c09acbfbf59238de848e06048dc54d156ef578fc66`  | 
| EFA 1.31.0 |  **MD5: **`856352f12bef2ccbadcd75e35aa52aaf` **SHA256: **`943325bd37902a4300ac9e5715163537d56ecb4e7b87b37827c3e547aa1897bf`  | 
| EFA 1.30.0 |  **MD5: **`31f48e1a47fe93ede8ebd273fb747358` **SHA256: **`876ab9403e07a0c3c91a1a34685a52eced890ae052df94857f6081c5f6c78a0a`  | 
| EFA 1.29.1 |  **MD5: **`e1872ca815d752c1d7c2b5c175e52a16` **SHA256: **`178b263b8c25845b63dc93b25bcdff5870df5204ec509af26f43e8d283488744`  | 
| EFA 1.29.0 |  **MD5: **`39d06a002154d94cd982ed348133f385` **SHA256: **`836655f87015547e733e7d9f7c760e4e24697f8bbc261bb5f3560abd4206bc36`  | 
| EFA 1.28.0 |  **MD5: **`9dc13b7446665822605e66febe074035` **SHA256: **`2e625d2d6d3e073b5178e8e861891273d896b66d03cb1a32244fd56789f1c435`  | 
| EFA 1.27.0 |  **MD5: **`98bfb515ea3e8d93f554020f3837fa15` **SHA256: **`1d49a97b0bf8d964d91652a79ac851f2550e33a5bf9d0cf86ec9357ff6579aa3`  | 
| EFA 1.26.1 |  **MD5: **`884e74671fdef4725501f7cd2d451d0c` **SHA256: **`c616994c924f54ebfabfab32b7fe8ac56947fae00a0ff453d975e298d174fc96`  | 
| EFA 1.26.0 |  **MD5: **`f8839f12ff2e3b9ba09ae8a82b30e663` **SHA256: **`bc1abc1f76e97d204d3755d2a9ca307fc423e51c63141f798c2f15be3715aa11`  | 
| EFA 1.25.1 |  **MD5: **`6d876b894547847a45bb8854d4431f18` **SHA256: **`d2abc553d22b89a4ce92882052c1fa6de450d3a801fe005da718b7d4b9602b06`  | 
| EFA 1.25.0 |  **MD5: **`1993836ca749596051da04694ea0d00c` **SHA256: **`98b7b26ce031a2d6a93de2297cc71b03af647194866369ca53b60d82d45ad342`  | 
| EFA 1.24.1 |  **MD5: **`211b249f39d53086f3cb0c07665f4e6f` **SHA256: **`120cfeec233af0955623ac7133b674143329f9561a9a8193e473060f596aec62`  | 
| EFA 1.24.0 |  **MD5: **`7afe0187951e2dd2c9cc4b572e62f924` **SHA256: **`878623f819a0d9099d76ecd41cf4f569d4c3aac0c9bb7ba9536347c50b6bf88e`  | 
| EFA 1.23.1 |  **MD5: **`22491e114b6ee7160a8290145dca0c28` **SHA256: **`5ca848d8e0ff4d1571cd443c36f8d27c8cdf2a0c97e9068ebf000c303fc40797`  | 
| EFA 1.23.0 |  **MD5: **`38a6d7c1861f5038dba4e441ca7683ca` **SHA256: **`555d497a60f22e3857fdeb3dfc53aa86d05926023c68c916d15d2dc3df6525bd`  | 
| EFA 1.22.1 |  **MD5: **`600c0ad7cdbc06e8e846cb763f92901b` **SHA256: **`f90f3d5f59c031b9a964466b5401e86fd0429272408f6c207c3f9048254e9665`  | 
| EFA 1.22.0 |  **MD5: **`8f100c93dc8ab519c2aeb5dab89e98f8` **SHA256: **`f329e7d54a86a03ea51da6ea9a5b68fb354fbae4a57a02f9592e21fce431dc3a`  | 
| EFA 1.21.0 |  **MD5: **`959ccc3a4347461909ec02ed3ba7c372` **SHA256: **`c64e6ca34ccfc3ebe8e82d08899ae8442b3ef552541cf5429c43d11a04333050`  | 
| EFA 1.20.0 |  **MD5: **`7ebfbb8e85f1b94709df4ab3db47913b` **SHA256: **`aeefd2681ffd5c4c631d1502867db5b831621d6eb85b61fe3ec80df983d1dcf0`  | 
| EFA 1.19.0 |  **MD5: **`2fd45324953347ec5518da7e3fefa0ec` **SHA256: **`99b77821b9e72c8dea015cc92c96193e8db307deee05b91a58094cc331f16709`  | 
| EFA 1.18.0 |  **MD5: **`fc2571a72f5d3c7b7b576ce2de38d91e` **SHA256: **`acb18a0808aedb9a5e485f1469225b9ac97f21db9af78e4cd6939700debe1cb6`  | 
| EFA 1.17.3 |  **MD5: **`0517df4a190356ab559235147174cafd` **SHA256: **`5130998b0d2883bbae189b21ab215ecbc1b01ae0231659a9b4a17b0a33ebc6ca`  | 
| EFA 1.17.2 |  **MD5: **`a329dedab53c4832df218a24449f4c9a` **SHA256: **`bca1fdde8b32b00346e175e597ffab32a09a08ee9ab136875fb38283cc4cd099`  | 
| EFA 1.17.1 |  **MD5: **`733ae2cfc9d14b52017eaf0a2ab6b0ff` **SHA256: **`f29322640a88ae9279805993cb836276ea240623820848463ca686c8ce02136f`  | 
| EFA 1.17.0 |  **MD5: **`d430fc841563c11c3805c5f82a4746b1` **SHA256: **`75ab0cee4fb6bd38889dce313183f5d3a83bd233e0a6ef6205d8352821ea901d`  | 
| EFA 1.16.0 |  **MD5: **`399548d3b0d2e812d74dd67937b696b4` **SHA256: **`cecec36495a1bc6fdc82f97761a541e4fb6c9a3cbf3cfcb145acf25ea5dbd45b`  | 
| EFA 1.15.2 |  **MD5: **`955fea580d5170b05823d51acde7ca21` **SHA256: **`84df4fbc1b3741b6c073176287789a601a589313accc8e6653434e8d4c20bd49`  | 
| EFA 1.15.1 |  **MD5: **`c4610267039f72bbe4e35d7bf53519bc` **SHA256: **`be871781a1b9a15fca342a9d169219260069942a8bda7a8ad06d4baeb5e2efd7`  | 
| EFA 1.15.0 |  **MD5: **`9861694e1cc00d884fadac07d22898be` **SHA256: **`b329862dd5729d2d098d0507fb486bf859d7c70ce18b61c302982234a3a5c88f`  | 
| EFA 1.14.1 |  **MD5: **`50ba56397d359e57872fde1f74d4168a` **SHA256: **`c7b1b48e86fe4b3eaa4299d3600930919c4fe6d88cc6e2c7e4a408a3f16452c7`  | 
| EFA 1.14.0 |  **MD5: **`40805e7fd842c36ececb9fd7f921b1ae` **SHA256: **`662d62c12de85116df33780d40e0533ef7dad92709f4f613907475a7a1b60a97`  | 
| EFA 1.13.0 |  **MD5: **`c91d16556f4fd53becadbb345828221e` **SHA256: **`ad6705eb23a3fce44af3afc0f7643091595653a723ad0374084f4f2b715192e1`  | 
| EFA 1.12.3 |  **MD5: **`818aee81f097918cfaebd724eddea678` **SHA256: **`2c225321824788b8ca3fbc118207b944cdb096b847e1e0d1d853ef2f0d727172`  | 
| EFA 1.12.2 |  **MD5: **`956bb1fc5ae0d6f0f87d2e481d49fccf` **SHA256: **`083a868a2c212a5a4fcf3e4d732b685ce39cceb3ca7e5d50d0b74e7788d06259`  | 
| EFA 1.12.1 |  **MD5: **`f5bfe52779df435188b0a2874d0633ea` **SHA256: **`5665795c2b4f09d5f3f767506d4d4c429695b36d4a17e5758b27f033aee58900`  | 
| EFA 1.12.0 |  **MD5: **`d6c6b49fafb39b770297e1cc44fe68a6` **SHA256: **`28256c57e9ecc0b0778b41c1f777a9982b4e8eae782343dfe1246079933dca59`  | 
| EFA 1.11.2 |  **MD5: **`2376cf18d1353a4551e35c33d269c404` **SHA256: **`a25786f98a3628f7f54f7f74ee2b39bc6734ea9374720507d37d3e8bf8ee1371`  | 
| EFA 1.11.1 |  **MD5: **`026b0d9a0a48780cc7406bd51997b1c0` **SHA256: **`6cb04baf5ffc58ddf319e956b5461289199c8dd805fe216f8f9ab8d102f6d02a`  | 
| EFA 1.11.0 |  **MD5: **`7d9058e010ad65bf2e14259214a36949` **SHA256: **`7891f6d45ae33e822189511c4ea1d14c9d54d000f6696f97be54e915ce2c9dfa`  | 
| EFA 1.10.1 |  **MD5: **`78521d3d668be22976f46c6fecc7b730` **SHA256: **`61564582de7320b21de319f532c3a677d26cc46785378eb3b95c636506b9bcb4`  | 
| EFA 1.10.0 |  **MD5: **`46f73f5a7afe41b4bb918c81888fefa9` **SHA256: **`136612f96f2a085a7d98296da0afb6fa807b38142e2fc0c548fa986c41186282`  | 
| EFA 1.9.5 |  **MD5: **`95edb8a209c18ba8d250409846eb6ef4` **SHA256: **`a4343308d7ea4dc943ccc21bcebed913e8868e59bfb2ac93599c61a7c87d7d25`  | 
| EFA 1.9.4 |  **MD5: **`f26dd5c350422c1a985e35947fa5aa28` **SHA256: **`1009b5182693490d908ef0ed2c1dd4f813cc310a5d2062ce9619c4c12b5a7f14`  | 
| EFA 1.9.3 |  **MD5: **`95755765a097802d3e6d5018d1a5d3d6` **SHA256: **`46ce732d6f3fcc9edf6a6e9f9df0ad136054328e24675567f7029edab90c68f1`  | 
| EFA 1.8.4 |  **MD5: **`85d594c41e831afc6c9305263140457e` **SHA256: **`0d974655a09b213d7859e658965e56dc4f23a0eee2dc44bb41b6d039cc5bab45`  | 

# Versionshinweise zu Elastic Fabric Adapter
<a name="efa-changelog"></a>

In der folgenden Tabelle werden der Versionsverlauf und das Änderungsprotokoll für die Elastic-Fabric-Adapter-Software beschrieben.


| Version | Änderungen | Datum der Veröffentlichung | 
| --- | --- | --- | 
| 1.47.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 29. Januar 2026 | 
| 1.46.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 12. Dezember 2025 | 
| 1.45.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 26. November 2025 | 
| 1.45.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 17. November 2025 | 
| 1,44,0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 29. Oktober 2025 | 
| 1.43.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 1. Oktober 2025 | 
| 1.43,2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 15. August 2025 | 
| 1.43.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 31. Juli 2025 | 
| 1.43,0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 25 Juli 2025 | 
| 1.42.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 6. Juni 2025 | 
| 1.41.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 16. Mai 2025 | 
| 1.40.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2. Mai 2025 | 
| 1.39.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 16. April 2025 | 
| 1,38,1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 03. März 2025 | 
| 1,38,0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 8. Januar 2025 | 
| 1.37.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 18. November 2024 | 
| 1.36.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 7. November 2024 | 
| 1.35.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 14. Oktober 2024 | 
| 1.34.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 6. August 2024 | 
| 1,33,0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 20. Juni 2024 | 
| 1.32.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 18. April 2024 | 
| 1.31.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | 7. März 2024 | 
| 1.30.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Dezember 2023 | 
| 1.29.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Dezember 2023 | 
| 1.29.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | November 2023 | 
| 1.28.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Oktober 2023 | 
| 1.27.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | September 2023 | 
| 1.26.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | September 2023 | 
| 1.26.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | September 2023 | 
| 1.25.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | September 2023 | 
| 1.25.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Juli 2023 | 
| 1.24.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Juli 2023 | 
| 1.24.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Juni 2023 | 
| 1.23.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Juni 2023 | 
| 1.23.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Mai 2023 | 
| 1.22.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | März 2023 | 
| 1.22.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Februar 2023 | 
| 1.21.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Dezember 2022 | 
| 1.20.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | November 2022 | 
| 1.19.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Oktober 2022 | 
| 1.18.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | August 2022 | 
| 1.17.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | August 2022 | 
| 1.17.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Juli 2022 | 
| 1.17.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Juli 2022 | 
| 1.17.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Juli 2022 | 
| 1.16.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Juni 2022 | 
| 1.15.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Mai 2022 | 
| 1.15.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | März 2022 | 
| 1.15.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Februar 2022 | 
| 1.14.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Oktober 2021 | 
| 1.14.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Oktober 2021 | 
| 1.13.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | August 2021 | 
| 1.12.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Juli 2021 | 
| 1.12.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Juni 2021 | 
| 1.12.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Mai 2021 | 
| 1.12.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Mai 2021 | 
| 1.11.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Februar 2021 | 
| 1.11.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Dezember 2020 | 
| 1.11.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Dezember 2020 | 
| 1.10.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | November 2020 | 
| 1.10.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Oktober 2020 | 
| 1.9.5 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | September 2020 | 
| 1.9.4 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Juli 2020 | 
| 1.9.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Juni 2020 | 
| 1.8.4 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | April 2020 | 
| 1.8.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Februar 2020 | 
| 1.8.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Januar 2020 | 
| 1.8.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Januar 2020 | 
| 1.8.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Dezember 2019 | 
| 1.7.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Dezember 2019 | 
| 1.7.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | November 2019 | 
| 1.6.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Oktober 2019 | 
| 1.6.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Oktober 2019 | 
| 1.5.4 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | September 2019 | 
| 1.5.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | September 2019 | 
| 1.5.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | August 2019 | 
| 1.5.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | August 2019 | 
| 1.4.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Juli 2019 | 
| 1.4.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/efa-changelog.html)  | Juli 2019 | 