URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 65874
[ Назад ]

Исходное сообщение
"Релиз набора компиляторов GCC 4.5.0"

Отправлено opennews , 15-Апр-10 11:27 
После года разработки вышел (http://gcc.gnu.org/gcc-4.5/)  релиз набора компиляторов GCC 4.5.0 в котором представлен новый оптимизатор на этапе компоновки, реализована экспериментальная поддержка некоторых возможностей стандарта C++0x, продолжена интеграция наработок проекта Graphite (http://gcc.gnu.org/wiki/Graphite) с реализацией поддержки автоматического распараллеливания операций.

Основные изменения (http://gcc.gnu.org/gcc-4.5/changes.html):


-  
Общие нюансы
:


-  Для сборки GCC теперь требуется математическая библиотека MPC (http://www.multiprecision.org/) (multiprecision library) для более точных вычислений на этапе компиляции;
-  Часть старых архитектур была объявлена устаревшей и будет полностью исключена в версии 4.6.0: IRIX до версии 6.5, Solaris 7, Tru64 Unix до версии 5.1, более подробно читайте об этом с списке рассылки (http://gcc.gnu.org/ml/gcc/2010-01/msg00510.html);
-  Убрана (http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted) поддержка систем, объявлен...

URL: http://gcc.gnu.org/gcc-4.5/
Новость: http://www.opennet.me/opennews/art.shtml?num=26233


Содержание

Сообщения в этом обсуждении
"Релиз набора компиляторов GCC 4.5.0"
Отправлено szh , 15-Апр-10 11:27 
> #  Для x86 архитектур код с плавающей точной, генерируемый согласно ужесточенным требованиям стандарта C99, будет работать гораздо медленней, чем в старых версиях GCC. Для решения этой проблемы используйте ключ компиляции -fexcess-precision=fast;
> # GCC now supports handling floating-point excess precision arising from use of the x87 floating-point unit in a way that conforms to ISO C99. This is enabled with -fexcess-precision=standard and with standards conformance options such as -std=c99, and may be disabled using -fexcess-precision=fast.

по ссылке не написано, где про это можно почитать ?


"Релиз набора компиляторов GCC 4.5.0"
Отправлено Аноним , 15-Апр-10 11:32 
Эх, если бы ещё такие вот "новинки" можно было без клизмы вставить в существующую систему!...

"Релиз набора компиляторов GCC 4.5.0"
Отправлено Serega , 15-Апр-10 11:55 
Используйте source-based дистрибутив и пересобирайте мир :)

"Релиз набора компиляторов GCC 4.5.0"
Отправлено noname , 15-Апр-10 15:20 
>Используйте source-based дистрибутив и пересобирайте мир :)

И обломитесь о тучу ошибок сборки и новых багов в "успешно" собранных программах.


"Релиз набора компиляторов GCC 4.5.0"
Отправлено rfc.1118 , 15-Апр-10 18:19 
вы ошибаетесь. нет, правда.

"Релиз набора компиляторов GCC 4.5.0"
Отправлено User294 , 15-Апр-10 21:06 
Ага, наверное именно поэтому у кучи знакомых юзеров source based вечно какие-то глюки которые больше нигде не увидишь :). В общем каждому свое.

"Релиз набора компиляторов GCC 4.5.0"
Отправлено rfc.1118 , 16-Апр-10 12:24 
>Ага, наверное именно поэтому у кучи знакомых юзеров source based вечно какие-то
>глюки которые больше нигде не увидишь :). В общем каждому свое.

у меня наоборот кстати.
каждому свое, да.



"Релиз набора компиляторов GCC 4.5.0"
Отправлено stranger , 16-Апр-10 14:54 
Я думаю, что тут проблема не в source-based дистрибутивах, а в том, что ими пользуются те, кто любит поэкспериментировать с системой. Вот поэтому и "глючит".

"Релиз набора компиляторов GCC 4.5.0"
Отправлено Adminus , 17-Апр-10 05:21 
Пять лет использую Source based дистрибутивы. Два раза в жизни реально была проблема
со сборкой.

1. Когда в конфиге не отлючил зависимый модуль от уже отключенного.

2. Сборка новой версии неполностью обновленной из репы.

Вообщем оба раза моя ошибка. Что я делаю не так?


"Релиз набора компиляторов GCC 4.5.0"
Отправлено fetisheer , 17-Апр-10 08:56 
Пользуешься стандартным софтом или очень редко обновляешься.
Как пример: tigervnc Available versions:  1.0.0-r2 1.0.0-r4 (~)1.0.1_pre20100306-r1
x11-base/xorg-server Available versions:  [M]1.5.3-r6 1.6.5-r1 1.7.6 ~1.8.0
Притом tigervnc 1.0.0-r4 не работает с xorg 1.7.6. При обновлении же возникла блокировка между mesa и xorg )
Точно тоже самое с xorg и ati-driver.

