Teilen über


/arch (x64)

Gibt die Architektur für die Codegenerierung auf x64 an. Weitere Informationen zu /arch anderen Zielarchitekturen finden Sie unter /arch (x86),/arch(ARM64) und /arch (ARM).

Syntax

/arch:[AVX|AVX2|AVX512]

Argumente

/arch:AVX
Aktiviert die Verwendung von Intel Advanced Vector Extensions-Anweisungen.

/arch:AVX2
Aktiviert die Verwendung von Intel Advanced Vector Extensions 2-Anweisungen.

/arch:AVX512
Ermöglicht die Verwendung von Intel Advanced Vector Extensions 512-Anweisungen.

Hinweise

Die /arch Option ermöglicht die Verwendung bestimmter Anweisungssatzerweiterungen, insbesondere für Vektorberechnungen, die in Prozessoren von Intel und AMD verfügbar sind. Im Allgemeinen können kürzlich eingeführte Prozessoren Erweiterungen unterstützen, die von älteren Prozessoren unterstützt werden, obwohl Sie die Dokumentation für einen bestimmten Prozessor oder Test für die Unterstützung von Anweisungssatzerweiterungen verwenden __cpuid sollten, bevor Sie Code mit einer Anweisungssatzerweiterung ausführen.

/arch wirkt sich nur auf die Codegenerierung für systemeigene Funktionen aus. Wenn Sie zum Kompilieren verwenden /clr , /arch wirkt sich dies nicht auf die Codegenerierung für verwaltete Funktionen aus.

Die Prozessorerweiterungen weisen die folgenden Merkmale auf:

  • Der Standardmodus verwendet SSE2-Anweisungen für skalare Gleitkomma- und Vektorberechnungen. Diese Anweisungen ermöglichen die Berechnung mit 128-Bit-Vektoren mit einfacher Genauigkeit, doppelter Genauigkeit und 1, 2, 4 oder 8 Byte ganzzahligen Werten sowie Gleitkommawerten mit einfacher Genauigkeit und doppelter Genauigkeit skalarer Gleitkommawerte.

  • AVX es wurde eine alternative Anweisungscodierung für Vektor- und Gleitkommaskaeranweisungen eingeführt. Sie ermöglicht Vektoren von 128 Bit oder 256 Bit und erweitert alle Vektorergebnisse auf die vollständige Vektorgröße. (Aus Gründen der Legacykompatibilität behalten SSE-Vektoranweisungen alle Bits über Bit 127 hinaus bei.) Die meisten Gleitkommavorgänge werden auf 256 Bit erweitert.

  • AVX2 erweitert die meisten ganzzahligen Vorgänge auf 256-Bit-Vektoren und ermöglicht die Verwendung von FMA-Anweisungen (Fused Multi-Add).

  • AVX-512 Es wurde ein weiteres Anweisungscodierungsformular eingeführt, das 512-Bit-Vektoren sowie bestimmte andere optionale Features zulässt. Außerdem wurden Anweisungen für andere Vorgänge hinzugefügt.

Jede /arch Option kann auch die Verwendung anderer nicht Vektoranweisungen aktivieren, die dieser Option zugeordnet sind. Ein Beispiel ist die Verwendung bestimmter BMI-Anweisungen, wenn /arch:AVX2 angegeben wird.

Das __AVX__ Präprozessorsymbol wird definiert, wenn die /arch:AVXCompileroption /arch:AVX512/arch:AVX2 angegeben wird. Das __AVX2__ Präprozessorsymbol wird definiert, wenn die /arch:AVX2/arch:AVX512 Compileroption angegeben wird. Die __AVX512F__Symbole , __AVX512CD__, __AVX512BW__und __AVX512VL____AVX512DQ__ Präprozessoren werden definiert, wenn die /arch:AVX512 Compileroption angegeben wird. Weitere Informationen finden Sie unter Vordefinierte Makros. Die /arch:AVX2 Option wurde in Visual Studio 2013 Update 2, Version 12.0.34567.1 eingeführt. In Visual Studio 2017 wurde eingeschränkte Unterstützung /arch:AVX512 hinzugefügt und in Visual Studio 2019 erweitert.

So legen Sie die Option oder /arch:AVX2/arch:AVX512 die /arch:AVXCompileroption in Visual Studio fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten für das Projekt. Weitere Informationen erhalten Sie unter Set C++ compiler and build properties in Visual Studio (Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio).

  2. Wählen Sie die Eigenschaftenseite Konfigurationseigenschaften>C/C++>Codegenerierung aus.

  3. Wählen Sie im Dropdownfeld "Erweiterte Anweisungssatz aktivieren" die Option "Erweiterte Vektorerweiterungen (/arch:AVX)", "Erweiterte Vektorerweiterungen 2" (/arch:AVX2) oder "Erweiterte Vektorerweiterungen 512" (/arch:AVX512) aus.

So legen Sie diese Compileroption programmgesteuert fest

Siehe auch

/arch (Minimale CPU-Architektur)
MSVC-Compileroptionen
MSVC-Compiler-Befehlszeilensyntax