LINUX.ORG.RU

GCC 4.6.0

 , ,


0

1

Вышла новая версия GNU Compiler Collection — 4.6.0.

Новшества:

  • улучшения в использовании памяти и скорости компиляции;
  • поддержка языка программирования Go;
  • новый уровень оптимизации -Ofast, который включает в себя все ключи из -O3 и ключи, позволяющие получить ещё более оптимизированный код, например -ffast-math;
  • улучшения в LTO (Link-Time Optimization);
  • улучшения в IPO (межпроцедурная оптимизация);
  • на 32-х битных системах теперь по умолчанию задействован ключ -fomit-frame-pointer (кроме -Os).

Добавлена поддержка следующих процессоров:

  • Intel Core i3/i5/i7 (-march=corei7, -mtune=corei7);
  • Intel Core i3/i5/i7 с новым набором инструкций — AVX (-march=corei7-avx, -mtune=corei7-avx);
  • AMD Bobcat (-march=btver1, -mtune=btver1).

Анонс

>>> Полный список изменений

★★★★

Проверено: hibou ()
Последнее исправление: post-factum (всего исправлений: 7)
Ответ на: комментарий от megabaks

-=:=-

>>-msse -msse2 -msse3 -mssse3 -msse4 -msse4.1 -msse4.2

достаточно -msse4.2


Не согласен. Не скажу ебЫдл точно, но указание всех реально влияло на появление или увеличение инструкций по версии analyse-x86 проги..

лучше -march=native -mtune=generic

хм..сначала натив, потом дженерик..ммм, странно смотритцо..не перекроет ли generic native ?

KosmiK ★★
()
Ответ на: -=:=- от KosmiK

все что после велантинова дня - для сборки пригодно,
все что раньше - ужс )

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

печально - т.е. реально используемы флаги в фасте можно взять только выхлопах гцц?
бяда-бяда
передай им - «megabaks вас ненавидит» :3

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

-=:=-

>все что после велантинова дня
простите мадам, совсем недавно Советские учёные внезапно меня разморозили меня, по ошибке, вместо мамонта....не могли бы Вы линкануть сее событие?

KosmiK ★★
()
Ответ на: -=:=- от KosmiK

>странно смотритцо..не перекроет ли generic native ?
по мнению разрабов гцц , да и практика подтверждает - для щтеуд процов -mtune=generic даёт профит

megabaks ★★★★
() автор топика
Ответ на: -=:=- от KosmiK

-mtune настраивает планировщик инструкций, я бы не ставила туда generic если собираете для себя.
это мета ключевое слово для оптимизации для некоего преобладающего процессора
т.е. задать специфику (core2 , corei7) будет возможно лучше

хотя если сборка идет на неизвестный процессор, то generic для этого и придуман

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

-=:=-

тоесть native не есть Некий эвристический алг., который какбе сам решает, что лучше?

т.е. задать специфику (core2 , corei7) будет возможно лучше

относительно native? тоесть в некоторых случаях (комбинациях флагов):
generic -> native -> core2 (след.флаг лучше преда) ?

KosmiK ★★
()
Ответ на: -=:=- от KosmiK

я достаточно часто собираю снапшоты с тех пор как GCC переходит в фазу исправления ошибок и пробую ими что-нибудь собрать, все что до валентинова дня было достаточно так себе, потом были исправлены глюки с сборкой gawk и glibc, я перевела системный GCC на 4.6 и получила достаточно нормально собирающиеся и работающие пакеты, включая и Qt, KDE, xorg-server и даже такую капризулину как mysql-workbench

с чем проблемы -

пока не могу собрать firefox 3.6.x
не собрался сегодняшний хромиум 10
в mplayer свистит звук в некоторых роликах

заранее предупреждаю -O3 и -Ofast - напрашиваться на неприятности, хотя тем кому реально делать нечего - тестируйте, отписывайтесь об ошибках в багзиллы пожалуйста.



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

