LINUX.ORG.RU

Знакомимся с GCC 4

 ,


0

0

GCC не стоит на месте. Выходят новые процессорные архитектуры, исследуются и реализуются более эффективные способы генерации и оптимизации кода, что делает GCC все более мощным. Закономерный результат - появление четвертой версии, положившей начало новой ветке. Данная статья рассказывает об основополагающих новшествах GCC 4 и доказывает, что настало время перейти на новую версию, если вы еще этого не сделали.

>>> Подробности

★★★

Проверено: svu ()

> Ну и ну! Вам уже кажется, что я обожаю GCC больше, чем свою жену? Скажем так, если она входит в комнату, когда я программирую с GCC, мне становится чуток не по себе.

Нормальная статья. Зачот.

ip1981 ☆☆
()

хоть я и не программер, но статейка классная

twosev ★★
()

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

Интересно. Это может быть очень полезно

kranky ★★★★★
()

IBM - вызывает уважение.
Спасибо работникам фирмы за отличные грамотные статьи, как на Русском так и на Английском языках.

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

> Свежая статья. Актуальная.

сарказм? а зря, так как во-первых многие все еще не перешли на четвертую ветку (некоторые и не собираются), а во-вторых в статье упоминаются изменения вплоть до 4.3.2, которая вышла 27/08/2008.

val-amart ★★★★★
()

Только прочитал заголовок новости и сразу понял, кто её запостил и куда ведёт ссылка.. :)

AX ★★★★★
()

Не одного плохого отзыва. День доброты на ЛОРе?

xorik ★★★★★
()

хз, стоит ли. У нас народ пробовал, результаты работы
рассчетных програмок начинают отличаться от предыдущих :)))

ivon
()

Статья малосодержательная - GCC 4 существует уже давно, кого этим удивишь. А вот отличия последних версий описаны мало. Например:

>Уже начата работа над версией 4.4, которая скоро станет основной >веткой. В ней будет исправлено множество дефектов и улучшен >оптимизатор. Реализована спецификация OpenMP 3.0 для языков C, C++ и >Fortran.

Что за странное утверждение. Поддержка OpenMP 3.0 уже есть в GCC 4.3.2 (а начиная с GCC 4.3.1 некоторые библиотечные функции имеют внутреннее распараллеливание, наверно посредством OpenMP, хотя я не смотрел. Но я ведь не пишу статью).

Partisan ★★★★
()

GCC 4.2.x рулит, 4.3.x создаёт раздутый и медленный код - проверено на десятке разных приложений.

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

> Узнал про OpenMP. Интересно, насколько это работоспособно?

Очень работоспособно. Простейший цикл параллелится почти полностью (в моём тесте 14 секунд на двух ядрах против 27 при компиляции без параметра -fopenmp)

Const
()

Начиная с версии GCC-4.3.0, собранная им тестовая система начинала выдавать произвольные зависания и плодить зомби-процессы.

Причём это происходило и после выхода 4.3.1, и даже при сборке системы в chroot на стабильной системе, полностью собранной gcc-4.2.

Код был заменто больше весом, чем у 4.2-ветки, что-то было быстрее, что-то медленнее.

Вывод: нахер.

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

SSA-оптимизация - как все сложно-то
меня это наводит на мысль , что корень проблем с оптимизацией надо искать в железе

kto_tama ★★★★★
()

> Улучшена поддержка языка Fortran 2003,

а стандарт Fortran 2000 до сих пор поддерживается не полностью. ВОзможно, не полностью поддерживается и F95.

Вообще, gfortran штука не для слабонервных.

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

> Спасибо работникам фирмы за отличные грамотные статьи, как на Русском так и на Английском языках.

В статьях на русском грамотность соответствует цитируемому посту. :(

Вообще, IBMовские материалы -- это бич переводчиков: управление проектами должным образом не ведётся, словарей нет, руководств по стилю тоже, а памяти переводов никогда не чистятся. Попало в память "интеллектуальный" для intelligent -- и пошло гулять по ИТ, хотя должно быть "рациональный".

А так как переводов по IBM много и памяти переводов большие, некоторые халтурщики с целью выуживания частичных совпадений для ускорения работы подключают IBMовские памяти при работе над проектами других фирм. Сана, например, или новелла. Получается сущая беда.

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

>> рассчетных програмок начинают отличаться от предыдущих :)))

Floating point? Например из-за погрешности очень часто ((a + b) + c) != (a + (b + c)). Так что чтобы получился разный результат достаточно просто переставить местами две операции. Видимо компилятор оптимизировал вычисления немного другим путём и всё.

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

>> Свежая статья. Актуальная.

