要知道pthread对openmp指令的调用,需要使用哪些gcc命令行语句?我知道在汇编,简单,rtl,树中生成IR文件的-fdump命令行语句。但是我无法为openmp指令获取任何pthread转储。
发布于 2014-10-20 23:40:15
GCC并没有直接将OpenMP编译指示转换成Pthread代码。相反,它将每个OpenMP构造转换为一组对GNU OpenMP运行时库libgomp的调用。您可以通过使用-fdump-tree-all编译来获得中间表示。查找扩展名为.ompexp的一个或多个文件。
示例:
#include <stdio.h>
int main() {
int i;
#pragma omp parallel for
for(i=0; i<100; i++) {
printf("asdf\n");
}
}实现并行区域的.ompexp文件的相应部分:
<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工作共享构造是通过使用一些简单的数学计算来实现的,这些计算确定了相应线程的迭代范围。
https://stackoverflow.com/questions/26466537
复制相似问题