2010-03-23 13 views
7

Sono interessato a sapere in che modo GCC differisce dall'ICC di Intel in termini di livelli di ottimizzazione e di approvvigionamento per l'architettura del processore specifica. Sto usando GCC 4.1.2 20070626 e ICC v11.1 per Linux.ICC vs GCC - Ottimizzazione e architettura CPU

In che modo i livelli di ottimizzazione di ICC (da O1 a O3) differiscono da GCC, se differiscono del tutto?

ICC è in grado di soddisfare in modo specifico le diverse architetture (IA-32, intel64 e IA-64). Ho letto che GCC ha l'opzione del compilatore -march che penso sia simile, ma non riesco a trovare un elenco delle opzioni da usare. Sto usando Intel Xeon X5570, che è a 64 bit. Ci sono altre opzioni del compilatore GCC che potrei usare per soddisfare le mie applicazioni per le CPU Intel a 64 bit?

Grazie.

saluti, Rayne

risposta

1

Vedere la sezione 3.17.15 nel manuale di GCC, ie386 and x86-64 Options per l'elenco completo e la descrizione di tutte le opzioni applicabili a quelle architetture (IA-64 è Itanium, ed è improbabile che si dispone di uno di quelli).

Le opzioni più importanti in questo contesto sono:

  • -m64 generare il codice a 64 bit;
  • -march= Generare istruzioni per un tipo di CPU specifico; e
  • -mtune= Sintonizzare il codice per un tipo specifico di CPU.
-1

opzioni tune, smontare il codice e vedere la differenza

+0

non è una risposta molto utile, poiché si applica solo al codice che ha già, e non al codice che potrebbe scrivere in futuro. –

+2

e come si misura l'efficacia dell'ottimizzatore GCC o ICC del codice inesistente? –

1

ICC -O2 -unroll2 è grosso modo equivalente a gcc -O3 -ffast-matematiche -fno-cx-limitato raggio -funroll-loops - param max-unroll-times = 2 -O1 non abilita l'auto-vettorizzazione simd per entrambi i compilatori, quindi c'è meno differenza. Sia icc che gcc forniscono compilatori compilati separatamente per la modalità a 64 bit; se sono installati entrambi i compilatori gcc, sarà supportato il consiglio sopra circa -m64. icc si aspetta che tu scelga, se entrambi sono installati, procurando il loro script di impostazione del percorso. -march = native è l'opzione gcc per utilizzare il set completo di istruzioni della macchina di compilazione. icc potrebbe osservarlo ma ha un'opzione equivalente -xHost. Al momento di questa domanda, l'opzione icc potrebbe aver funzionato solo per le CPU Intel.