generic это мета процессор, будет использовано то, что лучше для абстрактного процессора, а с учетом того что core2 это Conroe, ConroeL, Penryn, [ Nehalem, Westmere ]
хотя последние 2 все же вместе с Sandybridge ушли в corei7 , т.е. ряд неоднородный, то возможно для кого-то generic будет и лучше, тесты бенчмарков в руки и вперед, если это столь принципиально, только лучше при этом учесть что успех с одним пакетом, не означает успеха с другим... поэтому выводы а ля вороникс однозначно делать не нужно.

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

-=:=-

>в mplayer свистит звук в некоторых роликах

опа..Таааак..хмм..у меня при регулировании громкости на определённых позициях есть высокочастотный свист, который..мммм..еще сильнее, если основной звук содержит высокие частоты..под виндой вроде нету...а вот под туксом...хмм

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

>разрабы гцц с тобой не согласны :)
пруфлинк

и да - айда в джа

сейчас не могу, у меня на десктопе его нет, на ноуте тоже редко включаю теперь.

Sylvia ★★★★★
()
Ответ на: -=:=- от KosmiK

у меня вместо звука стоит мерзкий свист, чаще в .flv-шках , с .mp3 кодированием звука
или в .mp3

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

>пруфлинк
блин - тока для тебя - ща найду (постараюсь)

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

Она в ~x86. Мне просто впадлу ставить... каждая новая версия gcc типа как быстрее. Зато и баги там есть.

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

Просто я уже один раз сталкивался с фигнёй, когда не всё работало как надо.

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

я конечно не стану спорить с H.J.Lu , который еще и инженер Интела )

1. -march=native is changed in gcc 4.5.
2. Your cpu is Core.
3. -mtune=generic generates the fastest code for Core.
4. Prescott and Core have the same instruction set.
model name : Genuine Intel(R) CPU T2300 @ 1.66GHz

/usr/libexec/gcc/i686-pc-linux-gnu/4.4.3/cc1 -quiet - -D_FORTIFY_SOURCE=2
-march=prescott --param l1-cache-size=32 --param l1-cache-line-size=64 --param
l2-cache-size=2048 -mtune=generic

речь шла о GCC 4.4.3 , который при использовании -march=native на процессоре T2300 , который ни в каком месте не является Core2, это Pentium (Dual) Core ( -march=nocona ) предлагает не -mtune=prescott или -mtune=nocona , а generic

и не стоит это воспринимать в ином контексте, у меня на Celeron M тоже выдает -mtune=generic с автоопределением native, на это нужно смотреть на каждом процессоре конкретно, у меня на Core2 Penryn выдает -mtune=core2 и иначе и быть просто не может )никаких абстрактных generic'ов

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

нда, знакомые все лица, кстати, Pacho Ramos - тот самый гентушный майнтейнер что занимается вместе с Тимом Саммутом обновлениями безопасности, в частности не забываем ему пангу и либКсеМэЭль )

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

так что забудь про «больше уровень - больше оптимизаций»!

Главное что этот уровень есть. И он очень заметен, по сравнению с бинарными дистрибутивами. А оптимизации много не бывает.

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

заранее предупреждаю -O3 и -Ofast - напрашиваться на неприятности, хотя тем кому реально делать нечего - тестируйте, отписывайтесь об ошибках в багзиллы пожалуйста.

Просто нужно использовать стабильное и никаких неприятностей. По крайней мере я пока их не видел.

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

стабильное оно потому и стабильное, что на грабли уже наступили энтузиасты, откопали их и обезвредили, если все будут использовать стабильное, то оно будет совсем не стабильным )

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

стабильное оно потому и стабильное, что на грабли уже наступили энтузиасты, откопали их и обезвредили, если все будут использовать стабильное, то оно будет совсем не стабильным )

Ну, энтузиасты мне тогда уже нравятся. Но сам все-равно буду лучше сидеть на быстром стабильном, чем на медленном нестабильном).

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

