The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Увидел свет набор компиляторов GCC 5.1"
Отправлено opennews, 22-Апр-15 18:26 
После года разработки увидел свет (https://gcc.gnu.org/) релиз свободного набора компиляторов GCC 5.1 (https://gcc.gnu.org/gcc-5/), первый значительный выпуск в новой ветке GCC 5.x.  Новый выпуск примечателен возможностью работы в роли JIT-компилятора, интеграцией системы оптимизации AutoFDO, поддержкой OpenMP 4.0 и OpenACC 2.0 для offloading-вычислений, применением по умолчанию стандарта GNU11 (C11), поддержкой интерфейса параллельного программирования Cilk Plus, полной поддержкой стандарта C++11 и  экспериментальной поддержкой C++14.


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

-  Для языка Си вместо gnu89 (-std=gnu89) по умолчанию активирован режим gnu11 (-std=gnu11) на базе стандарта C11.
-  В runtime-библиотеке C++ (libstdc++) обеспечена (https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/ma... полная поддержка стандарта C++11, а также экспериментальная поддержка стандарта  C++14 и спецификаций Library Fundamentals TS (http://en.cppreference.com/w/cpp/experimental). Задействован по умолчанию новый ABI, а также новые реализации std::string и std::list. Возможность использования старого ABI сохранена, для этого нужно установить в 0 макрос _GLIBCXX_USE_CXX11_ABI перед включением в заголовочного файла;
-  Генератор кода может быть собран в виде разделяемой библиотеки libgccjit (https://gcc.gnu.org/wiki/JIT) и затем встроен в другие процессы и использован для организации JIT-компиляции байткода в машинный код. Кроме предоставляемого библиотекой C API и обёртки для  C++, подготовлены биндинги для языков Python и D. В качестве возможных областей применения отмечается использование libgccjit в интерпретаторах для компиляции функций из байткода в машинный код или для организации упреждающей компиляции (ahead-of-time);

-  Многочисленные улучшения (http://hubicka.blogspot.ru/2015/04/GCC5-IPA-LTO-news.html) оптимизатора. В том числе добавлен новый режим оптимизации на основе обратной связи -  AutoFDO (https://gcc.gnu.org/wiki/AutoFDO) (Automatic Feedback Directed Optimizer), который использует счетчики производительности (performance counters) ядра Linux в качестве источника информации о производительности различных частей программы.


Сокращено потребление памяти и время связывания при включении оптимизаций во время динамического связывания (LTO, Link Time Optimization). В реализацию межпроцедурных оптимизаций добавлен новый проход ICF (Identical Code Folding), нацеленный на более качественное объединение идентичных блоков кода.

-  В компиляторах C, C++ и Fortran реализованы средства OpenMP 4.0 (Open Multi-Processing) для ускорения вычислений за счёт выноса операций (offloading (https://gcc.gnu.org/wiki/Offloading))  на специализированные процессоры. Готовая runtime-библиотека и эмулятор представлены для акселераторов Intel Xeon Phi (Intel MIC). Для выноса операций на GPU представлена предварительная реализация спецификации OpenACC 2.0a (https://gcc.gnu.org/wiki/OpenACC);

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


-  Возможность включения заголовочных файлов, только если они присутствуют в системе.  Для проверки наличия заголовочного файла представлены директивы препроцессора __has_include и __has_include_next;
-  Поддержка развиваемого компанией Google языка программирования Go  обновлена до версии 1.4.2;

-  Добавлена поддержка векторных инструкций AVX-512 (http://en.wikipedia.org/wiki/AVX-512), которые появятся в будущих выпусках процессоров Intel на базе новой микроархитектуры Skylake;


-  Добавлена поддержка процессоров ARM Cortex-A72, Cavium ThunderX и Applied Micro X-Gene 1. Улучшена генерация кода для 64-разрядной архитектуры ARM (AArch64) с учётом специфики процессоров Cortex-A57 и Cortex-A53.

-  Поддержка архитектуры MIPS третьего, пятого и шестого поколения, в том числе процессоров Cavium Octeon 3 и Imagination P5600;


URL: https://gcc.gnu.org/
Новость: http://www.opennet.ru/opennews/art.shtml?num=42087

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру