Цитирование openMP spe c -
Поэтому компиляторы могут игнорировать директивы OpenMP и условно скомпилированный код, если поддержка API OpenMP не предусмотрена или не включена. Совместимая реализация должна предоставлять опцию или интерфейс, который гарантирует, что базовая поддержка всех директив OpenMP и механизмов условной компиляции OpenMP включена. В оставшейся части этого документа фраза OpenMP compilation используется для обозначения компиляции с включенными этими функциями OpenMP.
Другими словами, директивы представляют собой инструмент программирования, позволяющий компиляторам компилировать код под ним. если существующая реализация для такой директивы существует и в противном случае возвращается к компиляции кода, как обычно для процессора. Я также нашел эту страницу IBM , которая объясняет прагмы немного дальше.
Я действительно не нашел другого учебника, кроме того, который вы упомянули. Возможно, вам стоит взглянуть на руководства по Clang на этом сайте. Я думаю, что директивы OpenMP реализованы как синтаксический анализатор внешнего интерфейса. Вам нужно проанализировать структурированный код внутри директивы и добавить новый узел AST. Это будет скомпилировано в LLVM IR и передано в LLVM, где вы можете сделать больше преобразований в IR.