GCC: -march=(native,barcelona,amdfam10) [РЕШЕНО]
Theli 2 июля, 2009 - 14:51
Всем доброго времени суток! =)
Занялся тут разбором оптимизаций gcc и обнаружил такую штуку, которой не могу найти объяснения.
делаю так:
export CFLAGS="-march=native -mtune=native -O2 pipe" make clean && make -j4 md5sum ./arch/x86_64/boot/bzImage 13e62e7909a8dd93735da95840020ab7 ./arch/x86_64/boot/bzImage
делаю так:
export CFLAGS="-march=amdfam10 -mtune=amdfam10 -O2 pipe" make clean && make -j4 md5sum ./arch/x86_64/boot/bzImage 22f87fc01573f42f2f1a06c48b681076 ./arch/x86_64/boot/bzImage
делаю так:
export CFLAGS="-march=barcelona -mtune=barcelona -O2 pipe" make clean && make -j4 md5sum ./arch/x86_64/boot/bzImage 653da1907be03e792588632e712a958e ./arch/x86_64/boot/bzImage
команды вызваны подряд, т.е. конфиг не менял...
мне было интересно узнать какой профиль выбирает gcc при указании native, а получил...
в общем вопросы такие:
1. чем отличаются barcelona от amdfam10? (судя по документации это синонимы)
2. что всё-таки делает native? выбирает наиболее подходящий профиль оптимизации или генерит свой?
3. может это глюк и об этом стоит отписаться в багзилле?
»
- Для комментирования войдите или зарегистрируйтесь
Параноя :)
Ядро вкладывает в себя дату и время сборки и другие данные.
Поэтому мд5 хеш никогда не будет одинаковым
Working on Gentoo Linux for Asus P535 and Qtopia :-)
эта информация вкладывается в
эта информация вкладывается в любой бинарник?
А ещё я не уверен что
А ещё я не уверен что переменная CFLAGS для ядра имеет значение. AFAIK под како поцессор оптимизируется выбирается в самом конфиге ядра, а не опциями компилятора. Хотя тут я могу ошибаться.
перепровел эксепримент. взял
перепровел эксепримент. взял те же флаги + Athlon64, но брал контрольную сумму не самого ядра а пары модулей... контрольная сумма для каждого модуля с разными флагами полностью совпала...
гы =)
поискал Makefile, в котором выставляется архитектура проца... нашёл... поменял архитектуру с k8 на native... контрольная сумма модулей изменилась... приду домой буду тестить ядрышко с новой оптимизацией =)
Система сборки ядра
Система сборки ядра игнорирует
CFLAGS
. Вместо этого естьCFLAGS_KERNEL
, использовать с осторожностью.CFLAGS_KERNEL? оно тупо
CFLAGS_KERNEL?
оно тупо добавляет мои флаги в командную строку и в одной команде получается -march=k8 -march=native... интересно с каким из флагов соберется )))
К стати, ядро собранное с native на моём феноме заработало без всяких ошибок и загрузилось на секунду быстрее... теперь я вообще ничего прочитать не успеваю - пшик и всё, уже openrc трудится =) думаю, что для 2.6.30 это хороший результат =)
а ведь всё делается
а ведь всё делается просто:
согласно http://en.gentoo-wiki.com/wiki/CFLAGS
#gcc -c -Q -march=native --help=target
\\ вдруг кто наткнётся поиском