Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 25 • Страница 2 из 2<  1  2
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 29.10.2003
Откуда: 埼玉、日本
Фото: 9
devl547
devl547 писал(а):
CFLAGS="-march=native -O3 -g0 -s -mmmx -mssse3 -mfpmath=both -ftree-vectorize -ffast-math -fno-tree-pre -fdata-sections -ffunction-sections"
:facepalm:

Добавлено спустя 28 минут 53 секунды:
итак, почему фейспалм ))):
1. -march=native тут придраться не к чему
2. -O3
Цитата:
http://www.gentoo-wiki.info/CFLAGS#-O2_or_-O3.3F
What effects -O3 has

-O3 is the highest optimization level and could possibly make faster code but the applications that benefit from it are very few, usually image and video decoders and such. However the side effects, like larger binary size, affects everything. Larger binaries use more memory, load slower, cause more disc I/O, etc. So compiling a system with -O3 will have the effect that a few applications run slightly faster at the expense of the rest of the system running slightly slower and becoming less responsive.
<...>
-O2 smaller binary, faster to load from disk, less RAM usage, better cache usage in systems with moderate cpu cache, higher reliability;
-O3 slight to moderate speed increase for some applications, higher memory (RAM, cache and disk) usage, longer load times from disk, very occasional problems with compilation; expect less than 1% improvement in *overall* execution speed.

3. -g0
Цитата:
http://forums.ps2dev.org/viewtopic.php?p=68788
Information bump:
I've noticed a bug (more like instability) when -G0 is on and one is using the VFPU
<...>
The PSP crashes with this:
<...>
The VFPU expects the parameters to be globals
-G0 screws this up causing the VFPU to fail
I suggest that -G0 be left off if you're using the VFPU
Without -G0 it runs fine

4. -s применяется по умолчанию, где это необходимо
5. -mmmx -mssse3 -mfpmath=both зачем??? что -march=native было недостаточно??? там уже всё включается автоматически :facepalm:
Цитата:
http://www.gentoo.org/doc/en/gcc-optimization.xml You normally don't need to add any of these flags to /etc/portage/make.conf as long as you are using the correct -march (for example, -march=nocona implies -msse3).

6. -ftree-vectorize является частью -O3 :fool:
7. -ffast-math
Цитата:
http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Optimize-Options.html This option should never be turned on by any -O option since it can result in incorrect output for programs which depend on an exact implementation of IEEE or ISO rules/specifications for math functions.
:facepalm: :facepalm: :facepalm: :rtfm:
8. -fno-tree-pre
Цитата:
-ftree-pre
Perform partial redundancy elimination (PRE) on trees. This flag is enabled by default at -O2 and -O3.
то есть а теперь отключили оптимизацию? :facepalm:
9. -fdata-sections -ffunction-sections
Цитата:
Only use these options when there are significant benefits from doing so. When you specify these options, the assembler and linker will create larger object and executable files and will also be slower. You will not be able to use gprof on all systems if you specify this option and you may have problems with debugging if you specify both this option and -g.
:facepalm:

нет ну серьёзно. Вы думаете, что умнее разработчиков компиляторов, или это детство в одном месте играет, или такое странное хобби крутить всё где нужно и не нужно и всем хвастаться "а у меня всё работает" :facepalm: . а нам разрабам потом разбирать всё это дерьмецо, которое льют на нас эти "энтузиасты б..." . только дай обезьяне гранату ... :facepalm:
правильные CFLAGS для вашей конфигурации:
-O2 -fomit-frame-pointer -pipe -march=native



Партнер
 

Member
Статус: Не в сети
Регистрация: 05.03.2013
Откуда: СПб
Никогда не видел Генту, но по официальному handbook собралось без проблем и с первого раза.


 

Member
Статус: Не в сети
Регистрация: 10.05.2011
Откуда: Москва
Zio, ты сделал меня смеяться. По пунктам:

>2. -O3

Приведенная тобой цитата висит еще со времен первопней и 16 метров оперативы. Десктоп не embedded, даже linaro сейчас O3 использует. Угадай, почему?
Сейчас ни размер бинарника, ни IO, ни потребление памяти (да, плюс 10-20 лишних процентов у бинарника) не решают.

>3. -g0

Я хз, что за тулчейн там в разработке для PSP, но -g0 вырубает только информацию для дебага, не трогая рантайм.
Скажу еще - strip и -s эту информацию режут.

>4. -s применяется по умолчанию, где это необходимо

Не применяется. Не, конечно в генте есть костыль в виде вызова strip после сборки, но это костыль.

>5. -mmmx -mssse3 -mfpmath=both зачем??? что -march=native было недостаточно??? там уже всё включается автоматически :facepalm:

Фильтрация флагов? Не, не слышал.
А mfpmath=both по-дефолту нигде не используется (дефоолт либо x87 на 32-битах, либо SSE на 64-х)

>-ftree-vectorize является частью -O3 :fool:

Фильтрация флагов? Ебилды любят принудительно O2 подставлять.

>7. -ffast-math

В твоей же цитате: "which depend on an exact implementation of IEEE or ISO rules/specifications for math functions."
Нужный софт и так игнорирует ffast-math или выдает предупреждение. Тот же sqlite. Остальные работают и не гавкают.

>то есть а теперь отключили оптимизацию? :facepalm:

Да. Потому что эта "оптимизация" любит скорость резать, местами до 10+%

>9. -fdata-sections -ffunction-sections

А теперь идешь в опции линкера и видишь -Wl,--gc-sections, который вычищает неиспользуемые секции кода. LTO (-flto) делает ту же задачу, кстати.

Цитата:
а нам разрабам потом разбирать всё это дерьмецо, которое льют на нас эти "энтузиасты б..." . только дай обезьяне гранату ... :facepalm:


Вам разрабам надо бить чем-нибудь тяжелым трижды в день по голове. А то потом ковыряй быдлокод, который собирается только одной версией компилятора и с только одними флагами.

Код:
правильные CFLAGS для вашей конфигурации:
-O2 -fomit-frame-pointer -pipe -march=native


Хочешь ставить их себе - ставь. У меня уже несколько лет в таком состоянии работает и проблем не имею.

Zio писал(а):
Вы думаете, что умнее разработчиков компиляторов, или это детство в одном месте играет, или такое странное хобби крутить всё где нужно и не нужно и всем хвастаться "а у меня всё работает"


Разработчики компиляторы тоже люди и тоже ошибаются.
Более того, gcc - раздутый монстр с кучей лишних уже давно ни на что не влияющих оптимизаций, которые можно и нужно тупо выкинуть. Но раздутое ЧСВ разработчиков не позволяет свои ошибки признавать.


 

Member
Статус: Не в сети
Регистрация: 29.10.2003
Откуда: 埼玉、日本
Фото: 9
devl547 вопросов больше не имею ;) тяжёлый случай )
ладно, дома ставьте что хотите ))
только
devl547 писал(а):
>2. -O3

Приведенная тобой цитата висит еще со времен первопней и 16 метров оперативы. Десктоп не embedded, даже linaro сейчас O3 использует. Угадай, почему?
Сейчас ни размер бинарника, ни IO, ни потребление памяти (да, плюс 10-20 лишних процентов у бинарника) не решают.

у CPU есть кэш инструкций, которого мало есть, очень мало. и хорошие алгоритмы часто пользуются этим, в том смысле, что код помещается в L1. так вот там -Os бывает в разы быстрее -O3
+ начиная с Nehalem, CPU до лампочки, разворачиваете for loop или нет, или что-то там выравниваете по 16 байт - работать будет одинаково быстро. зато L1 там не резиновый, и всякие -O3 будут его тратить впустую.


 

Member
Статус: Не в сети
Регистрация: 10.05.2011
Откуда: Москва
Zio писал(а):
у CPU есть кэш инструкций, которого мало есть, очень мало. и хорошие алгоритмы часто пользуются этим, в том смысле, что код помещается в L1.


Так вот: При выборе -march, GCC задает еще и --param l1-cache-size и --param l2-cache-size. И от них пляшет эвристика многих вещей, не только анролла.

Zio писал(а):
начиная с Nehalem, CPU до лампочки, разворачиваете for loop или нет


Векторизация. Развернутые циклы более агрессивно векторизуются.
Кстати, фирменный интеловский компилятор тоже любит разворачивать циклы и генерировать векторизованный код.

Цитата:
или что-то там выравниваете по 16 байт - работать будет одинаково быстро.


Начиная с первого поколения core i, да - unaligned доступ сильно улучшили.

Zio писал(а):
зато L1 там не резиновый, и всякие -O3 будут его тратить впустую.


Не будут. Читай первую строчку.

Zio, ну не страдай ты фигней - мы с Silvy и прочими лоровцами не раз и не два обсуждали внутренности gcc и рекомендуемые флаги компилятора.
Да и не только мы. Повторюсь - эти флаги у меня висят на нескольких системах и не один год. Ни регрессий, ни проблем не было ни разу.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 25 • Страница 2 из 2<  1  2
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan