AMD развивает основанный на LLVM универсальный компилятор C++ и CUDA для CPU/GPU

18 ноября 2015 года

Компания AMD представила инициативу Boltzmann, в рамках которой ведётся разработка средств для организации гибридных вычислений с привлечением CPU и GPU. В частности, в рамках инициативы развивается универсальный компилятор HСC (Heterogeneous Compute Compiler), способный генерировать код для CPU и GPU на основании исходных текстов на языке C++, а также транслятор, преобразующий исходные тексты с расширениями CUDA. Одновременно компания AMD представила новую линейку серверных GPU FirePro S, которые в свете предоставления возможности использования приложений на базе технологии CUDA могут составить конкуренцию компании NVIDIA в области построения высокопроизводительных вычислительных систем.

Компилятор HCC продолжает развитие ранее представленного компилятора HSA, основанного на наработках проекта LLVM/Clang. В HCC компания AMD попыталась устранить основной барьер, мешающий продвижению развиваемых в AMD технологий гибридных вычислений, - излишнюю усложнённость предложенного решения. HCC даёт разработчикам более высокоуровневые средства разработки, позволяя использовать язык C++, вместо низкоуровневой разработки на Си с применением OpenCL.

В опубликованной на днях спецификации OpenCL 2.1 привязка к языку Си была преодолена благодаря появлению ядра OpenCL C++ и средств для использования расширений для языка C++, но OpenCL всё равно остаётся слишком низкоуровневым API, а также весьма неохотно внедряется в продуктах NVIDIA (NVIDIA ограничивается поддержкой OpenCL 1.2), что приводит к его непопулярности в среде разработчиков высокопроизводительных приложений (в top500 крупнейших кластеров карты NVIDIA используются на 68 системах, а AMD на 3). Компания AMD, которая не отказывается от OpenCL как единого стандарта, в компиляторе HCC попыталась найти разумный выход: разработчик получил возможность применения одного компилятора и одной кодовой базы на языке C++ без выделения в отдельные файлы компонентов, выполняемых на стороне GPU.

Параллелизм достигается благодаря введению расширений HIP (Heterogeneous-compute Interface), которые предлагают два метода разработки. Первый через применение специальных параллельных операций, таких как parallel_for_each, для определения выполняемых параллельно сегментов кода и методов взаимодействия с остальным кодом программы. И второй через использование высокоуровневого API Parallel STL (Standard Template Library), развиваемого в рамках спецификаций C++ 17 и определяющего ряд стандартных функций, выполняемых на стороне GPU.

Для решения проблем с совместимостью AMD разработал инструментарий HIPify для трансляции кода с расширениями CUDA, позволяющий преобразовывать CUDA-проекты в HIP для их последующей компиляции для GPU AMD и, наоборот, транслировать HIP в CUDA для выполнения на GPU NVIDIA. Таким образом удалось добиться полной совместимости с CUDA и предоставить разработчикам возможность использования уже имеющихся CUDA-программ на GPU AMD. При этом AMD поддерживает лишь трансляцию на уровне исходных текстах, не предоставляя средств для выполнения уже скомпилированных CUDA-программ.

Компания AMD также развивает специализированный 64-разрядный драйвер для Linux, ориентированный на оснащение узлов вычислительных кластеров и запуск приложений в окружении HSA+, примечательном использованием единого для CPU и GPU унифицированного адресного пространства (GPU и CPU могут напрямую обращаться к общим блокам памяти), что существенно упрощает программирование и приближает доступные для GPU AMD средства к возможностям технологии CUDA, используемой компанией NVIDIA. HSA+ дополняет стандартное окружение HSA (Heterogeneous System Architecture) расширениями, обеспечивающими поддержку дискретных GPU (HSA сосредоточен на APU).

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «AMD развивает основанный на LLVM универсальный компилятор C++ и CUDA для CPU/GPU», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.