А вот хрен. Я однажды собрал gcc с USE=-fortran, так у меня не смогла собраться какая-то научная библиотека, которая была нужна для каких-то там пакетов или плагинов для работы с графикой.

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

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

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

krab@notebook cmake $ gcc --version gcc (Pardus Linux) 4.5.2

согласен, вино я тоже собирал месяц назад какое-то там свежее.

bhfq ★★★★★
()

cflags = -mtune=generic -march=x86-64 -O2 -pipe -fomit-frame-pointer -fstack-protector -D_FORTIFY_SOURCE=2 -ggdb3 -funwind-tables -fasynchronous-unwind-tables

cxxflags = -mtune=generic -march=x86-64 -O2 -pipe -fomit-frame-pointer -fstack-protector -D_FORTIFY_SOURCE=2 -ggdb3 -funwind-tables -fasynchronous-unwind-tables

в ноутбуке core i3 350M, что мне на что менять в опциях?

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

>Научная библиотека не имеет прямого отношения к десктопному софту

Она в зависимостях десктопного софта, я ж сказал.

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

>А оптимизации много не бывает.
ты бы в профиль глянул для начала, прежде чем мне это писать :3
и да - даже просто -O3 даёт регресс на многих пакетах

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

и да - даже просто -O3 даёт регресс на многих пакетах

Можно пару конкретных примеров? Просто хочу проверить, может и правда зря на О3 сижу.

LightDiver ★★★★★
()
       -Ofast
           Disregard strict standards compliance.  -Ofast enables all -O3
           optimizations.  It also enables optimizations that are not valid
           for all standard compliant programs.  It turns on -ffast-math.

проверяем

desktop megabaks # echo "int main() { return 0; }" |LANG=en gcc -march=native -O3 -v -Q -x c - 2>&1 | cut -d":" -f1 | grep "^ -"| tr " " "\n" | sort | uniq >> O3
desktop megabaks # echo "int main() { return 0; }" |LANG=en gcc -march=native -Ofast -v -Q -x c - 2>&1 | cut -d":" -f1 | grep "^ -"| tr " " "\n" | sort | uniq  >> fast
desktop megabaks # diff -Nau0 O3 fast 
--- O3	2011-03-19 11:57:43.000000000 +0000
+++ fast	2011-03-19 11:54:49.000000000 +0000
@@ -1,0 +2 @@
+-fasynchronous-unwind-tables
@@ -10,0 +12 @@
+-fcx-limited-range
@@ -17,0 +20 @@
+-ffinite-math-only
@@ -43 +45,0 @@
--fmath-errno
@@ -55,0 +58 @@
+-freciprocal-math
@@ -71 +73,0 @@
--fsigned-zeros
@@ -79 +80,0 @@
--ftrapping-math
@@ -111,0 +113 @@
+-funsafe-math-optimizations
@@ -131 +132,0 @@
--mieee-fp
@@ -143 +144 @@
--O3
+-Ofast
desktop megabaks # gcc-config -l
 [1] i686-pc-linux-gnu-4.4.3-pre9999
 [2] i686-pc-linux-gnu-4.4.5
 [3] i686-pc-linux-gnu-4.5.0-pre9999
 [4] i686-pc-linux-gnu-4.5.2
 [5] i686-pc-linux-gnu-4.6.0-pre9999 *
desktop megabaks # grep math O3
-fmath-errno
-ftrapping-math
-mfancy-math-387
desktop megabaks # grep math fast
-ffinite-math-only
-freciprocal-math
-funsafe-math-optimizations
-mfancy-math-387
desktop megabaks #
       -ffast-math
           Sets -fno-math-errno, -funsafe-math-optimizations,
           -ffinite-math-only, -fno-rounding-math, -fno-signaling-nans and
           -fcx-limited-range.
чего-то я не догоняю...
-ffast-math как то наполовину только включается

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

а хз - ща гляну

     Fri Mar 18 22:58:30 2011 >>> sys-devel/gcc-4.6.0_pre9999
       merge time: 31 minutes and 54 seconds.

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

