Nvidia Предлагает Новый Интерфейс Fortran Для LLVM


Nvidia предлагает свой первый вариант переписывания интерфейса Fortran для LLVM, f18, становится проектом LLVM.

F18-это интерфейс для Fortran. Он предназначен для замены существующего интерфейса в компиляторе Flang. Flang-это компилятор Fortran, ориентированный на LLVM, который был разработан Nvidia совместно с Национальным управлением ядерной безопасности Министерства энергетики США.

LLVM (Низкоуровневая виртуальная машина) – это инфраструктура компилятора, состоящая из набора библиотек и инструментов для оптимизации компиляторов и генераторов кода точно в срок. Несмотря на название, LLVM-это скорее промежуточный язык, который может быть нацелен компилятором, а затем переведен в различные фактические машинные коды. Самый известный компилятор LLVM-это Clang для C/C++/Objective C. 

Nvidia разработала интерфейс Fortran с открытым исходным кодом для LLVM, который состоит из интерфейса flang и соответствующей библиотеки времени выполнения Fortran. Существующий код интерфейса в основном написан на C, и разработчики из Nvidia говорят, что, хотя это качественная реализация, она не соответствует современным методам разработки программного обеспечения. Это означает, что он вряд ли будет принят в рамках проекта LLVM для дальнейшего развития сообществом LLVM. Команда Nvidia также стремится к тому, чтобы Flang и интерфейс стали полезными во многих отношениях, которые полезны для Clang: не только в качестве интерфейса, но и для статического анализа и инструментов.

Поскольку текущая кодовая база flang не удовлетворяла бы этим потребностям, Nvidia работала над переписыванием интерфейса на современном C++. Этот проект называется f18.

На данный момент команда Nvidia задокументировала и реализовала то, что они описывают как здоровое подмножество компилятора для таблиц символов и области видимости, разрешения имен, операторов ИСПОЛЬЗОВАНИЯ и файлов модулей, постоянного представления, постоянного сворачивания и большей части семантики объявлений, меток и выражений. Синтаксический анализатор обрабатывает все Fortran 2018 и OpenMP 4.5 и реализует препроцессор с поддержкой Fortran. В настоящее время рассматривается график потока управления Fortran (CFG). 

В Nvidia единодушны в том, что проект сейчас находится в точке, где лучший путь вперед заключается в том, что f18 и существующие библиотеки времени выполнения Fortran будут включены в проект LLVM. Интерфейс Fortran станет надлежащим подпроектом LLVM, обсуждения дизайна будут проходить в соответствующем списке рассылки LLVM, обзоры кода будут использовать phabricator и так далее.

Написав в списке рассылки разработчиков LLVM, разработчики из Nvidia говорят::

“Мы стремимся развивать Fortran-интерфейс LLVM на долгие годы, и вместе с другими членами сообщества LLVM (например, ARM, Департамент энергетики США) хотели бы сделать это в рамках проекта LLVM.”

Наряду с flang, Nvidia разработала библиотеку скалярных, векторных и маскированных математических функций, которые команда также предлагает для включения в LLVM. 

Хотя есть некоторые аспекты проекта, которые требуют согласования (например, использование C++17 для некоторых частей f18, где LLVM стандартизирован на C++11), похоже, что f18 вполне может стать проектом LLVM в этом году. Интерфейс f18 уже размещен на GitHub в рамках проекта компилятора Flang.


Добавить комментарий