Je suis intéressé à savoir comment GCC diffère de l'ICC d'Intel en termes de niveaux d'optimisation et de restauration à une architecture de processeur spécifique. J'utilise GCC 4.1.2 20070626 et ICC V11.1 pour Linux. P>
Comment les niveaux d'optimisation de la CPI (O1 à O3) diffèrent-ils de GCC, s'ils diffèrent-ils du tout? P>
La CPI est capable de répondre spécifiquement à différentes architectures (IA-32, Intel64 et IA-64). J'ai lu que GCC a l'option -March code> compilateur que je pense est similaire, mais je ne trouve pas une liste des options à utiliser. J'utilise Intel Xeon X5570, qui est 64 bits. Y a-t-il d'autres options de compilateur de la GCC que je pourrais utiliser pour répondre à mes applications pour les processeurs Intel 64 bits? P>
3 Réponses :
Voir la section 3.17.15 dans le manuel de la GCC, IE386 et X86-64 Options pour la liste complète et la description de toutes les options applicables à ces architectures (IA-64 est itanium, et il est peu probable que vous en ayez un de ces). p>
Les options les plus importantes dans ce contexte sont les suivantes: P>
-m64 code> génère un code 64 bits; li>
-
-march = code> générer des instructions pour un type de processeur spécifique; et li>
-
-mTune = code> Ajustez le code pour un type de processeur spécifique. LI>
ul>
Tune options, démonter le code et voir la différence p>
Pas une réponse très utile, car cela ne s'appliquera qu'au code qu'il a déjà, et non au code qu'il puisse écrire à l'avenir.
Et comment mesurez-vous l'efficacité de l'optimiseur GCC ou ICC du code non existant?
ICC -O2 -unroll2 est approximativement équivalent à GCC -O3 -FFAST-MATH -FNO-CX-LIMITE-LIMITE-LIMITE-LOGUPH-LOOPS --PARAM MAX-DOLUX-Times = 2 -O1 n'active pas la vectorisation automatique de SIMD pour l'un ou l'autre compilateur, il y a donc moins de différence. ICC et GCC fournissent des compilateurs construits séparément pour cibler le mode 64 bits; Si les deux compilateurs de GCC sont installés, le conseil ci-dessus à propos de -M64 sera pris en charge. ICC s'attend à ce que vous choisissiez, si les deux sont installés, en approvisionnant leur script de réglage de chemin. -March = Native est l'option GCC pour utiliser l'ensemble d'instructions complète de la machine de construction. La CPI peut observer cela, mais a une option équivalente -xhost. Au moment de cette question, cette option ICC n'aurait peut-être pas fonctionné que pour Intel CPus. P>