OpenMP指令如何由编译器处理

时间:2011-06-14 18:29:29

标签: c openmp directive

  1. 我想知道如何OpenMP 指令由编译器处理, 比如gcc?
  2. 例如,在此代码中

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

    gcc的预处理器是否修改了C代码 用。替换OpenMP指令 其他一些代码?

    之后的代码是什么? 预处理之前和之前 组装

  3. 谢谢和问候!

2 个答案:

答案 0 :(得分:2)

您可以进行网络搜索并查找讨论此主题的论文。我讨厌提供链接,因为它们会不断变化,但在这种情况下,这是回答问题的最简单方法。您可以看看以下两个:

The Thing from another World (or: How do OpenMP Compilers Work? Part 1), by Michael Klemm

How OpenMP is Compiled, by Barbara Chapman

希望这会回答你的问题。

答案 1 :(得分:1)

我不知道第一手资料,但GCC(或任何编译器)在遇到这些编译指示时预处理代码的可能性很小。最有可能的是,GCC将在内部标记该块,然后生成适当的本机代码。没有中间C ++代码。