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

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

Отправлено opennews , 22-Апр-14 20:37 
После 13 месяцев разработки увидел свет (http://gcc.gnu.org/ml/gcc/2014-04/msg00195.html) релиз свободного набора компиляторов GCC 4.9 (http://gcc.gnu.org/gcc-4.9/). Новый выпуск примечателен реализацией поддержки OpenMP 4.0 и Cilk Plus, улучшением поддержки стандартов C++11 и C++14, режимом подсветки предупреждений и ошибок при выводе на экран, включением в состав детектора неопределенного поведения программы.


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

-  Реализована поддержка спецификации OpenMP 4.0 (http://www.opennet.me/opennews/art.shtml?num=37635) (Open Multi-Processing), определяющей API и способы применения методов параллельного программирования для языков Си, Си++ и Фортран (в GCC OpenMP 4.0 пока доступен только для Си и Си++ ). В OpenMP 4.0 обеспечена поддержка ускорения за счет привлечения мощностей GPU, представлены значительные улучшения в модели выполнения задач, добавлены механизмы обработки ошибок, добавлена поддержка определенных пользователем редукций, обеспечена векторизация циклов с использованием инструкции SIMD,  добавлен ряд расширений для поддержки параллельного выполнения на уровне задач;

-  Частично реализована поддержка набора расширений Cilk Plus (hhttps://www.cilkplus.org/), предлагающего новую эффективную методику параллельного программирования для языков Си и Си++, позволяющую существенно упростить разработку программ, части которых выполняются параллельно с задействованием разных процессорных ядер и векторных сопроцессоров (Vector Units). Для управления генерацией кода с улучшенной векторизацией предусмотрена pragma simd. Поддерживается два метода увеличения производительности - параллелизм данных и параллельное выполнение подпрограмм. В первом случае, обеспечиваются механизмы прозрачного распараллеливания типовых операций над массивами данных и автоматическое задействование SIMD-инструкций. Для организации параллелизма на уровне подпрограмм в обиход вводится три ключевых слова: _Cilk_spawn - запуск функции в параллельном режиме, _Cilk_sync - ожидание завершения параллельно выполняемой функции, и _Cilk_for - организация работы цикла в параллельном режиме. "_Cilk_for" в GCC пока не поддерживается.


-  Для языков C и C++ добавлен компонент UBSAN (Undefined Behavior Sanitizer) с реализацией детектора неопределенного поведения, выявляющего во время выполнения программы ситуации, когда поведение программы становится неопределенным из-за ошибки программиста. Для включения UBSAN следует использовать опцию "-fsanitize=undefined";

-   Улучшена работа оптимизаций во время динамического связывания (LTO, Link Time Optimization) и межпроцедурных оптимизаций, в которых устранена серия негативно сказывающихся на масштабируемости узких мест. Улучшена техника оптимизации на основе обратной связи (Feedback directed);

-  Распределитель локальных регистров (Local Register Allocator), ранее доступный только для  ia32 и x86-64, теперь адаптирован и включен по умолчанию для целевых архитектур Aarch64, ARM, S/390 и ARC, а также реализован в качестве опции для платформ PowerPC и RX;


-  Существенно расширена поддержка архитектуры ARM, внесены оптимизации для процессоров Cortex-A53 и Cortex-A57;

-  Поддержка новой  little-endian платформы powerpc64le-linux для которой предлагается новый PowerPC ELFV2 ABI;


-  В компоненте Address Sanitizer обеспечена поддержка архитектуры ARM в дополнение к ранее поддерживаемым архитектурам x86 и x86_64. Address Sanitizer позволяет выявлять ошибки работы с памятью и факты некорректного обращения к памяти, такие как обращение к областям памяти, после их освобождения ("use-after-free"), разрушение кучи, повреждение стека и переполнение буферов;
-  Прекращена поддержка устаревшего runtime-детектора  утечек памяти mudflap;


-  Добавлена поддержка некоторых новшеств, развиваемых в рамках будущего стандарта C++14. Внесена серия улучшений, связанная с поддержкой стандартов C11 и C++11, например, в стандартную библиотеку С++ добавлена поддержка компонента "regex";


-  Улучшена поддержка языка ADA. GNAT переведён на использование по умолчанию стандарта ADA 2012, вместо ADA 2005;

-  В компиляторе для языка Fortran улучшена поддержка спецификации Fortran 2008 и добавлена поддержка Fortran 2003 finalization;
-  Обеспечена поддержка развиваемого компанией Google языка программирования Go 1.2.1;


-  Реализована поддержка  чипов Intel Silvermont, процессоров IBM Power8 и процессоров RX100, RX200 и RX600;
-  Для процессоров Intel добавлена поддержка инструкций AVX-512, которая может использоваться для целевых архитектур x86-64 и ia32;

-  Возможность  подсветки текста выводимых ошибок и предупреждений ("-fdiagnostics-color=auto");

-  Объявлена (http://gcc.gnu.org/ml/gcc-patches/2013-05/msg00728.html) устаревшей поддержка платформы Solaris 9 (*-*-solaris2.9), код для которой будет удалён в выпуске GCC 4.10. Компания Oracle прекратила стандартную поддержку Solaris 9 в 2011 году, расширенная платная поддержка завершится в октябре 2014 года.

URL: http://gcc.gnu.org/ml/gcc/2014-04/msg00195.html
Новость: http://www.opennet.me/opennews/art.shtml?num=39621


Содержание

Сообщения в этом обсуждении
"Релиз набора компиляторов GCC 4.9"
Отправлено MSlinux , 22-Апр-14 20:37 
Теперь мы будем ждать новой версии Cygwin

"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 25-Апр-14 15:20 
> Теперь мы будем ждать новой версии Cygwin

Чувак, не мучай себя, переходи на пингвины :). Это я тебе как бывший юзер цыгвина и msys говорю. Если уж хочется могущество гнутого инструментария и *никсовых утилей - виндой при этом пользоваться столь же удобно, сколь удобно бежать стометровку в ластах и противогазе.


"Релиз набора компиляторов GCC 4.9"
Отправлено Константин , 22-Апр-14 20:44 
отличнейшая новость для тех кто любит все усорять без большого геммороя > Реализована поддержка спецификации OpenMP 4.0

"Релиз набора компиляторов GCC 4.9"
Отправлено ананим , 22-Апр-14 20:54 
> усорять

Хорошо сказал.
И главное правда.


"Релиз набора компиляторов GCC 4.9"
Отправлено metallica , 22-Апр-14 23:27 
>> усорять
> Хорошо сказал.
> И главное правда.

Из всех способов размножения потоков, самый практичный, удобный и даже элегантный-это API из omp.
Другие API, начиная от clone и заканчивая всякими boost::context, в сравнении с omp, кучи мусора просто.



"Релиз набора компиляторов GCC 4.9"
Отправлено ананим , 23-Апр-14 00:41 
> Другие API, начиная от clone

Ложь. И это мягко говоря.
Вообще-то сикол называется clone2 (Через него тотже форк реализован например).
И он настолько гибок, что в граничных условиях от потока ядра практически не отличается.
Первое.
Второе. По поводу "усорять" — не разделяю эйфорию из-за того, что теперь каждый юзерспейсный быдлoкод (чуть ли не на js) способен зaсрaть все 8 процов на все 100% каждый.
Не, отрубим конечно, но задолбали.

[сообщение отредактировано модератором]


"Релиз набора компиляторов GCC 4.9"
Отправлено Crazy Alex , 23-Апр-14 02:34 
Насчет "засрать" поддерживаю, но omp таки удобно там, где нужно просто наплодить потоки, что-то посчитать и успокоиться. Руками для этого потоки ляпать - это искать себе проблемы там, где их можно избежать - так как получите больший объем вашего кода и, соответственно, больше шансов поймать баг. а в многопоточке их ловить - то ещё удовольствие, особенно на сях.

"Релиз набора компиляторов GCC 4.9"
Отправлено arisu , 24-Апр-14 12:35 
> Насчет "засрать" поддерживаю, но omp таки удобно там, где нужно просто наплодить
> потоки, что-то посчитать и успокоиться.

(внимательно осматривая снова) что-то мне std.parallelism из D больше нравится.


"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 23-Апр-14 06:31 
Прописывать лимиты на процесс снова внезапно в цене? :)
Дык это - скорее хорошо чем плохо.

"Релиз набора компиляторов GCC 4.9"
Отправлено metallica , 23-Апр-14 11:27 
>> Другие API, начиная от clone
> Пинздёж. И это мягко говоря.
> Вообще-то сикол называется clone2 (Через него тотже форк реализован например).
> И он настолько гибок, что в граничных условиях от потока ядра практически
> не отличается.

Как ещё изящнее могу запустить пару потоков, чем так?

#pragma omp parallel num_threads(2)
{

prl();

  }


"Релиз набора компиляторов GCC 4.9"
Отправлено анонимище , 23-Апр-14 11:59 
> Как ещё изящнее могу запустить пару потоков, чем так?

std::thread(prl).detach();
std::thread(prl).detach();


"Релиз набора компиляторов GCC 4.9"
Отправлено metallica , 23-Апр-14 12:42 
>> Как ещё изящнее могу запустить пару потоков, чем так?
> std::thread(prl).detach();
> std::thread(prl).detach();

Ничего изящного. А если 30 потоков? И чтоб без циклов.


"Релиз набора компиляторов GCC 4.9"
Отправлено анонимище , 23-Апр-14 12:57 
> Ничего изящного. А если 30 потоков? И чтоб без циклов.

Что за дурные ограничения, парниша. Я так же могу:
А сделай с OMP что пользователь вводит сколько потоков запускать, но omp_set_num_threads не использовать!


"Релиз набора компиляторов GCC 4.9"
Отправлено pavlinux , 23-Апр-14 14:33 
#pragma omp parallel for
for (i=0, i < 20; i++)
     pthread_create(thread[i], ......);

"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 24-Апр-14 11:24 
Создавать несколько потоков только для того, чтобы каждый из них породил по ещё одному потоку — это ппц...

"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 25-Апр-14 08:10 
Чаво?

"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 25-Апр-14 14:34 
> Создавать несколько потоков только для того, чтобы каждый из них породил по
> ещё одному потоку — это ппц...

Вы там что, форкбомбу оптимизируете под мнеогоядерность? :)


"Релиз набора компиляторов GCC 4.9"
Отправлено Вук , 22-Апр-14 21:20 
А вы из тех, кто любит удалять всё "лишнее" из рабочей системы? Гг

"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 22-Апр-14 21:15 
Ждем-с чем ответит Цланг, хо-хо-хо!

"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 23-Апр-14 04:43 
Что значит догонять? Во-первых, он никогда не был отстающим, он шёл и идёт параллельным курсом, и, надо сказать, это gcc сильно свернуло в его сторону, иначе так бы и сидело с нечитабельными варнингами и дубовой архитектурой в которой нельзя разобраться. А то что он отстаёт по каким-то фичам - так gcc отстаёт по другим.

"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 22-Апр-14 21:27 
Никто не знает, как работает UBSAN? И что за неопределённое поведение?

"Релиз набора компиляторов GCC 4.9"
Отправлено _ , 22-Апр-14 21:55 
http://stackoverflow.com/questions/20738232/gcc-4-9-undefine...

"Релиз набора компиляторов GCC 4.9"
Отправлено Vkni , 22-Апр-14 21:55 
> Никто не знает, как работает UBSAN? И что за неопределённое поведение?

Как работает - не знаем. Что такое UB - вот:
http://www.viva64.com/ru/t/0066/


"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 25-Апр-14 15:23 
Жаль что вам не объяснили что пиарить проприетарный win-only продукт при рассказе о тривиальной вещи, которая описана в вике - некультурно, а за данный маневр на ресурсе по открытым технологиям - двукратный бонус к вашей наглости.

"Релиз набора компиляторов GCC 4.9"
Отправлено Vkni , 30-Апр-14 06:13 
> Жаль что вам не объяснили что пиарить проприетарный win-only продукт при рассказе
> о тривиальной вещи, которая описана в вике - некультурно,

Некультурно делать в слове из 4-х букв одну ошибку. :-)

> а за данный маневр на ресурсе по открытым технологиям - двукратный бонус к
> вашей наглости.

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


"Релиз набора компиляторов GCC 4.9"
Отправлено Crazy Alex , 23-Апр-14 02:37 
Если вы не знаете, что такое неопределенное поведение - для начала надо хотя бы одну хорошую книгу по сям или плюсам прочесть. Потому что это понятие будет в ЛЮБОМ хоть сколько-нибудь приличном учебнике. И если вы его не знаете - значит либо учились по чему-то совсем печальному либо читали крайне невнимательно.

"Релиз набора компиляторов GCC 4.9"
Отправлено pavlinux , 23-Апр-14 14:48 
> И что за неопределённое поведение?

Это когда ничего не делаешь, а оно делается и при это ошибки не возникает.
И при этом думаешь, почему оно что-то сделало, и ничего не произошло, ведь
я что-то не делал, а оно сделало, но не должно было так как я сделал, чтоб
ничего не делало.    О_о


"Релиз набора компиляторов GCC 4.9"
Отправлено arisu , 24-Апр-14 12:37 
> Никто не знает, как работает UBSAN? И что за неопределённое поведение?

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


"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 22-Апр-14 22:18 
К сожалению, не попало: "Кроме этого, в состав GCC 4.9 имеют шанс попасть библиотеки для поддержки JIT-компиляции средствами GCC".
И где же движение в сторону http://www.opennet.me/opennews/art.shtml?num=33396 ?

