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. clang-clを使用してopenmpでCコードをコンパイル
- 3. Objective-CコードをCにコンパイル
- 4. OpenMPコードC++は遅いthatn C++
- 5. スタティックライブラリ(.a)にC++コードをコンパイル
- 6. CヘッダとCUDAコードでCコードをコンパイルするには?
- 7. Visual StudioコードでのC++コードのコンパイル
- 8. MacでC++コードをコンパイル
- 9. ARMアーキテクチャのC++コードのコンパイル
- 10. Visual StudioコードVSCodeデバッグ/コンパイルC++
- 11. 実行時にC#コード拡張をコンパイル
- 12. RokuのC++コードをコンパイルするには?
- 13. コンパイルC++コードにこのコードを考えるとブーストのregex_match
- 14. eclipse c/C++プロジェクト、GCCコンパイルG ++コード
- 15. R CMD SHLIBを使用してCコードをコンパイルする方法OpenMPを使用するには?
- 16. dSYM MacOSでC++コードをコンパイル中のディレクトリ
- 17. アプリケーションでC#コードをコンパイルする
- 18. getopt.h:WindowsでLinuxのCコードをコンパイルする
- 19. PythonでCコードをコンパイルするsetuptools 'bdist_deb'
- 20. CのコードをRヘッダファイルでコンパイル
- 21. fattach()でcコードをコンパイルする方法
- 22. インクルードなしでC++コードをコンパイルする
- 23. Android携帯でCコードをコンパイルする
- 24. ユーザスペースとカーネルスペースを同じCコードでコンパイル
- 25. GDBでインテルC++コンパイル済みコードをデバッグ
- 26. OpenMPで2D Haarウェーブレット変換のCコードを並列化
- 27. C#の動的コンパイルとコード生成
- 28. Visual Studioコード:C++コンパイル引数-o
- 29. C++コードはコンパイルされません
- 30. VSコード:コンパイルできません。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