LinuxForum.Fans
Тема

CFLAGS, оптимизация

Автор: zenon 50 сообщений 12638 просмотров
#239166

Вот такое нашёл.
http://en.gentoo-wiki.com/wiki/Safe_Cflags/AMD#FX-8xxx.2F6xxx.2F4xxx_.28Bulldozer.29
4.6.2 все равно хард маскед сейчас, но похоже для FX процессоров вариантов нет.
С 4.6.2 всё бы ничего, но посмотрел после сборки им - из 8Гб памяти - около 7-ми выделяется под кэш, при сбросе - в пределах нормы, других неудобств, не заметил, хотя может это и не неудобство.
...
И насчет graphite? Надо оно или нет?
Сейчас сделал так:

text
GRAPHITE="-ftree-vectorize --param l2-cache-size=4096 -fgraphite-identity -floop-interchange -floop-block -floop-strip-mine -ftree-loop-distribution -ftree-loop-linear"
CFLAGS="-O2 -pipe -fomit-frame-pointer -march=bdver1 -mtune=bdver1 -mcx16 -msahf -maes -mpclmul -mpopcnt -mabm -mlwp -mavx  --param l2-cache-size=4096 -pipe -g0 -Wno-all ${GRAPHITE}"
CXXFLAGS="${CFLAGS}"

--param l2-cache-size=4096
Сколько указывать, не понял 2048 или 4096, если сам FX смотреть L2 cache=2x2048?
Проц у меня этот.
Поставил пересобирать тулчейн.

#239218

Да, уж, достаточно:

text
gcc -march=native -E -v - </dev/null 2>&1 | sed -n 's/.* -v - //p'

Чтобы узнать какие опции включит -march=native, и можно ничего больше и не указывать.
У меня выдало:

text
-march=bdver1 -mcx16 -msahf -mno-movbe -maes -mpclmul -mpopcnt -mabm -mlwp -mno-fma -mfma4 -mxop -mno-bmi -mno-tbm -mavx -msse4.2 -msse4.1 --param l1-cache-size=16 --param l1-cache-line-size=64 --param l2-cache-size=2048 -mtune=bdver1

C предидущими флагами ~1067 попугаев в firefox 11, хило как-то. http://peacekeeper.futuremark.com/

#239231

Поставил firefox-bin (11.0)
peacekeeper = 2273
sunspider = 196.6ms +/- 0.8%
Теперь хотя бы такого результата добиться, при собственной сборке.

#239303

newzenon, можете описать как gcc4.6.2 размаскировал? а то у меня говорит что новее 4,5,3 нет ничего) и не говорит что замаскирован

#239307

virxak,
/etc/portage/package.keywords

text
=sys-devel/gcc-4.6.2 **

или есле в make не ~amd64

text
=sys-devel/gcc-4.6.2 ** ~amd64

и в /etc/portage/package.unmask

text
=sys-devel/gcc-4.6.2

....
ы firefox с USE="custom-flags custom-oimization" = 1399 попугаев, жуть. Пока не могу бинарник догнать.

#239311

newzenon, спс

newzenon написал:
ы firefox с USE="custom-flags custom-oimization" = 1399 попугаев, жуть. Пока не могу бинарник догнать.

Оо. бульдозера совсем недавно вышли. Компилятор под эти процы еще не очень отладили. Может в 4,7,0 дооптимизируют.

#239318

virxak, Ну есть у 4.6.2 -march=bdver1 -mtune=bdver1 только максимум (с bdver1) firefox показал ~2130 против 2273 у бинарника.
Где-то я явно что-то упускаю.

#239325
newzenon написал:
или есле в make не ~amd64
=sys-devel/gcc-4.6.2 ** ~amd64

вот это не нужно только...

#239429

ты накрутил слишком много флагов
1. графит - от него больше вреда чем пользы
2. -mtune=bdver1 лишнее, по умолчанию оно равно -mtune
я бы посоветовал попробовать mtune задать как generic
3. судя по -mcx16 -msahf у тебя 64 - зачем тогда -fomit-frame-pointer?
или это как-то связано с мультилиб, т.е. для 32-х битных либ/софтин?
у меня на 32 битах лис из сорсов показывает таки больше бинарного

#239430

ы firefox с USE="custom-flags custom-oimization" = 1399 попугаев, жуть. Пока не могу бинарник догнать.

графит - угощайтесь :)
графит может дать профит лишь на небольшом кол-ве софта

#239433

megabaks, да сначала понакрутил дофига.
В итоге, пока:
CFLAGS="-march=native -mtune=generic -O2 -pipe -g0 -Wno-all" =2141 попугаев. Все равно не дотянул.
Еще грешу на glibc, зря до 2.15 наверное обновил, в обратную никак.
На Funtoo надо глянуть.

#239434

хм...
бинарный 1591
самосбор 1598
это на 32
-O2 -march=core2 -mtune=generic -mfpmath=sse -msse4.1 -fomit-frame-pointer -pipe
alsa crashreporter custom-cflags custom-optimization dbus ipc linguas_ru minimal

#239437
text
gcc -march=native -E -v - </dev/null 2>&1 | sed -n 's/.* -v - //p'

хреновенькая команда
только для натива и катит

text
echo "int main() { return 0; }" |LANG=en gcc ${CFLAGS} -v -Q -x c - 2>&1

куда лучше и универсальней

#239590

тоже решил оптимизировать под quad9550.
CFLAGS="-march=core2 -O2 -pipe -msse4.1 --param l1-cache-size=64 --param l1-cache-line-size=64 --param l2-cache-size=6144"
И так, хочу разобрать почему именно так написал.
сюда "-march=core2" я так понимаю уже входят флаги -mmmx -msse -msse2 -msse3 mssse3 поэтому вписывать я их не стал. Так как мой проц держит sse4.1. то вписал соответствующий флаг ибо core2 его не включает почему то -msse4.1(может для совместимости с другими цпу) -mtune=core2 вписывать не стал ибо включен в march. Ну с этим все понятно "--param l1-cache-size=64" кэш 1го уровня у проца 64кб. Теперь есть 2 непонятка: --param l1-cache-line-size=64 это что такое? кэш такой же выставлять на 1й уровень? и флаг --param l2-cache-size=6144 выставил значение 6метров кэша 2го левела, НО q9550 имеет 12 метров кэша L2. Дело в том что этот кэш у него разделен на 2 части, т.е 2 по 6мб L2. Как следует вписать этот параметр? ввести 12288 вместо 6144?

#239592

сюда "-march=core2" я так понимаю уже входят флаги -mmmx -msse -msse2 -msse3 mssse3 поэтому вписывать я их не стал. Так как мой проц держит sse4.1. то вписал соответствующий флаг ибо core2
да, core2 включает эти флаги
но даже без этого -msse4.1 их тоже включает
игры с кэшами особого профита не дадут
так же ты не сказал - 32 или же 64 у тебя
по поводу -mtune - оно, если не задано явно, принимает значение -march
но я таки советую -mtune=generic
как ни странно, это часто даёт профит, хоть и не большой
#239593

virxak, что в выхлопе на

text
gcc -march=native -E -v - </dev/null 2>&1 | sed -n 's/.* -v - //p'

??

#239596

megabaks, 64 конечно у меня) х86 прошлый век.
может кэш профита и не даст, но всетаки хочу явно указать точные значения

#239598

newzenon, приду домой посмотрю) просто пока делаю наброски.

#239601

virxak написал:
megabaks, х86 прошлый век.
таки нет
наличие мультилиба опровергает это высказывание
моё имхо
если комп не занят только считалками float-point, то 64 - это попытка бежать впереди паровоза
а на десктопе 64 без мультилиба вообще не юзабельно
особенно касается некоторых проприетарных софтин, которые 32-онли
#239603

megabaks, мультилиб я тож использую, но у меня 8гб озу+х64 инструкции на проце они должны быть задействованы. И тут тока х64

Войдите или зарегистрируйтесь, чтобы ответить.