ICC vs GCC - оптимизация и архитектура процессора - PullRequest
7 голосов
/ 23 марта 2010

Мне интересно узнать, чем GCC отличается от ICC Intel с точки зрения уровней оптимизации и соответствия конкретной архитектуре процессора. Я использую GCC 4.1.2 20070626 и ICC v11.1 для Linux.

Чем уровни оптимизации ICC (O1-O3) отличаются от GCC, если они вообще отличаются?

ICC может обслуживать различные архитектуры (IA-32, intel64 и IA-64). Я читал, что в GCC есть опция компилятора -march, которая, на мой взгляд, похожа, но я не могу найти список используемых опций. Я использую Intel Xeon X5570, который является 64-разрядным. Есть ли другие варианты компилятора GCC, которые я мог бы использовать для своих приложений для 64-битных процессоров Intel?

Ответы [ 3 ]

1 голос
/ 10 февраля 2016

icc -O2 -unroll2 примерно эквивалентно gcc -O3 -fast-math -fno-cx-limit-range -funroll-loop -парам max-unroll-times = 2 -O1 не включает автоматическую векторизацию simd ни для одного из компиляторов, поэтому разница меньше. И icc, и gcc предоставляют отдельно созданные компиляторы для 64-битного режима; если установлены оба компилятора gcc, будет поддерживаться приведенный выше совет о -m64. icc ожидает, что вы выберете, если они оба установлены, с помощью сценария установки пути. -march = native - это опция gcc для использования полного набора команд машины сборки. ICC может наблюдать это, но имеет эквивалентную опцию -xHost. Во время этого вопроса эта опция icc работала только для процессоров Intel.

1 голос
/ 23 марта 2010

См. Раздел 3.17.15 в руководстве по GCC, параметры ie386 и x86-64 для полного списка и описания всех параметров, применимых к этим архитектурам (IA-64 - это Itanium, и вы вряд ли есть один из них).

Наиболее важные параметры в этом контексте:

  • -m64 Генерация 64-битного кода;
  • -march= Генерация инструкций для конкретного типа процессора; и
  • -mtune= Настройте код для конкретного типа процессора.
0 голосов
/ 23 марта 2010

настройте параметры, разберите код и посмотрите разницу

...