LINUX.ORG.RU

[опрос][гентушнегам][2та-чей-ник-нельзя-называть?]флаги оптимизации gcc

 


0

0

какие вы, товарищи используете флаги сборки?

и вот ещё

valdos-desk fat-troll # cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 15
model : 47
model name : AMD Athlon(tm) 64 Processor 3800+
stepping : 2
cpu MHz : 2411.161
cache size : 512 KB
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow up rep_good pni lahf_lm
bogomips : 4822.32
TLB size : 1024 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp tm stc

valdos-desk fat-troll #


какие флаги оптимизации полезны на данном процессоре, а какие вредны?

интересует реальный опыт, а не «понаслышке» на таком и подобных процессорах

★★★★★

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

ЗЫ. Верхнаяя часть моего текущего make.conf

CFLAGS="-Os --pipe -fomit-frame-pointer -msse2 -mfpmath=sse,387 "
CXXFLAGS=«${CFLAGS}»
FFLAGS=«${CFLAGS}»
LDFLAGS="-Wl,-O1,--hash-style=gnu,--sort-common,--as-needed"
CHOST=«x86_64-pc-linux-gnu»

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

Уважаемые участники Talks, помните, что этот раздел предназначен для нетехнических разговоров о Linux. Поэтому, пожалуйста, задавайте технические вопросы в соответствующих разделах форума, а новости добавляйте в ленту на главной странице.

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

>Я таким процессором перхоть вычесываю :-)

могу выслать ведро пеньков 3х, а ты мне пару таких атлонов.

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

[code]

georg@darkcitadel:~$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Pentium(R) 4 CPU 2.40GHz
stepping : 1
cpu MHz : 2393.997
cache size : 1024 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe constant_tsc up pebs bts pni dtes64 monitor ds_cpl cid xtpr
bogomips : 4787.99
clflush size : 64
power management:

[/code]

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

CFLAGS="-march=native -O3 -mmmx -msse -msse2 -msse3 -m3dnow -ftree-vectorize -mfpmath=sse -pipe"
CXXFLAGS=«${CFLAGS}»
LDFLAGS="-Wl,-O1"


processor : 1
vendor_id : AuthenticAMD
cpu family : 17
model : 3
model name : AMD Turion(tm) X2 Ultra Dual-Core Mobile ZM-82
stepping : 1
cpu MHz : 2200.000
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow constant_tsc rep_good nonstop_tsc extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch osvw skinit
bogomips : 4389.33
TLB size : 1024 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate

LebedevRI
()

-march=native или -march=athlon64(если native не поддерживается). Рисковаться с -msse3 и -O3 не рекомендую. Не входящие в -O2 оптимизации работы с памятью лучше не трогать.

Первого флага и -O2 тебе должно хватить. Выиграть пару процентов в повседневной работе в ущерб стабильности - большая глупость. Процессорожрущие приложения обычно всякими флагами не проймёшь. Лучше памяти докупи.

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

>Верхнаяя часть моего текущего make.conf

-Os

производительность может в отдельных приложениях серьезно пострадать, а памяти реально не сэкономите, -Os хороша если памяти совсем мало ( ~256M ) или для малоактивных системных процессов
лучше заменить на -O2

-pipe

опять таки если в системе мало памяти -pipe , особенно для CXXFLAGS лучше не использовать , т.к. нагружает память при компиляции, если используется tmpfs для /tmp , тоже лучше не использовать, для CFLAGS - сойдет

-msse2 -mfpmath=sse,387

да, но хорошо бы еще добавить -march= (можно -march=native)
хотя для CHOST=«x86_64-pc-linux-gnu» лучше это вообще не указывать )

-fomit-frame-pointer

для CHOST=«x86_64-pc-linux-gnu» включен в -O2

вообщем получается что
CXXFLAGS="-O2 -march=native -msahf -m3dnow"
CFLAGS=«${CXXFLAGS} -pipe»



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

>Рисковаться с -msse3 и -O3 не рекомендую

с О3 соглашусь, производительности не особенно добавляет, а вот памяти и места на диске кушать будет более аппетитно

-msse3 как раз стоит указать, если поддерживается ( в cpu flags есть «pni» )

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

Процессор погиб от статического электричества ?

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

>избыточно,задается только старший sse

То есть если я задам -msse4.1 , то он будет включать в себя все предыдущие?)

таких процессоров нет )

