Опции для gcc (нестандартный вопрос)

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

atlonchik
Сообщения: 145
ОС: Gentoo Linux x86

Опции для gcc (нестандартный вопрос)

Сообщение atlonchik »

В make.conf у меня прописано march=core2. Но вот вывод команды меня очень сильно смутил:

Код: Выделить всё

gcc -c -Q -march=core2 --help=target
Следующие ключи не зависят от целевой архитектуры:
  -m128bit-long-double                  [выключено]
  -m32                                  [выключено]
  -m3dnow                               [выключено]
  -m3dnowa                              [выключено]
  -m64                                  [включено]
  -m80387                               [включено]
  -m96bit-long-double                   [включено]
  -mabm                                 [выключено]
  -maccumulate-outgoing-args            [выключено]
  -malign-double                        [выключено]
  -malign-functions=
  -malign-jumps=
  -malign-loops=
  -malign-stringops                     [включено]
  -march=                               core2
  -masm=
  -mbranch-cost=
  -mcld                                 [выключено]
  -mcmodel=
  -mcx16                                [включено]
  -mfancy-math-387                      [включено]
  -mfp-ret-in-387                       [включено]
  -mfpmath=
  -mfused-madd                          [включено]
  -mglibc                               [включено]
  -mhard-float                          [включено]
  -mieee-fp                             [включено]
  -minline-all-stringops                [выключено]
  -minline-stringops-dynamically        [выключено]
  -mintel-syntax                        [выключено]
  -mlarge-data-threshold=
  -mmmx                                 [выключено]
  -mms-bitfields                        [выключено]
  -mno-align-stringops                  [выключено]
  -mno-fancy-math-387                   [выключено]
  -mno-push-args                        [выключено]
  -mno-red-zone                         [выключено]
  -mno-sse4                             [включено]
  -momit-leaf-frame-pointer             [выключено]
  -mpc
  -mpopcnt                              [выключено]
  -mpreferred-stack-boundary=
  -mpush-args                           [включено]
  -mrecip                               [выключено]
  -mred-zone                            [включено]
  -mregparm=
  -mrtd                                 [выключено]
  -msahf                                [включено]
  -msoft-float                          [выключено]
  -msse                                 [выключено]
  -msse2                                [выключено]
  -msse3                                [выключено]
  -msse4                                [выключено]
  -msse4.1                              [выключено]
  -msse4.2                              [выключено]
  -msse4a                               [выключено]
  -msse5                                [выключено]
  -msseregparm                          [выключено]
  -mssse3                               [выключено]
  -mstack-arg-probe                     [выключено]
  -mstackrealign                        [выключено]
  -mstringop-strategy=
  -mtls-dialect=
  -mtls-direct-seg-refs                 [включено]
  -mtune=                               core2
  -muclibc                              [выключено]
  -mveclibabi=

Так может быть всё таки стоит дописать ключи вида -mmmx ,-msse и так далее???
Спасибо сказали:
Аватара пользователя
razum
Сообщения: 189
ОС: Gentoo 64

Re: Опции для gcc (нестандартный вопрос)

Сообщение razum »

Ага. В такие моменты и рождаются гентушники.
Когда понимают, что все, что было скомпилено ДО
CFLAGS="-O2 -march=native -mmmx -msse -msse2 -msse3 -mfpmath=sse -fomit-frame-pointer -ftracer"

до этого вся (ну, не вся, но мультимедийная...) оптимизация - была ТУФТА.
---
АЛСО. Гентушнег родилсо.
:)
(PS -pipe не нужен, если )
tmpfs on /var/tmp type tmpfs (rw,size=2G)
Спасибо сказали:
Аватара пользователя
Brainsburn
Сообщения: 950
Статус: /
ОС: Gentoo

Re: Опции для gcc (нестандартный вопрос)

Сообщение Brainsburn »

Да, кстати теперь всегда можно указывать march=native и GCC сам определит, что за архитектура
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5495
ОС: Gentoo

Re: Опции для gcc (нестандартный вопрос)

Сообщение /dev/random »

Brainsburn писал(а):
22.04.2009 20:11
Да, кстати теперь всегда можно указывать march=native и GCC сам определит, что за архитектура

