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).
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.