В общем, у генту чрезвычайно несогласованное сообщество: tigervnc и ati-driver должны были стабилизированы перед стабилизацией xorg-server. Это далеко не первый такой пример, за последний год уже пару раз похожие ситуации встречались.


"Релиз набора компиляторов GCC 4.5.0"
Отправлено sluge , 15-Апр-10 17:01 
ну для gcc это традиия. под новый компайлер надо править свои исходники...
а вот MS, хоть ее и ругают, выпускает компайлеры так что в старых редко что править надо

"Релиз набора компиляторов GCC 4.5.0"
Отправлено Michael Shigorin , 16-Апр-10 00:32 
Там предпочитают выдёргивать из-под ног сразу платформу, как вот с VB произошло.
Ну и компайлеры MS -- немного офтопик как бы. :)

"Релиз набора компиляторов GCC 4.5.0"
Отправлено hatewindows , 15-Апр-10 13:08 
./configure --happy=on
make
sudo make install

"Релиз набора компиляторов GCC 4.5.0"
Отправлено Злой , 15-Апр-10 14:10 
> Для x86 архитектур код с плавающей точкой, генерируемый согласно ужесточенным требованиям стандарта C99, будет работать гораздо медленней, чем в старых версиях GCC. Для решения этой проблемы используйте ключ компиляции -fexcess-precision=fast;

прошу прощения за свою безграмотность - сюда и x86_64 попадает?


"Релиз набора компиляторов GCC 4.5.0"
Отправлено anonymous , 15-Апр-10 14:59 
Да.
Теперь поддерживается более строгая обработка исключений при выполнении команд процессора, работающих с плавающей точкой, а FPU-инструкции (FADD,FMUL,FDIV,FXCH,FCOM,FSQRT etc) в x86-64 такие же, они вроде вообще со времен 387 не менялись - только SIMD-FPU инструкции изменились в x86-64.

"Релиз набора компиляторов GCC 4.5.0"
Отправлено svn , 15-Апр-10 16:25 
>в x86-64 такие же

Бред сивой кобылы. В amd64 все операции с плавающей точкой делаются sse инструкциями.


"Релиз набора компиляторов GCC 4.5.0"
Отправлено anonymous , 17-Апр-10 16:19 
Извини, но бредишь тут ты :)
Мы про SIMD или классические FPU-команды?? SSE понятно что можно использовать. Да и gcc не против, укажи -mfpu=sse и получи sse-код. А вот классические 387 команды в x86-64 РОВНО такие же, как и в x86.

И вообще, вот тебе пример когда на x86-64 классический 387 код уделывает sse-вариант. Да здравствует -mfpu=387 на x86-64 :p :p
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19780#c5
Не, я конечно понимаю - ну лажанулись разработчики. Но два раза есть два раза, не?

ЗЫ капча 54387, что как бы намекает. http://img22.imageshack.us/img22/6713/opennet.png


"Релиз набора компиляторов GCC 4.5.0"
Отправлено sluge , 15-Апр-10 17:04 
вообщето x86 и x86_64 разные архитектуры.
первую обычно обозначают i386 и так далее

"Релиз набора компиляторов GCC 4.5.0"
Отправлено funky_dennis , 15-Апр-10 18:13 
<cite>Улучшен код функций, генерируемый для уровней -O2 и -Os: если встречаются прототипы функции, параметры которых затем нигде не используются то тогда эти параметры не передаются, а аргументы передаваемые по указателю передаются по значению.</cite>

Жесть, я думал такое есть с самого начала...


"Релиз набора компиляторов GCC 4.5.0"
Отправлено gegMOPO4 , 15-Апр-10 18:56 
А почему не упомянули о бинарных плагинах?

"Релиз набора компиляторов GCC 4.5.0"
Отправлено alex789 , 15-Апр-10 23:32 
>> а аргументы передаваемые по указателю передаются по значению.

[с сарказмом]
O_o  да вот ЭТО действительно классно

[серьезно]
или я что-то пропустил и теперь это такой стандарт?


"Релиз набора компиляторов GCC 4.5.0"
Отправлено funky_dennis , 16-Апр-10 07:11 
Это оптимизация, невидимая программисту, и это правильно. Если в теле функции указатель является указателем на базовый тип, и не меняет своего содержимого, то зачем засовывать в стек адрес ячейки? Чтобы потом вытащить со стека адрес, сходить по этому адресу и опять засунуть в стек содержимое? Это быдло-подход, я не понимаю, почему раньше такого не сделали. Можно же сразу засунуть в стек содержимое.

