Подтвердить что ты не робот

Флаги оптимизации GCC для Intel Atom

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

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

4b9b3361

Ответ 2

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

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

Ответ 3

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

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

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

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

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

Ответ 5

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

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

  • -O2 или -O1: флаг O2 оптимизирован для скорости, а флаг -O1 оптимизируется для размера
  • -msse3
  • -march = core2
  • -mfpmath = SSE

Ответ 6

Как и для Pentium 4:

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

Ответ 7

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

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

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

Ответ 8

Как насчет компилятора Intel C (icc)? По крайней мере, на тестах, которые приходят с ним, доминирование над gcc вполне заметно...

Ответ 9

здесь кросс-pollenation блогов... то, на что я действительно надеялся, был бенчмаркистом для компиляции-для-атома...

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

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

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

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

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

Ответ 11

Кто-нибудь знает, как мне оптимизировать атомный ноутбук для максимальной эффективности. Менеджер сообщества по адресу https://betapage.co