Поддержка стандарта OpenMP4.0 для архитектуры NVIDIA PTX в компиляторе GCC

Автор: Монаков А.В., Иванишин В.А.

Журнал: Труды Института системного программирования РАН @trudy-isp-ran

Статья в выпуске: 4 т.28, 2016 года.

Бесплатный доступ

В статье описывается реализация стандарта OpenMP версии 4.0 для акселераторов NVIDIA PTX в компиляторе GCC. Особое внимание уделяется вопросам генерации корректного и эффективного кода для прагм OpenMP с учетом ограничений архитектуры PTX. Поскольку реализация опирается на существующую в GCC трансляцию OpenMP и интеграцию с библиотекой libgomp, для PTX реализованы вторичные программные стеки, позволяющие организовать общий для синхронной группы стек в глобальной памяти и передавать адреса на данные в таких стеках между нитями. Описывается схема организации выполнения одной OpenMP-нити в 32 синхронных потоках выполнения в PTX вне OpenMP SIMD-регионов за счет легковесной инструментации некоторых инструкций. Представлены результаты тестирования на микротестах и сравнение с реализацией стандарта OpenACC.

Еще

Компиляторы

Короткий адрес: https://sciup.org/14916369

IDR: 14916369   |   DOI: 10.15514/ISPRAS-2016-28(4)-10

Список литературы Поддержка стандарта OpenMP4.0 для архитектуры NVIDIA PTX в компиляторе GCC

  • OpenMP Application Program Interface, 2013. (http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf)
  • GCC 4.9 Release Series, 2014. (https://gcc.gnu.org/gcc-4.9/changes.html)
  • Parallel Thread Execution ISA, 2016. (http://docs.nvidia.com/cuda/parallel-thread-execution/)
  • S. Gray. Assembler for NVIDIA Maxwell architecture, 2016 (https://github.com/NervanaSystems/maxas)
Статья научная