"в оригинале  -'по ссылке', если это играет роль"
Отправлено Вова , 16-Апр-10 17:13 
turn arguments passed by reference to arguments passed by value when possible.

видимо, под "when possible" имеются в виду константные объекты малого размера.


"Релиз набора компиляторов GCC 4.5.0"
Отправлено solardiz , 29-Апр-10 07:56 
Написал тут пошаговую инструкцию по сборке и использованию gcc 4.5.0 под пользователем (без root-доступа), включая сборку и "установку" требуемых им библиотек. В том числе - вариант сборки с Graphite (авто-параллелизация). Далее поигрался с авто-параллелизацией и с поддержкой OpenMP. Все это см. на wiki (ссылка ниже), включая команды шелла, примеры программ, сравнение производительности (для разных сборок примеров программ), встреченные проблемы и некоторые из сделанных выводов:

http://openwall.info/wiki/internal/gcc-local-build


"Релиз набора компиляторов GCC 4.5.0"
Отправлено Вова , 03-Май-10 10:27 
>Написал тут пошаговую инструкцию по сборке и использованию gcc 4.5.0 под пользователем
>(без root-доступа), включая сборку и "установку" требуемых им библиотек. В том
>числе - вариант сборки с Graphite (авто-параллелизация). Далее поигрался с авто-параллелизацией
>и с поддержкой OpenMP. Все это см. на wiki (ссылка ниже),
>включая команды шелла, примеры программ, сравнение производительности (для разных сборок примеров
>программ), встреченные проблемы и некоторые из сделанных выводов:
>
>http://openwall.info/wiki/internal/gcc-local-build

по поводу сравнения производительности, нельзя ли сделать примеры с большим числом итераций (хотя бы на минуту выполнения) и глянуть top, сколько процентов цпу - 200? 400?


"Релиз набора компиляторов GCC 4.5.0"
Отправлено solardiz , 03-Май-10 11:11 
>>http://openwall.info/wiki/internal/gcc-local-build
>
>по поводу сравнения производительности, нельзя ли сделать примеры с большим числом итераций
>(хотя бы на минуту выполнения) и глянуть top, сколько процентов цпу
>- 200? 400?

Более длительные тесты я делал и top смотрел. Там ничего нового - то же соотношение, что мы видим в выдаче time - да и неоткуда взяться другому. Разумеется, все 8 thread'ов работают, т.е. top показывает 100% user, 0% idle в "шапке" (при одном работающем он показывает там 12.5% и 87.5%, соответственно). OMP_WAIT_POLICY=PASSIVE эту картину меняет - появляется idle время, но общее время работы (реальное) увеличивается. time и top показывают примерно одно и то же соотношение и в этом случае.


"Релиз набора компиляторов GCC 4.5.0"
Отправлено Вова , 04-Май-10 07:13 
один трид  = 12.5 %% в топе? Какая версия top, либо - что за окружение?

"Релиз набора компиляторов GCC 4.5.0"
Отправлено solardiz , 04-Май-10 10:25 
>один трид  = 12.5 %% в топе?

Да, в "шапке", в режиме показа общих данных по всем процессорам сразу (в этой системе их 8 логических). В строке с конкретным процессом - 99.9% CPU, причем эта величина не увеличивается если работает более одного thread'а (NPTL).

> Какая версия top,

procps-3.2.5-owl8

> либо - что за окружение?

Процессор Core i7 920 2.67 GHz (с Turbo Boost до трех с чем-то GHz при работе одного thread'а), Hyperthreading включен (ядро видит 8 siblings), дистрибутив Openwall GNU/*/Linux (Owl) свежий -current, сборка под x86_64 (и ядро и userland). Используется OpenVZ, эксперименты проводятся в контейнере с такой же системой (pre-created OpenVZ template за 23-е марта - раздается с наших FTP mirrors).

Некоторые тестовые примеры я собирал статически и переносил бинарники на другие системы, в том числе Dual Xeon X5460 ("настоящие" 8 ядер) и старенький Dual P4 Xeon Nocona (уже 64-бит). Результаты там схожие - такое же замедление "на всю страницу" (а не только на cache line) при записях и т.п.


"Релиз набора компиляторов GCC 4.5.0"
Отправлено solardiz , 03-Май-10 11:16 
> сколько процентов цпу - 200? 400?

В таком виде выдачу можно получить от внешней команды time (не bash builtin). Вот для первого примера с авто-параллелизацией:

$ OMP_WAIT_POLICY=ACTIVE time ./loop
cf5419a0
19.70user 0.00system 0:02.46elapsed 799%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+1162minor)pagefaults 0swaps

$ OMP_WAIT_POLICY=PASSIVE time ./loop
cf5419a0
8.83user 0.20system 0:04.06elapsed 222%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+1157minor)pagefaults 0swaps