Index / Reload
> ぶぅさんある言語処理系のランタイムです。40万〜50万ステップぐらいあります。実際にコンパイルをしているのは同僚ですが、ICC8 のオプションは O3 のはずです(-ipo は含まれてない)。500個ぐらいの C++ ソースをソース単位で分割コンパイルしているんですけど、どのファイルにも 10G ギガ近いメモリが消費されるのです (T_T)>ポセさんC++ 言語のルーチン間解析には virutal 関数呼び出しの壁があるわけですけど、これも profiled-guided optimization (PGO) で乗り越えるのが流行のようですね。VC や GCC まで PGO を装備です。virtual 関数越しの IPO なんてはじめられたら、コンパイラはますます資源を必要になるばかり…
昔は、CPU資源が貴重だったため、コンパイラ自体のコンパイル時速度や、コンパイル時に使用するメモリ量へのシビアな要求もあったため、制限がありましたが(時にはある程度のメモリを使ったらメッセージを出して、コンパイルをやめるなんていうコンパイラもありました)、最近のコンパイラは、メモリ量やコンパイル速度ってほとんど気にしていないですよね。今のインテルのコンパイラの最新は、O1オプションの指定時においても、インライン展開はしないものの、ルーチン間解析はしているようで、ますますメモリを使うようになっています。
面白いですね。ちなみにどんなプログラムをどんなオプションで翻訳したんでしょう?あてずっぽうですが、-ipo を指定しました?アレ、めちゃメモリ食いますよね。
> ぶぅさん
ある言語処理系のランタイムです。40万〜50万ステップぐらいあります。
実際にコンパイルをしているのは同僚ですが、ICC8 のオプションは O3 のはずです(-ipo は含まれてない)。500個ぐらいの C++ ソースをソース単位で分割コンパイルしているんですけど、どのファイルにも 10G ギガ近いメモリが消費されるのです (T_T)
>ポセさん
C++ 言語のルーチン間解析には virutal 関数呼び出しの壁があるわけですけど、これも profiled-guided optimization (PGO) で乗り越えるのが流行のようですね。VC や GCC まで PGO を装備です。
virtual 関数越しの IPO なんてはじめられたら、コンパイラはますます資源を必要になるばかり…
昔は、CPU資源が貴重だったため、
コンパイラ自体のコンパイル時速度や、コンパイル時に使用する
メモリ量へのシビアな要求もあったため、制限がありましたが(時にはある程度のメモリを使ったらメッセージを出して、コンパイルをやめるなんていうコンパイラもありました)、
最近のコンパイラは、メモリ量やコンパイル速度って
ほとんど気にしていないですよね。
今のインテルのコンパイラの最新は、O1オプションの指定時に
おいても、インライン展開はしないものの、ルーチン間解析は
しているようで、ますますメモリを使うようになっています。
面白いですね。
ちなみにどんなプログラムをどんなオプションで翻訳したんでしょう?
あてずっぽうですが、-ipo を指定しました?
アレ、めちゃメモリ食いますよね。