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 ()

Ответ на: комментарий от 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

разрабы гцц с тобой не согласны :)
и да - айда в джа

megabaks ★★★★ ()
Ответ на: комментарий от 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 ★★★★★ ()
Ответ на: комментарий от megabaks

Фортран важен и нужен. Десктопного софта на нем впрочем нету, это ок.

tensai_cirno ★★★★★ ()
Ответ на: комментарий от 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 ★★★★★ ()
Ответ на: комментарий от babusha

А половина от оставшихся - не работает вообще =).

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

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

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