Partager via


/arch (x64)

Spécifie l'architecture pour la génération de code sur x64. Pour plus d’informations sur /arch les autres architectures cibles, consultez /arch (x86), /arch (ARM64) et /arch (ARM).

Syntaxe

/arch:[AVX|AVX2|AVX512]

Arguments

/arch:AVX
Active l'utilisation des instructions Intel Advanced Vector Extensions.

/arch:AVX2
Active l’utilisation des instructions Intel Advanced Vector Extensions 2.

/arch:AVX512
Permet d’utiliser des instructions Intel Advanced Vector Extensions 512.

Notes

L’option /arch permet d’utiliser certaines extensions de jeu d’instructions, en particulier pour le calcul vectoriel, disponibles dans les processeurs d’Intel et AMD. En général, les processeurs introduits plus récemment peuvent prendre en charge des extensions au-delà des extensions prises en charge par les processeurs plus anciens, bien que vous deviez consulter la documentation d’un processeur particulier ou tester la prise en charge de l’extension de jeu d’instructions à l’aide __cpuid d’une extension de jeu d’instructions.

/arch affecte uniquement la génération de code pour les fonctions natives. Lorsque vous utilisez /clr pour compiler, /arch n’a aucun effet sur la génération de code pour les fonctions managées.

Les extensions de processeur présentent les caractéristiques suivantes :

  • Le mode par défaut utilise des instructions SSE2 pour les calculs à virgule flottante scalaire et vectorielle. Ces instructions permettent de calculer avec des vecteurs 128 bits de précision unique, double précision et 1, 2, 4 ou 8 octets, ainsi que des valeurs à virgule flottante scalaire à précision unique et double précision.

  • AVX a introduit un autre encodage d’instructions pour les instructions scalaires à virgule flottante et vectorielle. Il autorise les vecteurs de 128 bits ou de 256 bits, et zéro étend tous les résultats de vecteur à la taille complète du vecteur. (Pour la compatibilité héritée, les instructions vectorielles de style SSE conservent tous les bits au-delà du bit 127.) La plupart des opérations à virgule flottante sont étendues à 256 bits.

  • AVX2 étend la plupart des opérations entières à des vecteurs 256 bits et permet d’utiliser des instructions FMA (Fused Multiply-Add).

  • AVX-512 a introduit un autre formulaire d’encodage d’instruction qui autorise les vecteurs 512 bits, ainsi que certaines autres fonctionnalités facultatives. Des instructions pour d’autres opérations ont également été ajoutées.

Chaque /arch option peut également activer l’utilisation d’autres instructions non vectorielles associées à cette option. Par exemple, il s’agit de l’utilisation de certaines instructions DMI quand /arch:AVX2 elles sont spécifiées.

Le __AVX__ symbole de préprocesseur est défini lorsque l’option ou /arch:AVX2/arch:AVX512 l’option du /arch:AVXcompilateur est spécifiée. Le __AVX2__ symbole de préprocesseur est défini lorsque l’option /arch:AVX2 du compilateur est /arch:AVX512 spécifiée. Les __AVX512F__symboles , __AVX512CD__, __AVX512BW____AVX512DQ__ et __AVX512VL__ préprocesseur sont définis lorsque l’option du /arch:AVX512 compilateur est spécifiée. Pour plus d’informations, consultez Macros prédéfinies. L’option /arch:AVX2 a été introduite dans Visual Studio 2013 Update 2, version 12.0.34567.1. La prise en charge limitée de /arch:AVX512 Visual Studio 2017 a été ajoutée et développée dans Visual Studio 2019.

Pour définir l’option ou /arch:AVX2/arch:AVX512 l’option /arch:AVXdu compilateur dans Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriétés du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.

  2. Sélectionnez la page de propriétés De configuration>C/C++>Génération de code.

  3. Dans la zone de liste déroulante Activer le jeu d’instructions améliorés, choisissez Advanced Vector Extensions (/arch :AVX), Advanced Vector Extensions 2 (/arch :AVX2) ou Advanced Vector Extensions 512 (/arch :AVX512).

Pour définir cette option du compilateur par programmation

Voir aussi

/arch (Architecture processeur minimale)
Options du compilateur MSVC
Syntaxe de ligne de commande du compilateur MSVC