首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenMp到Pthreads文件

OpenMp到Pthreads文件
EN

Stack Overflow用户
提问于 2014-10-20 21:10:30
回答 1查看 80关注 0票数 0

要知道pthread对openmp指令的调用,需要使用哪些gcc命令行语句?我知道在汇编,简单,rtl,树中生成IR文件的-fdump命令行语句。但是我无法为openmp指令获取任何pthread转储。

EN

回答 1

Stack Overflow用户

发布于 2014-10-20 23:40:15

GCC并没有直接将OpenMP编译指示转换成Pthread代码。相反,它将每个OpenMP构造转换为一组对GNU OpenMP运行时库libgomp的调用。您可以通过使用-fdump-tree-all编译来获得中间表示。查找扩展名为.ompexp的一个或多个文件。

示例:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int i;
    #pragma omp parallel for
    for(i=0; i<100; i++) {
        printf("asdf\n");
    }
}

实现并行区域的.ompexp文件的相应部分:

代码语言:javascript
复制
<bb 2>:
  __builtin_GOMP_parallel_start (main.omp_fn.0, 0B, 0);
  main.omp_fn.0 (0B);
  __builtin_GOMP_parallel_end ();

GCC通过代码大纲实现并行区域,在这种情况下,main.omp_fn.0是包含并行区域主体的函数。在函数本身(为简洁起见,这里省略)中,for工作共享构造是通过使用一些简单的数学计算来实现的,这些计算确定了相应线程的迭代范围。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26466537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档