Quelle est la bonne architecture-certaines options (-m), pour les Sandy Bridge base de Pentium?
J'essaie de comprendre comment mettre en -march
option correctement de voir comment beaucoup de différence de performance entre l'option activé et désactivé peuvent se produire sur mon PC avec gcc 4.7.2.
Avant d'essayer de compiler, j'ai essayé de trouver quel est le meilleur -march
option pour mon PC. Mon PC est un Pentium G850, dont l'architecture Sandy Bridge. J'ai donc visé à la gcc 4.7.2 manuel et a constaté que -march=corei7-avx
semble la meilleure.
Cependant, je me suis souvenu que Sandy Bridge base de Pentium manque AVX et AES-NI d'instruction en charge du jeu, qui est vrai pour les Pentium G850. Donc -march=corei7-avx
n'est pas une bonne option.
Je viens avec quelques options possibles:
-march=corei7-avx -mno-avx -mno-aes
-march=corei7 -mtune=corei7-avx
-march=native
La première option qui semble raisonnable, compte tenu de l'information que j'ai, mais je suis inquiet qu'il peut être absent fonction autre que AVX et AES-NI. La deuxième option semble sûre, mais il pourrait manquer quelques fonctionnalités mineures sur Sandy Bridge en raison de -march=corei7
. La troisième option de prendre soin de tous mes soucis, mais j'ai entendu parler de cette option est parfois misdetects caractéristiques de la CPU donc je voudrais savoir comment le faire manuellement.
J'ai cherché et cherché sur StackOverflow et de super-Utilisateur, mais je ne trouve pas de solutions claires...
Quelles options doivent être définies?
OriginalL'auteur k2_8191 | 2013-03-22
Vous devez vous connecter pour publier un commentaire.
Ce sujet de la détection via GCC, pour moi (gcc-5.3.0) sur un i5-2450M PROCESSEUR (Lenovo e520), les spectacles suivants:
OriginalL'auteur Jens Peters
Je suggère d'utiliser
-march=corei7-avx -mtune=corei7-avx -mno-avx -mno-aes
. Il est important de préciser-mtune
parce que cette option indique à gcc qui le modèle du PROCESSEUR, il doit utiliser pour la planification des instructions dans le code généré.-march=cpu-type
implique-mtune=cpu-type
(voir-march=cpu-type
section de la le manuel de gcc). Est-il la différence entre ma première option et la vôtre? Aussi, il n'y a rien à vous soucier de manquer des fonctions autres que AVX et AES-NI?Probablement faible de Sable fin Ponts aussi le manque PCLMULQDQ instruction, mais le compilateur ne génère pas automatiquement de toute façon.
Vraiment? J'ai pensé à code à l'aide de l'instruction si le compilateur détecte un code est plus rapide en utilisant que... je me trompe?
C'est le cas pour la plupart des instructions, mais PCLMULQDQ est trop spécial, et les compilateurs ne reconnaissent pas où pourrait être bénéfique.
Oui bien sûr, mais il n'est pas complètement coffre-fort, n'est-ce pas? Le PCLMULQDQ est prévu pour les programmes qui utilisent la cryptographie, qui est commun à des programmes modernes.
OriginalL'auteur Marat Dukhan
Que je dispose d'un Sandy Bridge Intel(R) Celeron(R) CPU G530.
Lors de l'utilisation
-march=native
dans gentoo CFLAGS, et ensuite compiler les médias-vidéo/ffmpeg-1.2.6 (version stable actuelle dans Gentoo), il y a quelque chose de mal lors de la lecture de vidéo avec mplayer( instruction illégale). Tout comme ce que vous avez dit,-mtune=native
parfois misdetects fonctionnalités du CPU.Puis-je changer pour
-march=corei7-avx -mtune=corei7-avx -mno-avx -mno-aes
, et de recompiler ffmpeg-1.2.6 et mplayer, les choses sont tous ok jusqu'à maintenant.OriginalL'auteur Earne