Почему же? Я как-то видел на одном из форумов именно такой вариант флагов. Должны задействоваться 3dnow регистры в моем core2 , что приведет к увеличению производительности некоторых приложений.

PS:
Пользуясь случаем хочу поздравить тебя с наступающим новым годом и пожелать тебе исполнения всех твоих желаний :)

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

>задам -msse4.1 , то он будет включать в себя все предыдущие

именно


3dnow регистры в моем core2


на башорк, в процессорах Intel нет 3DNow! ;) Только в AMD

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia
processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Pentium(R) Dual  CPU  E2220  @ 2.40GHz
stepping        : 13
cpu MHz         : 2399.692
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 1
cpu cores       : 2
apicid          : 1
initial apicid  : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm
bogomips        : 4799.66
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

Что из безопасных (и возможно не очень) флагов можно включить? сейчас только march=native стоит

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

http://en.gentoo-wiki.com/wiki/Safe_Cflags#Processor_Specific_CFLAGS

вот серьезно, лучше ничего такого сверхъестественного не сочинять

мое:

/tmp :$cat /etc/make.conf
CHOST=«i686-pc-linux-gnu»
NOCOLOR=«true»
CC=fgcc
CXX=fg++
CXXFLAGS="-O2 -fomit-frame-pointer -g0 -mfpmath=sse,387 -msse2 -march=pentium4"
CFLAGS=«${CXXFLAGS} -pipe»
MAKEOPTS="-j3"
http_proxy="http://evy:3125"
ftp_proxy="http://evy:3125"
GENTOO_MIRRORS="ftp://mirror.yandex.ru/gentoo-distfiles/"
#GENTOO_MIRRORS="ftp://ftp.wh2.tu-dresden.de/pub/mirrors/gentoo"
SYNC=«rsync://rsync.gentoo.org/gentoo-portage»
VIDEO_CARDS=«nvidia»
INPUT_DEVICES=«evdev keyboard mouse joystick lirc»
LIRC_DEVICES=«all irlink irman irreal it87 ite8709 mouseremote mouseremote_ps2 parallel saa1100 serial sir tekram tekram_bt829 uirt2 uirt2_raw atiusb audio audio_alsa avermedia avermedia98 avermedia_vdomate»
LINGUAS=«ru en»
ACCEPT_KEYWORDS=«~x86»
PORTAGE_NICENESS=8
PORTDIR_OVERLAY=«/usr/local/portage»

USE=«X nvidia vdpau aac a52 alsa bluetooth bzip2 cairo \
cdda cddb cdparanoia cdr cups dri dvd dvdr exif expat \
ffmpeg firefox fontconfig ftp gif gmp gnutls gstreamer \
gtk gzip hal -debug -doc -demos -examples hddtemp \
joystick jpeg jpeg2k kde kdeenablefinal lame lirc \
lm_sensors lzo mmap mmx mng -mono -motif mp3 mp4 \
mpeg mplayer musepack musicbrainz mysql ncurses \
-networkmanager nptl ogg png policykit qt4 qt3support \
readline rss sasl scanner slang smp sndfile speex sox \
sqlite3 sse sse2 ssl taglib tcpd theora threads \
truetype unicode usb v4l2 vorbis wavpack wifi \
win32codecs x264 xv zlib sql svg consolekit dbus \
encode -avahi -semantic-desktop lzma cleartype \
-berkdb -python3 opengl mmxext opencore-amr acpi \
-fortran -cracklib -mudflap»

source /usr/local/portage/layman/make.conf

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

Спасибо за советы , учусь тонкому троллингу =)

CFLAGS="-O2 -march=core2 -msse4.1 -mfpmath=sse,387 -fomit-frame-pointer -pipe"
CXXFLAGS=«${CFLAGS}»
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST=«i686-pc-linux-gnu»
MAKEOPTS="-j3"
LINGUAS=«ru»
ACCEPT_KEYWORDS=«~x86»
ACCEPT_LICENSE=«PUEL»
VIDEO_CARDS=«nvidia»
INPUT_DEVICES=«keyboard mouse»
NOCOLOR=«true»
GENTOO_MIRRORS="ftp://gentoo-mirror.spb.ru/"

