Что нового в IBM XL Fortran for AIX and Linux версии 14.1

Источник: IBM

Введение

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

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

Усовершенствования, реализованные в версии 14.1, повышают продуктивность разработчиков и производительность приложений.

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

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

XL Fortran V14.1 начинает многоэтапную реализацию новейшего стандарта языка Fortran - ISO/IEC 1539-1:2010, также известного как Fortran 2008. В данной версии поддерживаются следующие функциональные возможности:

  • Конструкция BLOCK для определения исполняемого блока, который может содержать объявления. Она обеспечивает гибкость объявления переменных в блоке для определенного фрагмента кода (вместо объявления их в спецификационной части) и облегчает обслуживание исходного кода.
  • Атрибут CONTIGUOUS для указания объектов массивов, хранящихся в непрерывной памяти. Встроенная (intrinsic) функция IS_CONTIGUOUS сообщает, находится переменная в непрерывной памяти или нет. Эта функциональность предоставляет компилятору ценную информацию для оптимизации кода, что приводит к повышению производительности программы.
  • Спецификатор NEWUNIT= в выражении OPEN, который указывает библиотеке времени исполнения Fortran подключиться к неиспользуемому модулю. Такое улучшение удобства использования помогает избежать случайных изменений в подключенных в данный момент модулях.
  • Обозначение (designator) комплексной части, которое позволяет напрямую обращаться к действительной или мнимой части комплексного типа. Данная функциональность обеспечивает гибкость использования комплексного типа, позволяя модифицировать действительную или мнимую часть индивидуально без вызова встроенных функций. Это упрощает код, работающий с комплексными числами.
  • Встроенная функция EXECUTE_COMMAND_LINE, которая выполняет командную строку в программе. Это дает переносимый и стандартизованный способ выполнения команд в Fortran-программах.
  • Выражение ERROR STOP для аварийного завершения, поскольку выражение STOP используется для нормального завершения. Эта возможность позволяет отличить нормальное завершение программы от аварийного и позволяет эффективно выявлять ситуации, когда следует обратить внимание на завершение программы.
  • Дополнительные математические встроенные функции, включая ERF, ERC, ERFC_SCALED, POPCNT, POPPAR, HYPOT, GAMMA, LOG_GAMMA, LEADZ и TRAILZ. Это позволяет использовать в программах дополнительные математические функции и повышает переносимость кода при использовании стандартных встроенных функций.

Улучшения параллельного программирования

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

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

Улучшения диагностических отчетов

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

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

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

XL Fortran V14.1 ускоряет компиляцию, особенно больших приложений, содержащих язык массивов Fortran и Fortran-модули. Кроме того, улучшено использование машинных ресурсов за счет уменьшения объема памяти, необходимой компилятору, например для анализа указателей и вычисления псевдонимов. Компилятор и оптимизатор используют расширенные возможности адресации 64-разрядного процесса, позволяя оптимизировать значительно более крупные программы.

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

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

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

Параметр -qhaltonmsg останавливает компиляцию до формирования каких-либо объектных файлов, исполняемых файлов или исходных файлов на языке ассемблера при генерировании указанного сообщения об ошибке. Параметр -qmaxerr ограничивает число сообщений об ошибках, генерируемых компилятором. Эти два параметра позволяют управлять поведением компилятора при обнаружении ошибок в исходном коде. Использование этих параметров помогает более эффективно идентифицировать ошибки.

Параметр -qinitalloc указывает компилятору инициализировать переменные, определенные в выражении ALLOCATE. Данная функциональность повышает производительность, поскольку ее можно использовать для диагностирования в программах любых неинициализированных переменных. Кроме того, это удобный способ инициализации размещаемых (allocatable) переменных.

Директива ALIGN позволяет выполнить специальное выравнивание переменных. Эта информация применяется при оптимизации программы с целью более эффективного использования параметров процессора.

Расширенная директива ASSERT теперь позволяет предоставить больше информации о максимальном или минимальном числе итераций данного цикла DO. Эта функциональность позволяет компилятору более эффективно планировать и оптимизировать цикл.

Для включения всех функциональных возможностей Fortran 2008, поддерживаемых XL Fortran, добавлены подпараметры 2008std и 2008pure параметра -qlanglvl.

Заключение

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


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=31046