емнип тот же гзип

Linux localhost 2.6.37-gentoo #1 SMP Mon Jan 10 07:34:04 VLAT 2011 x86_64 Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz GenuineIntel GNU/Linux

Gentoo Base System release 1.12.14

Проверил сейчас гзипом жать файл 1,5гб размером.

Первое: О2

19:42:00 начало / 19:45:25 конец

Второе: О3

19:50:00 начало / 19:52:20 конец

Если это регрессия, то я всеми тремя руками за нее (Владивосток).

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

что за начало-конец?
man time
это первое
второе: где происходил тест? надеюсь tmpfs?
сколько циклов теста было? хотя бы 3?
перед каждым циклом был ли сброс кэшей?
кароче - кури матчасть, потом приходи с выкриками

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

Попытка номер два. Нет не в тмп, зачем мне сферические кони в вакууме? Екст3. Выбирал как самого тормоза.

diver@localhost:/var/www/localhost/htdocs/disk/hidden$ time gzip -9 Inception.2010.BDRip_s.x264.RG.tru.mkv 

real 2m6.750s
user 1m3.560s
sys 0m4.660s
diver@localhost:/var/www/localhost/htdocs/disk/hidden$ 
diver@localhost:/var/www/localhost/htdocs/disk/hidden$ time gzip -9 Inception.2010.BDRip_s.x264.RG.tru.mkv 

real 3m16.243s
user 1m2.490s
sys 0m4.820s
diver@localhost:/var/www/localhost/htdocs/disk/hidden$  

Догадаетесь что где? Третью попытку делать?

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

> зачем мне сферические кони в вакууме?
ты чего то не догоняешь
вечером если время будет - сделаю тесты
впрочем может и не гзип

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks
diver@localhost:~$ gzip --version
gzip 1.4
Copyright (C) 2007 Free Software Foundation, Inc.
Copyright (C) 1993 Jean-loup Gailly.
This is free software.  You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.

Written by Jean-loup Gailly.
diver@localhost:~$ 

Кстати спасибо. Теперь хоть будет что в «конкретные примеры» приводить. Мне даже понравилось. Нужно что-нибудь еще попробовать. Как бы фф проверить?

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

> впрочем может и не гзип

я пару лет назад тестировал bzip2 (x86_32) на файле размером 4Gb, и -Os было быстрее, чем -O[23]

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

пусть с костылями и проклятьями, кучей патчей для новых приложений...

Какие «костыли» и «проклятья» для новых приложений? О чём ты?

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

Статистика по портам

(GCC 4.3 в большинстве GNU-специфичных программах объявлен «deprecated» и вместо него советуют брать GCC 4.4+.)

Итак, GNU-специфичные программы, которым зачем-то нужен не системный GCC 4.2.1:

