2010-03-23 23 views
7

Je suis curieux de savoir comment GCC diffère de l'ICC d'Intel en termes de niveaux d'optimisation et de restauration d'architecture de processeur spécifique. J'utilise GCC 4.1.2 20070626 et ICC v11.1 pour Linux.ICC vs GCC - Optimisation et architecture CPU

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

L'ICC peut répondre spécifiquement à différentes architectures (IA-32, intel64 et IA-64). J'ai lu que GCC a l'option de compilateur -march que je pense est similaire, mais je ne peux pas trouver une liste des options à utiliser. J'utilise Intel Xeon X5570, qui est 64 bits. Y at-il d'autres options de compilateur GCC que je pourrais utiliser pour répondre à mes applications pour les processeurs Intel 64 bits?

Merci.

Cordialement, Rayne

Répondre

1

Voir la section 17.03.15 dans le manuel du CCG, ie386 and 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 avez un de celles).

Les options les plus importantes dans ce contexte sont:

  • -m64 générer du code 64 bits;
  • -march= Générer des instructions pour un type de CPU spécifique; et
  • -mtune= Réglez le code pour un type de CPU spécifique.
-1

options air, désassembler le code et voir la différence

+0

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 pourrait écrire dans le futur. –

+2

et comment mesurez-vous l'efficacité de l'optimiseur GCC ou ICC du code inexistant? –

1

cpi est -O2 -unroll2 à peu près équivalent à gcc--O3 -ffast mathématiques -fno-cx-portée limitée -funroll boucles - param-max-unroll-times = 2 -O1 n'autorise pas la vectorisation automatique de simd pour l'un ou l'autre compilateur, donc il y a moins de différence. icc et gcc fournissent des compilateurs construits séparément pour cibler le mode 64 bits; Si les deux compilateurs gcc sont installés, les conseils ci-dessus sur -m64 seront pris en charge. icc s'attend à ce que vous choisissiez, si les deux sont installés, en recherchant leur script de définition de chemin. -march = native est l'option gcc permettant d'utiliser le jeu d'instructions complet de la machine de construction. icc peut observer ceci mais a une option équivalente -xHost. Au moment de cette question, cette option icc peut avoir fonctionné uniquement pour les processeurs Intel.