私は C++ シミュレーション フレームワークに取り組んでいます。現在のバージョンでは、2 つのボトルネックを特定しました。1 つ目は乱数の生成であり、2 つ目 (この質問の動機) は高度に反復的なプロセス (重いfor loops
) の使用です。
ループの最適化に関する gcc 4.8 についてフィードバックをいただけないでしょうか。
私はこの主題に関するいくつかの利用可能な文献を読みましたが、この初期のバージョンから私が期待できることを (もっと簡単な言葉で) より明確にしていただけないでしょうか.
たとえば、 1 つの呼び出しは何ですかloop normalization
... または、マルチコア アーキテクチャとは何の関係がありますか...
また、最適化オプションの背後にあるもの:
-ftree-loop-optimize ツリーでループの最適化を実行します。このフラグは、-O 以上でデフォルトで有効になります。
-ftree-loop-linear ツリーでループ交換変換を実行します。-floop-interchange と同じ。このコード変換を使用するには、GCC を --with-ppl および --with-clog で構成して、Graphite ループ変換インフラストラクチャを有効にする必要があります。
-floop-interchange ループに対してループ交換変換を実行します。ネストされた 2 つのループを入れ替えると、内側のループと外側のループが切り替わります。
そこにコードの最適化やコンパイラの専門家はいますか? どうもありがとう。
NB : 現在、Debian 4.7.2、gcc 4.7 で作業しています