OpenMPでコードをコンパイルして(OpenMPをプレーンCに変換して)、OpenMPでどのようなコードが生成されているかを知る方法はありますか?私はgcc 4.4コンパイラを使用しています。OpenMPコードをCコードにコンパイル
答えて
は、他のプラットフォーム上のネイティブコンパイラによってコンパイルされてもよいCまたはFortran 77のコードを最適化された放射することができる(もhttp://openmp.org/wp/openmp-compilers/に記載されている)は、少なくともhttp://www2.cs.uh.edu/~openuh/ OpenUHがあります。
もある:http://www.cs.uoi.gr/~ompi/ OMPi:
はOMPiコンパイラは、OpenMPの#pragmaとCのソースコードを取得し、システムのネイティブコンパイラによってコンパイルされる準備ができ、形質転換されたマルチスレッドのCコードを生成します。
とOdinMP:
OdinMP/CCPは 移植性の理由から、Javaで書かれたとのOpenMP ディレクティブとC-プログラムを取り、POSIXスレッドのCプログラムを生成しました。
openmpコードをプレーンCに変換することはほとんど不可能だと言います。古いプレーンCはスレッドをサポートしていないので、OpenMPのソースからソースへのトランスレータはまだC11を認識していないと思います。 OpenMPプログラムは、POSIXスレッドを使用してCに変換することも、ランタイムライブラリ(libgompなど)を呼び出してCに変換することもできます。たとえば、OpenUHにはpthreads自体を使用する独自のライブラリがあります。他のコメンターと同様
はgccが、プレーンC.
にOpenMPディレクティブを翻訳していません。しかし、あなたがgccがあなたのディレクティブで何をするかのアイデアを取得したい場合、あなたが -fdump-tree-optimized
オプションでコンパイルすることができ指摘しました。これにより、少なくともCのようなプログラムの中間表現が生成されます。
は最適化 段階でOpenMPディレクティブはGOMPランタイムライブラリへの呼び出しに置き換えられている、ダンプすることができ、いくつかの段階(GCCのmanページを確認してください)があります。 その表現を見ることで、何が起こっているのかを知ることができます。
- 1. openmpをpthreadsにコンパイルするCコード
- 2. Objective-CコードをCにコンパイル
- 3. OpenMPコードC++は遅いthatn C++
- 4. MacでC++コードをコンパイル
- 5. ARMアーキテクチャのC++コードのコンパイル
- 6. 実行時にC#コード拡張をコンパイル
- 7. RokuのC++コードをコンパイルするには?
- 8. コンパイルC++コードにこのコードを考えるとブーストのregex_match
- 9. fattach()でcコードをコンパイルする方法
- 10. getopt.h:WindowsでLinuxのCコードをコンパイルする
- 11. アプリケーションでC#コードをコンパイルする
- 12. インクルードなしでC++コードをコンパイルする
- 13. dSYM MacOSでC++コードをコンパイル中のディレクトリ
- 14. Android携帯でCコードをコンパイルする
- 15. CのコードをRヘッダファイルでコンパイル
- 16. C#の動的コンパイルとコード生成
- 17. スレッドプールで実行されたOpenMPコード
- 18. C++コードをC#コードに変換する
- 19. コンパイルJavaFXのコードANT
- 20. ファイルに保存せずにCコードをコンパイルする
- 21. C#.net 4コードを.net 3.5にコンパイルするには?
- 22. C++コンパイル済みCコードと組み込みプログラミングのPure C?
- 23. VC++ 10でコンパイルしたコードをVC++ 9でコンパイルしたコードにリンクする
- 24. C#を使用してコードを動的にコンパイル
- 25. CコードへのObjective-Cコード
- 26. コンパイル時にC#コードを挿入する方法は?
- 27. JavaコードからJavaとCファイルをコンパイル&実行するには?
- 28. C++でコンパイルされないコードをテストするには?
- 29. mpiで既存のFortranコードをハイブリッドmpiに移植するopenmp
- 30. C++コードをコンパイルしてCコードとリンクするにはどうすればよいですか?
私は、gccコンパイラがOpenMP呼び出しをC言語に変換すると仮定しています。むしろ、OpenMP対応のコンパイラのほとんどは、ソースをアセンブラに変換してシステム関数の呼び出しを含むと考えています。あなたのコンパイラがアセンブラリストを生成することは間違いありません。それはあなたが仕事をする必要があるかもしれません。私は、私の期待が間違っていることを証明する答えに興味を持っています。 –
Afaikでは、ソースコードをgccコンパイラから見ることができます。 omp.hとライブラリ(libgomp)のそれぞれのソースファイルを参照して、これらのプラグマの動作を確認してください。しかし、cコンパイラを呼び出す前に、置換ルーチンはありません。 [ここ](http://gcc.gnu.org/onlinedocs/libgomp/Implementing-FOR-construct.html#Implementing-FOR-construct)を参照してください。 – Bort