"Релиз набора компиляторов GCC 4.9"
Отправлено arisu , 24-Апр-14 12:39 
> К сожалению, не попало

к счастью. надеюсь, эту фиготень тихонько закопают. если не уже.


"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 22-Апр-14 22:42 
>> Прекращена поддержка устаревшего runtime-детектора утечек памяти mudflap; Подскажите, что сейчас вместо mudflap?

"Релиз набора компиляторов GCC 4.9"
Отправлено cdome , 22-Апр-14 23:04 
-fsanitize=address

"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 25-Апр-14 15:14 
> Подскажите, что сейчас вместо mudflap?

Valgrind.


"Релиз набора компиляторов GCC 4.9"
Отправлено kachsheev , 22-Апр-14 23:54 
Интересно, когда-нибудь из thread уберут макрос проверки версии языка/компилятора?

"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 23-Апр-14 15:36 
Используйте llvm'ский libc++ вместо убогого libstdc++

"Релиз набора компиляторов GCC 4.9"
Отправлено kachsheev , 23-Апр-14 16:33 
Желаю Вам успешно скомпилировать Linux клэнгом.

"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 23-Апр-14 17:23 
FreeBSD скомпилировали. Над Linux усиленно работают. Если чере пару минорных релизов - РАЗ! и соберут - что будешь делать?

