2012-02-08 125 views

回答

2

OpenMP是一種高級語言擴展。所以,它是C/C++/FORTRAN前端,它應該將雜注降低到必要的運行時調用和代碼更改。

我看不出OpenMP如何「添加」到LLVM IR。如果您需要支持OpenMP pragmas併發出LLVM IR的C/C++/FORTRAN編譯器 - 請嘗試dragonegg。

+1

在最近的ml線程[(LLVMdev)OpenMP支持LLVM/jan2012](http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-January/046823.html)中,提出了使用內在函數。 「對自動並行感興趣的人是 可能更感興趣將LLVM-IR環路轉換爲帶有OpenMP擴展的LLVM-IR 。」 – osgx 2012-02-08 13:49:05

+0

@osgx:如果我們正在討論對omp運行時調用的庫獨立表示,那麼是的,特殊內在函數是一種自然的方式。理論上Autopar代碼可能會產生omp-aware代碼。所以,很可能最初的問題需要澄清如何「LLVM仍然可以支持OpenMP指令」:) – 2012-02-08 14:50:58

+0

對。基本上,發生openmp的事情是一系列針對各種openmp指令的庫調用(以及一些cfg更改),openmp在IR中沒有什麼特殊的需要。 如果您希望能夠注意到OpenMP指令並在更高級別重構循環變換,那麼您可能需要一些IR支持,但我並不認爲它是需要的。 – echristo 2012-02-09 19:12:52