有没有一种方法可以将OpenMP编译为C代码(将OpenMP部分转换为纯C),以便我可以知道OpenMP正在生成哪种代码。我正在使用gcc 4.4编译器。将OpenMP代码编译为C代码
7
A
回答
3
至少有http://www2.cs.uh.edu/~openuh/ OpenUH(甚至在http://openmp.org/wp/openmp-compilers/列出),其可以
发射优化的C或Fortran 77的代码,其可以由其它平台上的本地编译器进行编译。
还有一些:http://www.cs.uoi.gr/~ompi/ OMPI:
的OMPI编译器采用使用OpenMP编译指示的C源代码并产生转化的多线程C代码,准备由该系统的本地编译器进行编译。
和OdinMP:
OdinMP/CCP是用Java编写的用于 可移植性原因,并采取了C-程序使用OpenMP 指令和产生用于POSIX线程的C程序。
我应该说,这几乎是不可能的OpenMP代码转换成普通的C;因为旧的普通C没有线程的支持,我认为OpenMP源码到源代码翻译者还没有意识到C11。可以使用POSIX线程将OpenMP程序转换为C语言,或者将某些运行时库(如libgomp)调用转换为C语言。例如,OpenUH有自己的库,它使用pthreads本身。
6
像其他评论者指出,海合会OpenMP指令并没有转化为纯C.
但是,如果你想获得什么样的gcc的想法与你的指令,你可以用 -fdump-tree-optimized
选项编译一样。这将产生至少类C的程序的中间表示。
有几个阶段,可以进行转储(检查GCC的man page),在优化 阶段的OpenMP指令已被替换调用的GOMP运行时库。看看这种表示可能会让你对发生的事情有所了解。
相关问题
- 1. 将openmp编译为pthreads C代码
- 2. 编译C代码为C#
- 3. 将C代码编译为Visual C++ dll?
- 4. C#编译为MSIL代码
- 5. C代码编译
- 6. 编译C代码
- 7. 将C代码翻译为汇编代码?
- 8. 是否有可能将C代码编译为Javascript代码?
- 9. 将非托管C++代码编译为托管代码
- 10. 用C++编译器编译c代码
- 11. 将C#代码翻译成Ruby代码
- 12. 编译为C++代码(/ TP)和C代码(iniparser.c)
- 13. C代码编译错误
- 14. 脚本编译C代码
- 15. Msys编译C代码
- 16. C++代码编译错误
- 17. C代码 - Pthread不编译
- 18. C++代码不能编译
- 19. 无法编译c代码
- 20. C代码编译失败
- 21. 不能编译代码[C++]
- 22. 编译C#代码与单
- 23. 如何使用编译这个简单的C++代码`openmp`
- 24. C代码将无法编译
- 25. 为什么我的OpenMP C++代码比串行代码慢?
- 26. GMP-汇编代码?编译代码
- 27. Haxe编译为C++和JS源代码
- 28. 这个C代码为什么编译?
- 29. C++:为什么代码正在编译
- 30. 为Android编译C++ 11源代码NDK
我认为这个问题预先假设gcc编译器将OpenMP调用转换为C.我怀疑它和其他大多数OpenMP感知编译器都将源代码转换为汇编程序,包括调用系统函数。我很确定你的编译器会产生汇编列表;这可能是你需要合作的东西。我有兴趣观看一个答案,证明我的期望是错的。 –
Afaik,你可以看看gcc编译器的源代码,例如omp.h和库的相应源文件(libgomp)来查看这些编译指示所做的工作。但是在调用c编译器之前没有替换例程。参见[here](http://gcc.gnu.org/onlinedocs/libgomp/Implementing-FOR-construct.html#Implementing-FOR-construct) – Bort