> grep "4.4+" -r /usr/ports/
/usr/ports/lang/sdcc-devel/Makefile:USE_GCC=	4.4+
/usr/ports/audio/py-tagpy/Makefile:USE_GCC=	4.4+
/usr/ports/games/battletanks/Makefile:USE_GCC=	4.4+
/usr/ports/games/stratagus/Makefile:USE_GCC=	4.4+
/usr/ports/games/freeorion/Makefile:USE_GCC=	4.4+
/usr/ports/deskutils/notify-osd/Makefile:USE_GCC=	4.4+
/usr/ports/science/peekabot/Makefile:USE_GCC=	4.4+
/usr/ports/science/harminv/Makefile:USE_GCC=	4.4+
/usr/ports/science/avogadro/Makefile:USE_GCC=	4.4+
/usr/ports/science/gnudatalanguage/Makefile:USE_GCC=	4.4+
/usr/ports/science/meep/Makefile:USE_GCC=	4.4+
/usr/ports/emulators/bsnes/Makefile:USE_GCC=	4.4+
/usr/ports/emulators/mess/Makefile:USE_GCC=	4.4+
/usr/ports/cad/jspice3/files/patch-src+lib+dev+ltra+ltramisc.c:-        double ans1 = 1.0+y*(3.5156229+y*(3.0899424+y*(1.2067492
/usr/ports/cad/jspice3/files/patch-src+lib+dev+ltra+ltramisc.c:+        ans1 = 1.0+y*(3.5156229+y*(3.0899424+y*(1.2067492
/usr/ports/cad/calculix/Makefile:USE_GCC=	4.4+
/usr/ports/multimedia/x264-devel/Makefile:		GCC44 "Use gcc 4.4+" Off \
/usr/ports/multimedia/x264-devel/Makefile:USE_GCC?=	4.4+
/usr/ports/multimedia/x264/Makefile:		GCC44 "Use gcc 4.4+ (implies WITH_ASM)" Off \
/usr/ports/multimedia/x264/Makefile:USE_GCC?=	4.4+
/usr/ports/misc/libmetalink/Makefile:USE_GCC=	4.4+
/usr/ports/x11-toolkits/gigi/Makefile:USE_GCC=	4.4+
/usr/ports/CHANGES:    is transparently rewritten to USE_GCC=4.4+ and lang/gcc43 will be
/usr/ports/graphics/enblend/Makefile:# Gerald Pfeifer <gerald@pfeifer.com> asked to use 4.4+ instead of 4.3+
/usr/ports/graphics/enblend/Makefile:USE_GCC=	4.4+
/usr/ports/graphics/opencv/Makefile:USE_GCC=	4.4+
/usr/ports/devel/msgpack/Makefile:USE_GCC=	4.4+
/usr/ports/archivers/rvm/Makefile:USE_GCC=	4.4+
— не знаю, как у вас, а у меня кодек x264 (пакет x264-0.110.1820) собран системным GCC 4.2.1.
> grep "4.5+" -r /usr/ports/
/usr/ports/deskutils/cairo-dock-plugins/Makefile:USE_GCC=	4.5+
/usr/ports/emulators/linux_base-fc4/pkg-plist:usr/share/terminfo/a/att4415+nl
/usr/ports/emulators/linux_base-f8/pkg-plist:usr/share/terminfo/a/att4415+nl
/usr/ports/emulators/linux_dist-gentoo-stage3/pkg-plist.i686:%%PREFIX_SUBDIR%%usr/share/terminfo/a/att4415+nl
/usr/ports/emulators/linux_dist-gentoo-stage3/pkg-plist.i486:%%PREFIX_SUBDIR%%usr/share/terminfo/a/att4415+nl
/usr/ports/emulators/linux_base-f7/pkg-plist:usr/share/terminfo/a/att4415+nl
/usr/ports/emulators/linux_base-fc6/pkg-plist:usr/share/terminfo/a/att4415+nl
/usr/ports/emulators/linux_base-f9/pkg-plist:usr/share/terminfo/a/att4415+nl
/usr/ports/print/pdftk/Makefile:USE_GCC=	4.5+
/usr/ports/graphics/visionworkbench/Makefile:USE_GCC=	4.5+
/usr/ports/graphics/lightspark-devel/Makefile:USE_GCC=	4.5+
/usr/ports/graphics/mahotas/Makefile:USE_GCC=	4.5+
Совсем свежачок:
> grep "4.6+" -r /usr/ports/
/usr/ports/multimedia/ogle/files/extra-patch-include:ogle_endian.h:+#  define I486_CPU     /* Will crash unless 486+ */
/usr/ports/misc/zoneinfo/files/patchremove-rs: RO	+4426+02606	Europe/Bucharest
/usr/ports/misc/zoneinfo/files/patchremove-bl: BN	+0456+11455	Asia/Brunei
— последний выхлоп, понятно, никак не относится к GCC 4.6.

И, да, портированных на FreeBSD программ — 22786 — это больше, чем в любом репозитории GNU/Linux.

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

Самое интересное и самое несмешное, то, что, так и есть.

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