7
votes

ICC vs GCC - Optimisation et architecture CPU

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.

Comment les niveaux d'optimisation de la CPI (O1 à O3) diffèrent-ils de GCC, s'ils diffèrent-ils du tout?

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 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?


0 commentaires

3 Réponses :


1
votes

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).

Les options les plus importantes dans ce contexte sont les suivantes:

  • -m64 génère un code 64 bits;
  • -march = générer des instructions pour un type de processeur spécifique; et
  • -mTune = Ajustez le code pour un type de processeur spécifique.

0 commentaires

-1
votes

Tune options, démonter le code et voir la différence


2 commentaires

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?



1
votes

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.


0 commentaires