USE="-ipv6 -acpi -hal -3dnow -3dnowext -python -perl -fortran -berkdb -crypt -gtk -gnome -qt-static -xine -bluetooth
-semantic-desktop -ldap -mudflap -mng -mysql bootstrap gnutls X xcomposite nvidia fontconfig mmx sse sse2 ssse3
jpeg2k ffmpeg lame theora threads djvu matroska cdda cddb unicode mysql web cups"

С приобретением принтера включил cups

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

вот серьезно, лучше ничего такого сверхъестественного не сочинять

Да я помню досочинялся с ffast-math, что все проги рандомно падали

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

-ffast-math тут скорее всего непричем, это просто быстрый, но менее точный обсчет матеметики с некоторым отходом от стандартов

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

я не к тому что он вредный флажок, а просто к тому что общесистемно не стоит использовать экстремальных и экспериментальных флагов, лучше задать те самые безопасные флаги из gentoo-wiki , для i686 к ним еще можно добавить -mfpmath=sse,387 -msseN (N - максимальная версия sse), и -fomit-frame-pointer если не планируется отладка всего и вся
для x86_64: -msahf (в флагах процессора должно быть lahf_lm), -fomit-frame-pointer входит в -O2 тут, -mfpmath=sse задан по умолчанию, так как на 64 битах всегда есть как минимум -msse2

-msse3 - если в флагах процессора есть pni , а то многие смотрят и не находят sse3 , считают что его нет, он просто назван иначе
ну и остальные sse смотрите в флагах какие можно задать,

-msse4.1 для core2 penryn, -msse4 задается только для nehalem (i7), где оно полностью реализовано sse4.1 (38 векторных примитивов) + sse4.2 (8 строковых операций)

для амд стоит посмотреть -msse4a (амд реализация, отличающаяся от intel)

а экстрим устраивать для отдельных приложений, -fast-math хорош для кодеков например

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

а экстрим устраивать для отдельных приложений, -fast-math хорош для кодеков например

В Генте с этим флагом mesa собирается, что в общем то и понятно

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

LIRC_DEVICES=«all irlink irman irreal it87 ite8709 mouseremote mouseremote_ps2 parallel saa1100 serial sir tekram tekram_bt829 uirt2 uirt2_raw atiusb audio audio_alsa avermedia avermedia98 avermedia_vdomate»

У Вас тонна пультов или это ТВ-тюнер столько всего требует?!

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

если честно, я просто его (пульт) еще не настраивала и что там у меня точно не знаю, выкинула то , что явно не подойдет, если все таки настрою - выкину лишнее )

ps: avermedia studio 305
input: saa7134 IR (AverMedia AverTV St as /devices/pci0000:00/0000:00:0a.0/0000:01:06.0/input/input7

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

Я конечно пульты для ТВ-тюнеров ни разу не настраивал, но думаю тут достаточно будет включить только все относящиеся к АверМедии. Потом грузите по одному модулю и проверяете.

Наверняка после этого вы сможете увидеть работу пульта с помощью утилиты

mode2 -d /dev/устройство
и записать свой конфиг /etc/lircd.conf.

Я долгое время сидел на простейшей самодельной схемке, драйвер к которой serial, а потом когда купил пульт от мелкосовт мучился между драйвером mceusb и mceusb2, оказалось второе.

yaba ★★★
()

заголовки

А нельзя-ли в такие изысканные заголовки вставлять иногда пробелы?

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

пора уже в LOR wiki чего-нить написать, а то подобная тема раз в 2 недели возникает. А то по http://en.gentoo-wiki.com/wiki/Safe_Cflags#Processor_Specific_CFLAGS, http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/i386-and-x86-64-Options.html, и т.п. бывает долго искать. Тем более есть стандартные подводные камни тиак ftree-vectorize.

P.S. раз уж такая пьянка, то что тут поправить можно?

cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 15
model name	: Intel(R) Pentium(R) Dual  CPU  T3200  @ 2.00GHz
stepping	: 13
cpu MHz		: 2000.000
cache size	: 1024 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 10
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm
bogomips	: 3990.07
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management:

processor	: 1
...

CFLAGS="-O2 -march=native -mtune=native -mssse3 -mfpmath=sse,387 -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

MAKEOPTS="-j3"
qnikst ★★★★★
()
Ответ на: комментарий от qnikst

можно так и оставить )

хотя -march=что-то и -mtune=что-то вместе можно не писать ) достаточно только -march=что-то

-mtune ставится если оно отличается от -march
например -march=i486 -mtune=i686 (набор инструкций для i486 , планировщик для i686)

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