LINUX.ORG.RU

native
На вот. Поставь на CFLAGS

-O2 -pipe -march=native -mtune=generic -msse4.1 -mmmx -ffast-math -mcx16 -msahf -mfpmath=sse -fomit-frame-pointer -funroll-loops -finline-functions -ftree-vectorize

Bad_ptr ★★★★★
()
Последнее исправление: Bad_ptr (всего исправлений: 1)

В общем написал так: -O2 -march=native -ftracer -mfpmath=sse -w -pipe

makeB
() автор топика
Ответ на: комментарий от ymuv

Ругайте.

-mtune=core2 не нужен, зачем поддерживать младшее говно?

makeB
() автор топика
Ответ на: комментарий от ymuv

-mtune не нужен - он и так по умолчанию равен значению -march
либо надо задавать его в generic - ибо быстрей
-mmmx тоже не нужен - он в составе -msse4.2
таки дела

megabaks ★★★★
()
Ответ на: комментарий от Bad_ptr

Сразу видно аналитега. '-O2' вместо '-Os' или '-Ofast', flto в помине нету, зато '-msse' и '-mmmx', которые автоматом включатся от native архитектуры, ffast-math, способный поломать некоторые программы, и очень спорный unroll-loops, который может как поднять, так и понизить производительность.

quiet_readonly ★★★★
()
Ответ на: комментарий от Kindly_Cat

Вообще-то нет, сейчас рулит отзывчивость программы, а она флагами компилятора не улучшается (это у гентушников плацебо такое). Только concurrensy.

Но всегда приятно поиздеваться над людьми, верящими во флаги и не слышавшими про link time optimization, profile guided optimization и не знающими, почему в debian кое-где даже флаг -O2 не ставят.

quiet_readonly ★★★★
()
Последнее исправление: quiet_readonly (всего исправлений: 1)
Ответ на: комментарий от Kindly_Cat

flto в помине нету

А надо?

он бывает очень крут, но я его тестил только на своем, хотя «по идее» ломать ничего не должен

Stil ★★★★★
()
Ответ на: комментарий от quiet_readonly

Сразу видно аналитега. '-O2' вместо '-Os' или '-Ofast'
'-Ofast'
ffast-math, способный поломать некоторые программы

сам себе противоречишь
а -O2 пока что оптимальный уровень
матчасть поучил бы...

megabaks ★★★★
()
Ответ на: offtopic от Stil

offtopic to be continued

Нет, не работал.

quiet_readonly ★★★★
()
Ответ на: комментарий от megabaks

это в теориии, а на приктике есть софт который с ним ты вообще не соберёшь

И это подтверждает мою точку зрения, что включением lto и profile-guided optimization должны заниматься авторы софта, равно как и пакетированием. К сожалению, им тут сплошные препоны ставят - и в gcc куча багов всплывает при агрессивных оптимизациях, и пакеты требуют спек на не пойми каком языке, и системы сборки далеко не интуитивно понятны.

quiet_readonly ★★★★
()
Ответ на: комментарий от quiet_readonly

И это подтверждает мою точку зрения, что включением lto и profile-guided optimization должны заниматься авторы софта

согласен

равно как и пакетированием

мне винда не нужна
я сам знаю с какими опциями собрать пакет
если они будут выкладывать сборки типа minimal_gtk2, minimal_gtk3, full_version и прочие ВСЕвозможные комбинации, аля гента, то согласен
иначе это будет фарш

megabaks ★★★★
()
Ответ на: комментарий от quiet_readonly

зато '-msse' и '-mmmx', которые автоматом включатся от native архитектуры


Это с какой версии гцц они стали включаться автоматом ?

nirolov
()
Ответ на: комментарий от nirolov

man gcc
с помощью -msse* ты можешь только задать поддерживаемые симды, если они не заданы в -march=*
поясню:

core2
               Intel Core2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 instruction set support.
