Злая оптимизация

Предлагаю дискас на тему злой и вредной оптимизации системы.

Дисклеймер: да, я знаю, что ничего не знаю, что всё есть в мане, что лучше -O2 -march=native -pipe ничего нет, ССЗБ, никто не поможет, всё можно сломать и всё субъективно.

Теперь вопросы:
1) Какой процессор, система?
2) Какие флаги компиляции/линковки (C*FLAGS, LDFLAGS) вы используете, и почему, как, к чему и насколько они дают прирост? Иногда знаний не хватает (или лень читать), поэтому было бы здорово услышать простым и понятным языком, что даёт та или иная опция (например, злосчастная -ftree-vectorize), какие подводные камни и последствия.
3) В чём польза или вред no-multilib, от чего придётся отказаться и как это восполнить, что получаем взамен?

Расскажу немного сам: проц Core2Duo T5780, ~amd64. Играл с флагами -floop-* и -mfpmath=sse -msse*, замечал прирост скорости кодирования flac на несколько секунд при больших файлах (до 1Гб). Зато Qt-core не хочет собираться с -mfpmath=sse -msse* : для неё персонально пришлось выставить только простые -O2 -march=native -pipe.

А что вам есть рассказать?

Core 2 E4550 / 2 Гб Ram / NVidia 8600 GT 256 Mb

Юзал на Core 2 Quad Q6600 и юзаю сейчас это:

$ cat /etc/make.conf

CFLAGS="-march=core2 -mtune=generic -O2 -pipe"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"

USE="-doc symlink nptl nptlonly mmx sse sse2 ssse3 sse3 smp nls unicode \
networkmanager dhcp dhcpd ppp ares acpi apm udev tools extras usb syslog gnutls \
icu mpi threads rar cdr dvdr cdrw fbcon jpeg png svg tiff pdf djvu"

ACCEPT_KEYWORDS="~amd64"
MAKEOPTS="-j3"

взято с wiki (cpu safe flags). разгон не юзаю, специальные флаги тоже. я очень сомневаюсь что они дадут прирост например > 10-20%, а ниже... мне кажется незачем комп насиловать)

Но при возможности сборки на мощном быстром компе - я ЗА эксперименты. :)

 alex__ написал(а): Какой



alex__ написал(а):
Какой процессор, система?

System uname:

. GCC с флагами fortran graphite lto mudflap nls nptl openmp, но прикрутить lto пока ещё не получилось (работаем над этим) ;-)

Цитата:
Какие флаги компиляции/линковки (C*FLAGS, LDFLAGS) вы используете, и почему

CFLAGS=CPPFLAGS=CXXFLAGS="-O2 -pipe -g0 -march=native -mtune=native -fivopts -fno-align-labels -fno-align-loops -fpredictive-commoning -ftree-vectorize". Почему именно эти - имхую для них одновременное выполнение 2-х условий (эффективность+безопасность) по результатам чтения манов GCC, статей Криса Касперски, др. публикаций с глубоким последующим гуглением по заинтересовавшим опциям и проверкой рез-тов последовательно на тяжёлых пакетах, toolchain, @system, @world на разных (но не сильно отличающихся) железках

Цитата:
как, к чему и насколько они дают прирост?

Вопрос сложный и лукавый. Вести об этом речь есть смысл на основе статистики, методически различных тестов, etc, что требует быть не энтузизистом, но фанатом. А "на глаз" все приросты нивелирует система APM, не отключать же её специально!..

Цитата:
что даёт та или иная опция (например, злосчастная -ftree-vectorize), какие подводные камни и последствия

За что же вы её так - злосчастная? А вообще, ваш вопрос ("та или иная") тянет даже не на статью, но на цикл статей... Конкретно же по векторизации - см., к примеру, здесь

Цитата:
В чём польза или вред no-multilib, от чего придётся отказаться и как это восполнить, что получаем взамен?

Отказаться придётся от софта, в принципе не существующего на текущий момент для 64bit (как правило, различная бинарная проприетарщина, точно знаю - skype, возможно Nero и пр. неправославная хрень). Из опенсорцев знаю такую беду только для wine и grub2. Взамен получаете уменьшение хлама на диске в виде набора 32bit либ, и, соотв., ускорение компиляции как раз за счёт ненужности этих самых 32bit либ, если они предоставляются конкретным пакетом

Цитата:
Qt-core не хочет собираться с -mfpmath=sse -msse* : для неё персонально пришлось выставить только простые -O2 -march=native -pipe

Дык, актуальная версия портежа вполне себе предоставляет возможность указания опций для любого пакета индивидуально. Но, вроде как, для x86_64 арифметика (fpmath) и так векторизована посредством SIMD, пока вы сами это не запретите, так что данный флаг не при делах, имхо...

Мы тоже не всего читали Шнитке!.. © В. Вишневский

thx за инфу!

По поводу арифметики SIMD и -mfmpath=sse — оно, может быть, так и есть, но Qt не собиралась. Могу даж попробовать ещё раз, и выложить логи.

По поводу остального: можешь поделиться хорошимы ссылками на инфу? Исхожу из того, что человек может посоветовать что-то, что будет трудно нагуглить.

И, всё же — что дала тебе оптимизация? пусть даже и субъективно?

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".