"Релиз набора компиляторов GCC 4.9"
Отправлено kachsheev , 23-Апр-14 17:48 
Похлопаю, порадуюсь и продолжу использовать OpenMP с gcc.

"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 24-Апр-14 03:13 
Все соснули http://clang-omp.github.io/

"Релиз набора компиляторов GCC 4.9"
Отправлено kachsheev , 24-Апр-14 22:08 
Хлопаю, радуюсь... и прохожу мимо.

"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 25-Апр-14 15:18 
> РАЗ! и соберут

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

>  - что будешь делать?

Что делал слон, когда пришел Наполеон? :)


"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 23-Апр-14 00:29 
А std::function всё так же память выделяет на каждый чих, млять, вместо того, чтобы внутренний буфер использовать. Опять из boost это тащить :(

"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 23-Апр-14 15:37 
> А std::function всё так же память выделяет на каждый чих, млять, вместо
> того, чтобы внутренний буфер использовать. Опять из boost это тащить :(

Используйте llvm'ский libc++ вместо убогого libstdc++


"Релиз набора компиляторов GCC 4.9"
Отправлено arisu , 24-Апр-14 12:40 
> Используйте llvm'ский libc++ вместо убогого libstdc++

у llvm появился libc++? откуда? зачем? O_O


"Релиз набора компиляторов GCC 4.9"
Отправлено Andrey Mitrofanov , 24-Апр-14 12:47 
>> Используйте llvm'ский libc++ вместо убогого libstdc++
> у llvm появился libc++? откуда?

""libstd++ was moved to a port and libc++ was imported"" http://wiki.freebsd.org/GPLinBase

> зачем? O_O

Надо! http://www.freebsd.org/doc/en/articles/bsdl-gpl/article.html Фатальный недостаток: аппле от gplv3 пучит.

---Just removing it from base will meet opposition.


"Релиз набора компиляторов GCC 4.9"
Отправлено arisu , 24-Апр-14 12:49 
я спрашиваю, откуда оно в llvm и зачем оно там. в clang++ — это я бы ещё понял, но в llvm-то нафига?!

"Релиз набора компиляторов GCC 4.9"
Отправлено Аноним , 23-Апр-14 07:43 
вау. сколько ВСЕГО полезного и Нужного !! =)
из оффтопа:
скоро Эскаватор и Пауэр8 ?
даже Броадвелл полноразмерный - вроде нескоро-ж ?