Навигация
Главная »  Xml 

Что нового в IBM XL C/C++ for AIX and Linux версии 12.1


Источник: IBM
Введение

XL C/C++ - это компилятор языка программирования общего назначения для платформ IBM AIX и Linux, ориентированный на поставщиков инструментальных средств и разработчиков корпоративных бизнес-приложений, создающих и развертывающих приложения на IBM Power Systems. Усовершенствования, реализованные в версии 12.1, повышают продуктивность разработчиков и производительность приложений. XL C/C++ предлагает следующие преимущества:

  • Простота миграции приложений благодаря полному соответствию новейшим международным стандартам на язык программирования.
  • Упрощение параллельного программирования благодаря полной поддержке спецификации OpenMP V3.1 API.
  • Более быстрая компиляция, особенно больших приложений.
  • Упрощение программирования благодаря новым параметрам, директивам и функциям.
Усовершенствования, реализованные в версии 12.1, повышают продуктивность разработчиков и производительность приложений.

В статье описываются новые возможности и усовершенствования в XL C/C++ for AIX и XL C/C++ for Linux версии 12.1. Статья не ставит своей целью охватить все новые возможности и функции, а также не пытается подробно рассмотреть все темы. В ней вы познакомитесь с некоторыми из новых возможностей XL C / C + + V12.1, начиная с усовершенствований поддержки стандартов языка и заканчивая параллельным программированием, оптимизированным для отладки кодом и производительностью.

Улучшения поддержки стандартов языка

В XL C/C++ V12.1 продолжается разработка и реализация особенностей новейшего стандарта языка С++ - ISO / IEC 14882:2011, также известного как C++11.

  • Можно использовать операторы явного преобразования для запрета неявных преобразований там, где они могут возникать непредвиденно, что позволяет программировать более надежные классы с меньшим количеством ошибок неоднозначности.br/>
  • Обобщенные константные выражения, расширяющие допустимые константные выражения, могут вычисляться во время компиляции, а не во время выполнения, что обеспечивает выигрыш в производительности.
  • Возможность свертывания ссылок позволяет сформировать ссылку на ссылочный тип с помощью спецификатора decltype, имени typedef или параметра типа шаблона. Это облегчает программирование обобщенных классов и написание шаблонов.
  • Ссылки rvalue позволяют повторно использовать ресурсы устаревших объектов. Так можно повысить производительность ваших библиотек, особенно если вы используете обобщенный код с типами классов, например, структуры шаблонных данных. Кроме того, при написании перенаправляющей функции можно учитывать категорию значения.
  • Функциональность перечислений с ограниченной областью видимости (scoped enumeration) предоставляет возможность объявлять перечислительные типы с ограниченной областью видимости, перечисления без нумераторов (enumerator), типы перечислений и улучшенную безопасность типов (type safety). Данная функциональность улучшает процесс создания библиотек и безопасность, обеспечивая повышенную безопасность типов. Она также улучшает время компиляции и создает меньше зависимостей благодаря введению объявлений forward для перечислений.
  • Функциональность замыкающего типа возврата (trailing return type) полезна при объявлении шаблонов функций или функций-членов шаблонов классов с типом возврата, зависящим от типов аргументов функции, функций или функций-членов классов с составными типами возврата и функций perfect forwarding. Эта функциональность повышает ясность при написании сложных типов возвратов функций, приводящих к запутанности кода.
  • Для разрешения большинства из функциональных возможностей C++ и всех поддерживаемых в настоящее время в XL C/C++ V12.1 функциональных возможностей C++11 можно использовать параметр -qlanglvl=extended0x.
XL C/C++ V12.1 начинает также многоэтапную реализацию новейшего стандарта языка C - ISO/IEC 9899:2011, также известного как C11. Для поддержки в данной версии были выбраны следующие функциональные возможности C11:

  • Анонимные структуры (anonymous structure) позволяют всем членам анонимной структуры вести себя как члены родительской структуры, что облегчает группирование и вложение.
  • Инициализация комплексных типов поддерживает значения бесконечности (infinite) или NaN в мнимой части. Это обеспечивает переносимый способ инициализации комплексных типов диапазоном значений.
  • Спецификатор функции _Noreturn позволяет создавать более производительный код путем документирования того факта, что функции не будут возвращать управление вызывающей стороне.
  • Можно объявлять статические утверждения (static assertion) для контроля важных инвариантов программы. Это позволяет библиотекам обнаруживать и диагностировать распространенные ошибки во время компиляции.
  • Для разрешения функциональных возможностей C11 в XL C/C++ V12.1 можно использовать параметр -qlanglvl=extc1x.
