BINHOST, нужен совет
Всем привет!
Из-за громадного пакета dev-qt/qtwebkit
и наличию двух слабых машин решил поднять BINHOST на третьей, более-менее производительной. Согласно wiki, должны быть одинаковые CHOST, CFLAGS, CXXFLAGS и CPU_FLAGS_X86. Конфигурация следующая, CFLAGS для каждой определял через скрипт:
#!/bin/bash echo $( gcc -v -march=native -x c /dev/null 2>&1 \ | fgrep -- '-march' \ | egrep -o ' (-m|--param )\S+' \ | fgrep -v -- '-mno-' )
CPU_FLAGS_X86 определял через app-portage/cpuid2cpuflags
Итак:
Intel Core i5, 8 GiB (тут планируется BINHOST)
CHOST="x86_64-pc-linux-gnu" CFLAGS="-march=sandybridge -mmmx -msse -msse2 -msse3 -mssse3 -mcx16 -msahf -mpclmul -mpopcnt -mavx -msse4.2 -msse4.1 -mfxsr -mxsave -mxsaveopt --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=3072 -mtune=sandybridge" CXXFLAGS="${CFLAGS}" CPU_FLAGS_X86="avx mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
Intel Celeron N3050, 2 GiB
CHOST="x86_64-pc-linux-gnu" CFLAGS="-march=silvermont -mmmx -msse -msse2 -msse3 -mssse3 -mcx16 -msahf -mmovbe -maes -mpclmul -mpopcnt -msse4.2 -msse4.1 -mrdrnd -mprfchw -mfxsr --param l1-cache-size=24 --param l1-cache-line-size=64 --param l2-cache-size=1024 -mtune=generic -O2 -pipe" CXXFLAGS="${CFLAGS}" CPU_FLAGS_X86="aes mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
Intel Core2Duo, 2 GiB
CHOST="x86_64-pc-linux-gnu" CFLAGS="-march=core2 -mmmx -msse -msse2 -msse3 -mssse3 -mcx16 -msahf -mfxsr --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=2048 -mtune=core2 -O2 -pipe" CXXFLAGS="${CFLAGS}" CPU_FLAGS_X86="mmx mmxext sse sse2 sse3 ssse3"
Ну и USE тоже должны быть одинаковые, но это уже другой момент.
Стратегия в общем-то ясна, - собирать только с теми флагами, которые есть у всех. Но есть ещё вопросы:
1. Как быть со значениями типа "--param l2-cache-size=2048", ставить одинаковое число?
2. Данные значения -march уже подразумевают -mmmx -msse и др., не будет ли проблем с повторением такого рода?
3. Имеет ли значение (для совместимости) во сколько потоков собирать? (на Core i5 - MAKEOPTS="-j5", на остальных - MAKEOPTS="-j3")
- Для комментирования войдите или зарегистрируйтесь
Привет. Ну главное не
Привет. Ну главное не забывать, что основное требование это наличие на всех хостах одинаковой версии gcc. Иначе танцы с бубном гарантированы.
Читать о CFLAGS и CXXFLAGS тут
discord: hwline#1904
constantly use: funtoo-linux, ubuntu
Ты случаем с DISTCC не путаешь?.. ;)
Ты случаем с DISTCC не путаешь?.. ;)
Но в принципе ты прав, а также linux-headers и glibc (весь тулчейн) должны быть одинаковыми, но это как бы очевидно.
Для простоты понимания:
Для простоты понимания: основная идея в том, чтобы бинарники были совместимыми и могли бы исполняться на всех машинах, которые пользуются этим ресурсом.
Поэтому
MAKEOPTS
- пофиг, он используется только локально при компиляции, а вот разныеmtune
могут быть проблемой, если компилятор будет не только сам пользоваться, но и вставлять "оптимизированные" куски в бинарники. Я не настолько знаком с работой самого компилятора. Кстати, а зачем такие сложные флаги?! Практика показывает, что ускорение если и есть, то весьма символическое и не стоит усложнения конфигураций. Но это для больших ферм, конечно. Дома, наверное, можно себе позволить такие игры ради пары процентов ускорения... :) Хотя я и дома уже больше 15 лет использую только CFLAGS="-O2 -pipe" (не считаяmarch
, конечно) и конфиги кочуют с машины на машину...В общем, руководствуйся принципом из первой строчки.
Согласен. А тут можно
Согласен.
А тут можно почитать более подробно об опциях gcc, какая за что отвечает. Может пригодиться.
discord: hwline#1904
constantly use: funtoo-linux, ubuntu
SysA написал(а): Практика
Дык, я тоже не фанат кучи флагов, везде стоит CFLAGS="-march=native -O2 -pipe". И вся загвоздка в том, что native для каждого проца свой (т.е. разный набор других флагов).
Собственно для этого я и использовал скрипт для получения спектра флагов native на каждом процессоре.
.
Можно откатиться на генерик.
См. мой комментарий в ЧаВо.
http://www.gentoo.ru/content/u-menya-processor-imyarek-chto-podstavlyat-v-peremennuyu-cflags#comment-208019
:wq
--
Live free or die
А если вообще не указывать
А если вообще не указывать march?
Что по-умолчанию будет использоваться если поставить
CFLAGS="-O2 -pipe"
как на оффициальных stage3?