Флаги -msse и прочее не определит.
Спасибо сказали:
Аватара пользователя
trancefer
Сообщения: 485
Статус: $>
ОС: Arch, Slackware, OpenBSD

Re: Опции для gcc (нестандартный вопрос)

Сообщение trancefer »

Хм, а если скажем прописать msse, msse2 и т.д. для CFLAGS и CXXFLAGS то нужно ли указывать USE типа sse, sse2 для отдельных пакетов или можно обойтись без них?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5495
ОС: Gentoo

Re: Опции для gcc (нестандартный вопрос)

Сообщение /dev/random »

trancefer писал(а):
22.04.2009 21:37
Хм, а если скажем прописать msse, msse2 и т.д. для CFLAGS и CXXFLAGS то нужно ли указывать USE типа sse, sse2 для отдельных пакетов или можно обойтись без них?

Обойтись можно без чего угодно. Но эти use-флаги обычно влияют не на работу компилятора, а на зависящий от процессора код самой программы - ассемблерные вставки и т.д. (по #ifdef'у)
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 887
ОС: gentoo

Re: Опции для gcc (нестандартный вопрос)

Сообщение vr13 »

razum писал(а):
22.04.2009 19:56
АЛСО. Гентушнег родилсо.
:)

:) забавное замечание. +1

на самом деле, RTFM (цитата из gcc man page). чтение документации тоже свойственно (при)рожденным:
core2
Intel Core2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3
and SSSE3 instruction set support.

а вот всякие там sse4.1 и далее - в core2 не входит. кстати, полезная и лаконичная ссылка
Спасибо сказали:
Аватара пользователя
Brainsburn
Сообщения: 950
Статус: /
ОС: Gentoo

Re: Опции для gcc (нестандартный вопрос)

Сообщение Brainsburn »

http://gentoo.ru/node/14818#comment-103534 вот тут почитайте лучше
Как я понял, это баг - оно и так включено. Потому-что даже после включения этих флагов в CFLAGS, оно показывает, будто они все еще выключены.
Тогда встает вопрос - как точно узнать, какие флаги оптимизации включены, а какие - нет?
Спасибо сказали:
atlonchik
Сообщения: 145
ОС: Gentoo Linux x86

Re: Опции для gcc (нестандартный вопрос)

Сообщение atlonchik »

Brainsburn
Как раз там и разбираемся с этим вопросом тоже.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Опции для gcc (нестандартный вопрос)

Сообщение serzh-z »

razum писал(а):
22.04.2009 19:56
Когда понимают, что все, что было скомпилено ДО
razum писал(а):
22.04.2009 19:56
до этого вся (ну, не вся, но мультимедийная...) оптимизация - была ТУФТА.
Во-первых, -msse3, включит все предыдущие версии SSE - sse2 и sse. Во-вторых, см. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39851. "-fverbose-asm" с "-S" создаст .s-файл с перечнем реально использованных флагов оптимизации (заодно можно и убедиться самостоятельно, что сгенерированный код используется команды и/или регистры SIMD).

P.S.: поскольку польза в "-msse" для большинства обычных приложений практически отсутствует, то в этом случае имеет смысл включить векторизацию циклов с использованием SIMD-инструкций (SSE) - "-ftree-vectorize". В этом случае компилятор попробует заменить сложные циклы на аналогичные, но с использованием этих инструкций. Как это скажется на отладке, дампах и стабильности приложений - не знаю, но думаю, что ничуть не лучше, чем "-funroll-loops" и прочии опции из "-O3".
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5495
ОС: Gentoo

Re: Опции для gcc (нестандартный вопрос)

Сообщение /dev/random »

serzh-z писал(а):
23.04.2009 17:20
Как это скажется на отладке, дампах и стабильности приложений - не знаю, но думаю, что ничуть не лучше, чем "-funroll-loops" и прочии опции из "-O3".

Из собственного опыта, теории под это подвести не могу: отлаживать лучше даже не пытаться. Проблемы - вплоть до сегфолтов в gdb. А вот проблем со стабильностью работы не заметил. Флаг включён достаточно давно.
Спасибо сказали: