Флаги оптимизации GCC для Intel Atom [закрыто]

Я разрабатываю критически важное для производительности приложение для процессора Intel Atom.

Каковы лучшие флаги оптимизации gcc для этого процессора?

 peter karasev27 сент. 2010 г., 02:49
А как насчет компилятора Intel C (icc)? По крайней мере, в тестах, которые идут вместе с ним, доминирование над gcc довольно заметно ...

Ответы на вопрос(9)

Решение Вопроса

GCC 4.5 будет содержать параметры -march = atom и -mtune = atom.

Источник:http://gcc.gnu.org/gcc-4.5/changes.html

 24 февр. 2010 г., 04:06
При использовании GCC 4.5 вы также захотите использовать -fexcess-precision = fast (см.gcc.gnu.org/bugzilla/show_bug.cgi?id=42376 для деталей)

Как и для Pentium 4:

-march=prescott -O2 -pipe -fomit-frame-pointer

i686 самый близкий. Не переходите на core2.

GCC 4.1 -O3 -march = i686 GCC 4.3 -O3 -march = родной

GCC 4.1 -O4 -fast-math GCC 4.3 -O4 -быстрая математика

http://macles.blogspot.com/2008/09/intel-cc-compiler-gcc-and-intel-atom.html

 10 авг. 2012 г., 20:07
-O4 не является допустимым уровнем оптимизации gcc. Читайте руководства, а не блоги:gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Optimize-Options.html

Я имею скрипт, который автоматически выбирает подходящие флаги для вашей комбинации процессора и компилятора. Я только что обновил его для поддержки Intel Atom:

http://www.pixelbeat.org/scripts/gcccpuopt

Обновить: Ранее я указывал -march = prescott для Atom, но больше разбираюсь в этом показывает, что Atom соответствует стандартам ISA, поэтому -march = core2 является более подходящим. Однако обратите внимание, что атомы - это ядра в порядке, последним из которых является оригинальный Pentium. Поэтому, вероятно, также лучше -mtune = pentium. К сожалению, у меня нет Атом для проверки. Я был бы очень признателен, если бы кто-нибудь мог сравнить разницу между:

-march=core2 -mfpmath=sse -O3
-march=core2 -mtune=pentium -mfpmath=sse -O3

Обновить: Вот несколько хороших статей об оптимизации низкого уровня для Atom:

http://virtualdub.org/blog/pivot/entry.php?id=286 http://virtualdub.org/blog/pivot/entry.php?id=287
 17 февр. 2010 г., 01:49
да, мой атом поддерживает 64-битную.
 15 февр. 2010 г., 10:32
Интересно. Ваш атом поддерживает 64 бит? Если вы попробуете приведенный выше скрипт, он, вероятно, скажет вам также добавить -m32
 17 февр. 2010 г., 13:34
Что ж, более интересный ответ был бы, если -m32 подавляет сообщение об ошибке, и выводит ли gcccpuopt -m32 для вашего процессора
 14 февр. 2010 г., 13:49
Я не думаю, что настройка обоих-march=core2 а также-mtune=pentium работает вообще: получаюarg.c:1: error: CPU you selected does not support x86-64 instruction set
 18 февр. 2010 г., 01:23
проведениеgcc44 -march=core2 -mtune=pentium -m32 -o lol lol.c на минимальном c-файле выходит с ошибкой из-за невозможности найти -lgcc. а такжеgcccpuopt говорит мне-m32 -march=core2 -mtune=pentium -mfpmath=sse это оптимальная конфигурация.

Я пока не знаю, есть ли в GCC какие-либо специфичные для Atom флаги оптимизации, но предполагается, что ядро Atom очень похоже на исходный Pentium с очень значительным добавлением наборов команд MMX / SSE / SSE2 / SSE3 / SSSE3. Конечно, они имеют существенное значение, только если ваш код с плавающей запятой или DSP.

Возможно, вы могли бы попробовать:

gcc -O2 -march = pentium -mmmx -msse -msse2 -msse3 -mssse3 -mfpmath = sse

 07 февр. 2009 г., 01:51
Хотя Atom сравним с Pentium в том смысле, что это упорядоченная архитектура, структура конвейера сильно отличается, и планирование инструкций для Pentium, вероятно, будет очень плохим для производительности.
 07 февр. 2009 г., 02:12
Договорились, вы делаетеnot хочу использовать -march = pentium для всего, кроме реального Pentium.

От Intel,Начало работы с MID

При использовании GCC для компиляции рекомендуется использовать несколько флагов:

-O2 or -O1: O2 flag optimizes for speed, while the -O1 flag optimizes for size -msse3 -march=core2 -mfpmath=sse

Ну, вики Gentoo утверждает для прескотта:

http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel#Atom_N270

CHOST = & Quot; i686-PC-Linux-гну & Quot;

CFLAGS = -march = prescott -O2 -pipe -fomit-frame-pointer & quot;

CXXFLAGS = & Quot; $ {CFLAGS} & Quot;

 05 апр. 2010 г., 14:08
... и CFLAGS = -O2 -march = atom -mssse3 -mfpmath = sse -fomit-frame-pointer -pipe & quot; для GCC 4.5
 22 февр. 2010 г., 17:42
Не больше:en.gentoo-wiki.com/wiki/Safe_Cflags/Intel#Atom_N270.2FN280 (обновленная ссылка) теперь рекомендует CFLAGS = & quot; -O2 -march = core2 -mtune = универсальный -mssse3 -mfpmath = sse -fomit-frame-pointer -pipe & quot;

Есть классная структура под названиемAcovea (анализ параметров компилятора с помощью эволюционного алгоритма)Скотт Робер Лэдд, один из хакеров GCC. Это структура генетического / эволюционного алгоритма, которая пытается оптимизировать флаги оптимизации GCC для конкретного фрагмента кода посредством естественного отбора.

Это работает примерно так: вы пишете небольшой кусочек кодаreally должно быть мало, потому что он будет перекомпилирован и выполнен несколько тысяч раз), что представляет собой характеристики производительности более крупной программы, которую вы хотите оптимизировать. Затем Acovea случайным образом создает несколько десятков различных командных строк GCC, компилирует и запускает ваш тест с каждым из них. Лучшим из этих командных строк затем разрешается "mate" и "разводить" новые "дети" которые (надеюсь) наследуют лучшие "гены" от их "родителей". Этот процесс повторяется в течение пары десятков «поколений», пока не появится стабильный набор флагов командной строки.

 18 мая 2011 г., 18:18
Ссылка не работает
 18 мая 2011 г., 21:31
@ Макс: похоже, Скотт перестал работать над этим.

вот несколько перекрестных опытов блогов ... на что я действительно надеялся, так это бенчмарк, скомпилированный для атома firefox ...

Адрес: http: // ivoras.sharanet.org/blog/tree/2009-02-11.optimizing-for-atom.html

& quot; Оказывается, gcc, по-видимому, делает очень приличную работу с -mtune = native, а mtune = generic более чем приемлемо. Наибольший выигрыш (в этом математическом тесте) дает использование SSE для математики, но даже они уничтожаются при настройке на pentium4.

& quot; Разница между самой быстрой и самой медленной оптимизацией составляет 21%. Влияние использования march вместо mtune пренебрежимо мало (разницы недостаточно, чтобы определить, помогает она или нет).

"(я включил k6 только для справки - я знаю, что у Atom нет 3dnow)

«Позднее обновление: настройка для k8 (с SSE и O3) дает немного более высокий лучший результат 182.»

Ваш ответ на вопрос