私は次のような式を持っていますREAL
:
xf=w1*x1 + w2*x2 + w3*x3 + w1*y1 + w2*y2 + w3*y3
(Intel Fortran) コンパイラが次のように最適化したかどうかを知りたい:
xf=w1*(x1+y1) + w2*(x2+y2) + w3*(x3+y3)
この式に対して生成された式ツリーを表示するにはどうすればよいですか?
私は次のような式を持っていますREAL
:
xf=w1*x1 + w2*x2 + w3*x3 + w1*y1 + w2*y2 + w3*y3
(Intel Fortran) コンパイラが次のように最適化したかどうかを知りたい:
xf=w1*(x1+y1) + w2*(x2+y2) + w3*(x3+y3)
この式に対して生成された式ツリーを表示するにはどうすればよいですか?
標準の一般的な部分式スキームは上記の変換を実行せず、一部の言語では、さまざまな副作用が発生する可能性があるため、変換が不正であると見なされます。
しかし、高性能な FORTRAN コンパイラ (おそらく Intel FORTRAN を除く) はそれを行う可能性があります。
この式のために生成された式ツリーをどのように見ることができますか?
コンパイラに、特定の最適化フェーズの後にツリーを表示するオプションがある場合は、そのオプションを使用できます。それが当てはまるかどうかを確認するには、コンパイラの最適化を参照してください。
コンパイラにそのようなオプションがない場合、コンパイラが実行中に生成したツリー(または他の内部表現)を確認することはできません。その場合、最善の策は、生成されたアセンブリを調べて、実行される算術演算を確認することです。