> сарказм? а зря, так как во-первых многие все еще не перешли на четвертую ветку (некоторые и не собираются), а во-вторых в статье упоминаются изменения вплоть до 4.3.2, которая вышла 27/08/2008.

Ну у меня такая же мысль была. Только я по ссылке прошел, а кто-то нет.

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

> Поддержка OpenMP 3.0 уже есть в GCC 4.3.2

В gcc 4.3.2 OpenMP 3.0 не поддерживается. А в 4.4 - поддерживается. Вы легко можете это проверить простой программой, использующей, к примеру, #pragma openmp task.

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

> хз, стоит ли. У нас народ пробовал, результаты работы рассчетных програмок начинают отличаться от предыдущих :)))

Погрешность от этого в какую сторону меняется? Увеличивается или уменьшается?

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

>> Узнал про OpenMP. Интересно, насколько это работоспособно?

> Очень работоспособно. Простейший цикл параллелится почти полностью (в моём тесте 14 секунд на двух ядрах против 27 при компиляции без параметра -fopenmp)

На реальном проекте или на каком-то тестовом коде?

skwish ★★
()

Интересно.. Правда я еще и ICC использую.

devl547 ★★★★★
()
Ответ на: комментарий от val-amart

> сарказм? а зря, так как во-первых многие все еще не перешли на четвертую ветку (некоторые и не собираются),

Прекрасно понимаю. Мы вот тоже собираемся через годик-два, как стабилизируется, переехать с Debian Potato на Woody.

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

В реальных проектах OpenMP очень хорошо работает при расчете течений на неструктурированных сетках, к примеру.

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

Краткое резюме: "ну ваще круто". Короче,ни о чём статья, фактически.

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

> GCC 4.2.x рулит, 4.3.x создаёт раздутый и медленный код - проверено на десятке разных приложений.

Хе, как вы тесты проводили. У нас в игровых приложениях ухудшения не чувствуется.

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

2 Orlusha:

>В статьях на русском грамотность соответствует цитируемому посту. :(

И где вы там нашли безграмотность? Нормальная такая статья.

>Попало в память "интеллектуальный" для intelligent -- и пошло гулять по ИТ,

Куда пошло гулять? По какому ИТ? Согласен, везде бывают неудачные переводы, но причем здесь IBM.

>словарей нет, руководств по стилю тоже

Какие могут быть руководства, если статьи пишут совершенно разные люди, у каждого свой стиль.

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

Знакомимся с IBM_DW.

>Только прочитал заголовок новости и сразу понял, кто её запостил и куда ведёт ссылка.

Аналогично.

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

> Хе, как вы тесты проводили. У нас в игровых приложениях ухудшения не чувствуется.

Помнишь чем системный программист отличается от прикладника презренного? Щас окажется, что ты ещё студент, потом - что геймер, а в игрушки те только играл, а в итоге - что вообще о GCC только слышал, что им тетрис собирают.

Короч, в Ларри гамать - не ядро компилить.

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

> Floating point? Например из-за погрешности очень часто ((a + b) + c) != (a + (b + c)).

Кхм... А разве для семейства float типов корректно сравнение на равенство? Я бы ещё понял >, <, abs(a-b)<=eps.

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

>> Кхм... А разве для семейства float типов корректно сравнение на равенство? Я бы ещё понял >, <, abs(a-b)<=eps.

Сравнение корректно, но практически бессмысленно из-за погрешности вычислений. О чём я и говорю: ((a + b) + c) и (a + (b + c)) скорее всего дадут разный результат.

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

> хз, стоит ли. У нас народ пробовал, результаты работы
> рассчетных програмок начинают отличаться от предыдущих :)))


Собираете проект с помощью GCC 3, рез-т 20 попугаев.
А собираете проект с помощью GCC 4, рез-т 33 попугая?

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

> Помнишь чем системный программист отличается от прикладника презренного?

Чем по вашему?

> Щас окажется, что ты ещё студент, потом - что геймер, а в игрушки те только играл, а в итоге - что вообще о GCC только слышал, что им тетрис собирают.


Ваш бред прорвал последнюю оборону и вылился наружу?

> Короч, в Ларри гамать - не ядро компилить.


Ну вам виднее.

andreyu ★★★★★
()

Огромный респект и уважуха бимерам и лично господину ИБэМе-диДаби за очень ценную и полезную статью.

Если бы не он, то я так бы и не узнал, что в моем маке в XCode Tool'зах используется gcc и даже четвертой версии.

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

> Помнишь чем системный программист отличается от прикладника презренного?

Таки отличается беспредельно зашкаливающим уровнем ЧСВ и обострением ФГМ при медитации над очередным е-билдом. :)))

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

А когда это было? Я Ларри после 1997 вообще не видел.

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