Улучшения параллельного программирования

OpenMP API - это переносимая, масштабируемая модель программирования, предлагающая программистам простой, гибкий стандартный интерфейс для разработки параллельных приложений для разных платформ, от настольных систем до суперкомпьютеров. XL C/C++ V12.1 полностью поддерживает OpenMP V3.1, включая следующие возможности:

  • Завершающие (final) и совмещаемые (mergeable) задания могут обеспечить дальнейшие возможности оптимизации в сценариях сокращения размера вычислений.
  • Конструкция taskyield предоставляет пользователям полный контроль над переключением потока с одного задания на другое.
  • Улучшение управления привязкой к потоку посредством переменной окружения OMP_PROC_BIND позволяет пользоваться особенностями машинной архитектуры.
  • Более точное управление количеством потоков, используемых при вложенном параллелизме, посредством переменной среды OMP_NUM_THREADS позволяет выразить количество потоков, используемых в группе.
  • Расширение атомарной конструкции (чтение, запись, фиксация) включает больше типов атомарных операций для улучшения синхронизации параллельного кода.
Улучшения диагностических отчетов

Диагностические отчеты помогают идентифицировать возможности улучшения производительности кода. Данная версия предусматривает следующие усовершенствования в отчетах:

  • В отчетах компилятора выделяются те оптимизации, которые компилятор смог выполнить, а также те оптимизации, которые ранее отсутствовали, но теперь стали возможны (в форматах как HTML, так и XML). Отчеты компилятора в HTML-формате готовы для отображения. Эти отчеты предоставляют информацию, которая помогает облегчить программирование при оптимизации приложений.
  • В файл листинга были добавлены новые разделы, которые помогают анализировать программу, включая релевантные, отсутствующие и устаревшие данные профилирования.
  • Улучшена вспомогательная программа showpdf для отображения данных о промахах кэша и ценной информации профилирования. Эта информация помогает программистам идентифицировать возможные узкие места производительности и способствует повышению эффективности приложений.
Улучшения масштабируемости и производительности во время компиляции

XL C/C++ версии 12.1 обеспечивает более быструю компиляцию, особенно для больших приложений. Кроме того, улучшено использование машинных ресурсов за счет уменьшения объема памяти, необходимой компилятору, например для анализа указателей и вычисления псевдонимов. Заголовочные файлы, использующиеся в приложениях несколько раз, кэшируются в компиляторе для общего ускорения обработки при компиляции. Компилятор и оптимизатор используют расширенные возможности адресации 64-разрядного процесса, позволяя оптимизировать значительно более крупные программы.

Улучшения удобства использования

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

В данной версии программа с несколькими потоками может использовать новые встроенные в XL C/C++ V12.1 функции для автоматической и безопасной модификации данных в одном потоке без вмешательства другого потока. Такое поведение соответствует поведению набора компиляторов GNU Compiler Collection (GCC).

Добавлен и улучшен ряд параметров компиляции. Например, расширен параметр -g для улучшения отладки оптимизированных программ. Это улучшение позволяет выбирать между агрессивностью некоторых оптимизаций и точностью отладочной информации, генерируемой в исполняемой программе. Такой подход позволяет компилятору предоставлять отладочную информацию без излишних потерь в производительности. Теперь можно выполнять отладку оптимизированных приложений.

Параметр -qhaltonmsg останавливает компиляцию до формирования каких-либо объектных файлов, исполняемых файлов или исходных файлов на языке ассемблера при генерировании указанного сообщения об ошибке. Параметр -qinfo=all разрешает все диагностические сообщения для всех групп, за исключением als и ppt. В параметр -qlanglvl добавлено много подпараметров для поддержки новых стандартов языка, реализованных в данной версии.

Для улучшения циклических итераций была добавлена группа новых директив pragma. Директивы pragma iterations, max_iterations и min_iterations позволяют предоставить подсказки компилятору, касающиеся числа итераций, которые будет выполнять цикл. Эта информация может повысить скорость работы программы.

Заключение

В данной статье освещены некоторые из наиболее заметных улучшений, представленных в XL C/C++ версии 12.1. Эта новая версия включает в себя новые возможности, улучшающие производительность и облегчающие разработку приложений.



 

 Критическая уязвимость в сервисе SAP Dispatcher доступна через интернет.
 Корпорация QAD и производственные предприятия.
 Обзор инструментов инженерии онтологий.
 Новая версия Oracle Business Intelligence Suite EE 10g Release 3.
 Рекомендации по выбору генератора отчетов Crystal Reports XI (11).


Главная »  Xml 

© 2021 Team.Furia.Ru.
Частичное копирование материалов разрешено.