LINUX.ORG.RU

[megabaks,silvy][gentoo] Флаги компиляции

 


0

1

Купил AMD Phenom(tm) II X6 1055T, выставил в make.conf

CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"

Оставить как есть, или же можно добавить что-то еще?

Гента x86_64 На старом Athlon x2 3800+ x86 было:

CFLAGS="-O2 -march=k8-sse3 --param l2-cache-size=512 -pipe -fomit-frame-pointer -mmmx -msse2 -m3dnow -mfpmath=sse -Wno-deprecated -fno-align-labels -fexcess-precision=fast"


>-fomit-frame-pointer
зачем? на 64 оно не нать

megabaks ★★★★
()

Я бы оставил так. Остальное вплоть до -Ofast и ldфлаги — на отдельные пакеты.

-fomit-frame-pointer

Включено по дефолту на x86_64 же.

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

Поздно прочитал коммент, значит оно на x64 не нужно?

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

Ну у тебя и запросы. bzip или xz (один из двух), наверно. libgmp, может. Я уже не увлекаюсь этим и почти всё на -O2 собираю.

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

>It combines the existing optimization level -O3 with options that can affect standards compliance but result in better optimized code. For example, -Ofast enables -ffast-math.

Мой плохой английский говорит мне, что это аналогично оптимизации O3, но добавляет еще какие-то фичи по оптимизации кода? Тогда наверное на десктопе мне не нужно.

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

с -O3 уже можно легко словить регресс или даже неработоспособность/несобираемость
а уж с -ffast-math (причём частичной) профит получить если и можно, то на очень небольшом наборе пакетов

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

>Оно =sse по дефолту на x86_64
а при сборке 32-х битный либ ака мультилиб?

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

вот-вот
там где это нужно, авторы прог и так запиливают в дефолты - емнип, блендер с -O3 собираецо, что со звуком связанное - не то museseq, не то ardour

megabaks ★★★★
()

>Купил AMD Phenom...

ну и дурак

anonymous
()

CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"

Вполне можно оставить, но если хочешь, можешь собрать хеллоуворлд и выставить --param l1-cache-size= --param l1-cache-line-size= --param l2-cache-size=
А также -msse4.1 и -msse4.2 если есть

CFLAGS="-O2 -march=k8-sse3 --param l2-cache-size=512 -pipe -fomit-frame-pointer -mmmx -msse2 -m3dnow -mfpmath=sse -Wno-deprecated -fno-align-labels -fexcess-precision=fast"

Много лишнего. Твой k8-sse уже содержит -mmmx -mse2 -m3dnow, а -mfpath=sse включено для любой x86_64 по умолчанию. Выдержка из man gсс

           k8, opteron, athlon64, athlon-fx
               AMD K8 core based CPUs with x86-64 instruction set support.  (This supersets MMX, SSE, SSE2, 3DNow!, enhanced 3DNow! and 64-bit instruction set extensions.)

           k8-sse3, opteron-sse3, athlon64-sse3
               Improved versions of k8, opteron and athlon64 with SSE3 instruction set support.

-mfpmath=unit
           Generate floating point arithmetics for selected unit unit.  The choices for unit are:

           sse Use scalar floating point instructions present in the SSE instruction set.  … For the x86-64 compiler, these extensions are enabled by default.
Deleted
()
Ответ на: комментарий от Chaser_Andrey

За что? Ну не собирается человек лазить с дебагером по оперативной памяти, оно не каждому и надо.

Deleted
()

Я в погоне за оптимизацией на x86_64 много чего подобрал. Но в ходе гуглежа и чтения документации выяснил, что одни флаги включает -march=native, другие есть в -O2, а какие-то вообще не следует применять глобально. В итоге осталось только CFLAGS="-march=native -O2 -pipe". Самый оптимальный и практичный вариант :)

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

Смотря что вкладывать в слово «практичный».

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