Как директивы OpenMP обрабатываются компилятором - PullRequest
1 голос
/ 14 июня 2011
  1. Мне было интересно, как OpenMP директивы обрабатываются компилятором, такие как gcc?
  2. Например, в этом коде

     int main(int argc, char *argv[])
     {
       #pragma omp parallel  
       printf("Hello, world.\n");
       return 0;
     }
    

    Изменяет ли препроцессор gcc код C замена директивы OpenMP на какой-то другой код?

    Как выглядит код после предварительная обработка и прямо перед собран

Спасибо и всего наилучшего!

Ответы [ 2 ]

2 голосов
/ 15 июня 2011

Вы можете сделать поиск в Интернете и найти статьи, обсуждающие эту тему. Я ненавижу давать ссылки, потому что они постоянно меняются, но в этом случае это самый простой способ ответить на ваш вопрос. Вот два, на которые вы можете посмотреть:

Вещи из другого мира (или: Как работают компиляторы OpenMP? Часть 1), Майкл Клемм

Как компилируется OpenMP, Барбара Чепмен

Надеюсь, это ответит на ваш вопрос.

1 голос
/ 14 июня 2011

Я не знаю из первых рук, но очень маловероятно, что GCC (или любой компилятор) будет предварительно обрабатывать код, когда он встречает эти прагмы.Скорее всего, GCC просто отметит этот блок внутри, а затем сгенерирует соответствующий собственный код.Промежуточный код C ++ отсутствует.

...