Поддержка OMPT в основных компиляторах?

#clang #openmp #libgomp #gcc11

Вопрос:

Спецификация OpenMP версии 5.0 определяет интерфейс OMPT, позволяющий внешним инструментам запрашивать среду выполнения openmp.

Я хотел попробовать, но я действительно не понимаю, как основные компиляторы на самом деле поддерживают это.

  • GCC-11 утверждает, что имеет расширенную поддержку поддержки openmp 5.0, но в отношении OMPT я не смог найти соответствующий ompt.h файл заголовка (в моем случае пакет Ubuntu libgcc-11-dev предоставляет omp.h ).
  • clang-12 предоставляет ompt.h (пакет libomp-12-dev ), однако компиляция примеров программ завершается неудачно, первая ошибка unknown type name 'ompt_invoker_t' , и действительно, эта структура не может быть найдена ompt.h .

Нынешнее состояние поддержки мне очень неясно. Я не смог найти точный статус GCC, в то время как clang предоставляет эту информацию https://clang.llvm.org/docs/OpenMPSupport.html из чего я не могу понять, что стоит за в основном сделанным.

Может ли кто-нибудь помочь мне найти актуальную информацию или какой-либо намек на это ?

Ответ №1:

Примеры OMPT, приведенные выше, относятся к ранней стадии OMPT (~OpenMP TR6). Несколько деталей в интерфейсе изменились до окончательной версии в OpenMP 5.0. В настоящее время у меня есть студент, работающий над обновлением примеров OMPT.

В качестве справочного инструмента OMPT я всегда предлагаю посмотреть на:

https://github.com/llvm/llvm-project/blob/main/openmp/runtime/test/ompt/callback.h

Этот инструмент всегда будет синхронизирован с реализацией LLVM OMPT, так как этот инструмент используется для тестирования CI. Файл заголовка OMPT был переименован в omp-tools.h (см. спецификацию OpenMP). Это было просто для удобства, чтобы файл все еще был там. Я думаю, нам следует добавить предупреждение об устаревании в этот файл, а не хранить копию в LLVM.

Что касается поддержки компилятора: LLVM и Intel совместно используют поддержку OMPT. Все другие компиляторы на основе LLVM также могут совместно использовать поддержку OMPT.

Для компиляторов GNU может сработать связывание кода с-lomp, а также получение прибыли от поддержки OMPT в LLVM. Проверьте с помощью ldd, что libomp и libgomp не связаны с приложением.

«в основном сделано» означает, что все, кроме ПРОПУСКОВ для конструкций устройств и подпрограмм устройств, считается реализованным. Если вы обнаружите некоторые проблемы в реализации, пожалуйста, зарегистрируйте ошибку в LLVM/OpenMP/runtime.

Комментарии:

1. Большое спасибо Иоахиму за вашу чрезвычайно полезную информацию, о которой конечные пользователи не могут догадаться, пока OMPT не стабилизируется.

2. Примеры и слайды на git.rwth-aachen.de/OpenMPTools/OMPT-Examples обновлены сейчас, и по крайней мере 1-4 должны отлично работать с последней версией LLVM сейчас.