Udostępnij przez


/arch (x64)

Określa architekturę generowania kodu na x64. Aby uzyskać więcej informacji na /arch temat innych architektur docelowych, zobacz /arch (x86), /arch (ARM64)i /arch (ARM).

Składnia

/arch:[AVX|AVX2|AVX512]

Argumenty

/arch:AVX
Umożliwia korzystanie z instrukcji intel Advanced Vector Extensions.

/arch:AVX2
Umożliwia korzystanie z instrukcji Intel Advanced Vector Extensions 2.

/arch:AVX512
Umożliwia korzystanie z instrukcji Intel Advanced Vector Extensions 512.

Uwagi

Opcja /arch umożliwia korzystanie z niektórych rozszerzeń zestawu instrukcji, szczególnie w przypadku obliczeń wektorowych, dostępnych w procesorach firmy Intel i AMD. Ogólnie rzecz biorąc, ostatnio wprowadzone procesory mogą obsługiwać rozszerzenia poza te obsługiwane przez starsze procesory, chociaż należy zapoznać się z dokumentacją dla określonego procesora lub testu obsługi rozszerzenia zestawu instrukcji przy użyciu __cpuid przed wykonaniem kodu przy użyciu rozszerzenia zestawu instrukcji.

/arch Dotyczy tylko generowania kodu dla funkcji natywnych. W przypadku użycia /clr polecenia do kompilowania /arch nie ma wpływu na generowanie kodu dla funkcji zarządzanych.

Rozszerzenia procesora mają następujące cechy:

  • Tryb domyślny używa instrukcji SSE2 dla obliczeń zmiennoprzecinkowych i wektorów skalarnych. Te instrukcje umożliwiają obliczanie z 128-bitowymi wektorami pojedynczej precyzji, podwójnej precyzji i 1, 2, 4 lub 8-bajtowych wartości całkowitych, a także wartościami zmiennoprzecinkowymi o pojedynczej precyzji i podwójnej precyzji.

  • AVX wprowadzono alternatywne kodowanie instrukcji dla instrukcji wektorowych i zmiennoprzecinkowych. Umożliwia on wektory 128 bitów lub 256 bitów, a zero rozszerza wszystkie wyniki wektorów do pełnego rozmiaru wektora. (W przypadku starszej zgodności instrukcje wektorów stylu SSE zachowują wszystkie bity poza bitem 127). Większość operacji zmiennoprzecinkowych jest rozszerzana na 256 bitów.

  • AVX2 Rozszerza większość operacji całkowitych na wektory 256-bitowe i umożliwia korzystanie z instrukcji Fused Multiply-Add (FMA).

  • AVX-512 wprowadzono inną formę kodowania instrukcji, która umożliwia wektory 512-bitowe oraz niektóre inne funkcje opcjonalne. Dodano również instrukcje dotyczące innych operacji.

Każda /arch opcja może również włączyć korzystanie z innych instrukcji niewektorowych skojarzonych z tą opcją. Przykładem jest użycie niektórych instrukcji BMI, gdy /arch:AVX2 jest określony.

__AVX__ Symbol preprocesora jest definiowany po określeniu opcji kompilatora /arch:AVX/arch:AVX2 lub /arch:AVX512 . __AVX2__ Symbol preprocesora jest definiowany po określeniu /arch:AVX2 opcji lub /arch:AVX512 kompilatora. Symbole __AVX512F__preprocesora , __AVX512CD__, __AVX512BW____AVX512DQ__ i __AVX512VL__ są definiowane po określeniu opcji kompilatora/arch:AVX512. Aby uzyskać więcej informacji, zobacz Wstępnie zdefiniowane makra. Opcja /arch:AVX2 została wprowadzona w programie Visual Studio 2013 Update 2 w wersji 12.0.34567.1. Dodano ograniczoną obsługę /arch:AVX512 programu Visual Studio 2017 i rozszerzono w programie Visual Studio 2019.

Aby ustawić /arch:AVXopcję , /arch:AVX2 lub /arch:AVX512 kompilatora w programie Visual Studio

  1. Otwórz okno dialogowe Strony właściwości dla projektu. Aby uzyskać więcej informacji, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilacji w programie Visual Studio).

  2. Wybierz stronę właściwości Właściwości>konfiguracji C/C++>Code Generation.

  3. W polu rozwijanym Włącz zestaw instrukcji rozszerzonych wybierz pozycję Zaawansowane rozszerzenia wektorów (/arch:AVX), Advanced Vector Extensions 2 (/arch:AVX2) lub Advanced Vector Extensions 512 (/arch:AVX512).

Aby programowo ustawić tę opcję kompilatora

Zobacz też

/arch (Minimalna architektura procesora CPU)
Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC