将openmp编译成pthreads C代码

我知道OpenMP实际上只是一组编译成pthread的宏.有没有办法在编译的其余部分之前看到pthread代码?我正在使用GCC进行编译.

解决方法

首先,OpenMP不是一组简单的宏.可以看到一个简单的转换为类似pthread的代码,但是OpenMP确实需要的不仅包括运行时支持.

回到你的问题,至少在GCC中,你看不到pthreaded代码,因为GCC的OpenMP实现是在编译器后端(或中端)完成的.转换在IR(中间表示)级别完成.因此,从程序员的角度来看,不容易看出代码是如何实际转换的.

但是,有一些参考.

(1)英特尔工程师提供了英特尔C/C++编译器中OpenMP实现的概述:

http://www.drdobbs.com/parallel/how-do-openmp-compilers-work-part-1/226300148

http://www.drdobbs.com/parallel/how-do-openmp-compilers-work-part-2/226300277

(2)您可以看一下GCC OpenMP的实现:

https://github.com/mirrors/gcc/tree/master/libgomp

请参阅libgomp.h确实使用pthread,而loop.c包含并行循环构造的实现.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...