а моя корка (точнее уже quad) поддерживает ещё и sse4_1, потому у меня задан ещё и -msse4.1
сделано это для того, чтобы охватить инструкции, которые поддерживают все корки (в данном случае)
надеюсь понятно разжевал

megabaks ★★★★
()
Ответ на: комментарий от Bad_ptr

не все корки поддерживают sse4_1
mmx избыточен в данном случае аж 2 раза: native + -msse4.1
ffast-math ломает кучу софта, а вторую заставляет работать медленнее - привет, архиваторы
фанролл так же может довольно нехило тормознуть софт
инлайн аналогично
векторизация тоже иной раз болеет этим
короче, из твоего я бы оставил только: -O2 -pipe -march=native -mtune=generic -msse4.1 -mcx16 -msahf -mfpmath=sse -fomit-frame-pointer
если 64
в случае 32 убрать ещё и -mcx16 -msahf
ах да -fomit-frame-pointer только на мультилибе разве что может быть полезен, если брать 64

megabaks ★★★★
()
Последнее исправление: megabaks (всего исправлений: 2)
Ответ на: комментарий от nirolov

включает на самом деле

echo "int main() { return 0; }" |LANG=en gcc -march=core2 -v -Q -x c - 2>&1
....
 -mfancy-math-387 -mfp-ret-in-387 -mglibc -mieee-fp -mmmx -mno-red-zone
 -mno-sse4 -mpush-args -msahf -msse -msse2 -msse3 -mssse3
 -mtls-direct-seg-refs
...
echo "int main() { return 0; }" |LANG=en gcc -march=native -v -Q -x c - 2>&1
....
 -mfancy-math-387 -mfp-ret-in-387 -mglibc -mieee-fp -mmmx -mno-red-zone
 -mpush-args -msahf -msse -msse2 -msse3 -msse4.1 -mssse3
 -mtls-direct-seg-refs
....

megabaks ★★★★
()
Ответ на: комментарий от quiet_readonly

Сразу видно аналитега.

сразу видно зубрилу флагов компеляции. :)
я это скопировал откуда-то из интернета. Но спасибо за подсказки.

Bad_ptr ★★★★★
()
Ответ на: комментарий от nirolov

sqlite уже научилось понимать -ffast-math ? Чоловик пойдет собирать фокс и фигвам

ну так пусть головой научится думать, что если чего-то не собирается, то надо попробовать без всяких там оптимизаций собрать

Bad_ptr ★★★★★
()
Ответ на: комментарий от nirolov

На хабрахабре в блоге интел писали, что в 64-битных системах sse вообще всегда включено, потому что не бывает x64 процессоров без sse.

quiet_readonly ★★★★
()
Ответ на: комментарий от megabaks

CFLAGS=" -march=core2 -mtune=core2 -O2 -pipe -mmmx -msse4.2 -ftracer -mfpmath=sse"

тоже

CFLAGS=" -march=core2 -O2 -pipe -msse4.2 -ftracer -mfpmath=sse"

для 3-7-ого корка:

CFLAGS="-march=corei7 -O2 -pipe -msse4.2 -ftracer -mfpmath=sse"

И да, давно волнующий вопрос, на который я не нашел ответа: какую mfpmath лучше писать (лучше в плане быстродействия)

-mfpmath=sse
-mfpmath=sse,387

?

ymuv ★★★★
()
Ответ на: комментарий от ymuv

mfpmath=both. Регрессий нет, а вот профиг местами раза в 2-3 бывает.

devl547 ★★★★★
()
Ответ на: комментарий от megabaks

Сильвия, емнип, предпочитала второе

У неё отношение к оптимизации было, как к складскому учёту: пять штук продвинутых инструкций в маш.коде автоматически делает его лучше, чем две штуки таких инструкций. Где они там в этом коде находятся и что конкретно делают - ниипёт.

mv ★★★★★
()
Ответ на: комментарий от mv

считалочка была только для того, чтобы выяснить и показать на практике какие ключи что дают и как в каких случаях работают

megabaks ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.