Subject | : Re^2: GCC link-time optimization |
Date | : 2010/06/25(Fri) 13:13:24 |
Contributor | : Akio Morita |
> 3081のLTOバイナリですが、正しく動いていないようです。 > どうやら、LTO時に block data構文で初期化される common blockが正しく初期化されないために、 > 各種フラグの状態(RFSW等々)が異なる状態で benchmarkが走っているようです。 > まともに動いているように見える作業途中のRevision 3097での benchmark結果 環境は、以下の通り Quad-Core AMD Opteron(tm) Processor 2376 (2300.11-MHz K8-class CPU) FreeBSD/amd64 8.1-PRERELEASE FreeBSD 8.1-PRERELEASE #0: Thu Jun 17 19:30:52 JST 2010 gcc46 (GCC) 4.6.0 20100619 (experimental) SAD amorita branch Rev.3097 with LTO(-g -O3 -fwhopr -fno-omit-frame-pointer -march=native -msse3 -mfpmath=sse -fcheck=do) Function 1.9295834 .005164105368 Optics 2.66001665 .005230880496 Tracking 3.27642535 .006721012802 Matching .17785065 5.22699095787E-4 Overall .109633010342 1.66550089337E-4 without LTO(-g -O3 -fno-omit-frame-pointer -march=native -msse3 -mfpmath=sse -fcheck=do) Function 1.99698705 .008423391088 Optics 2.7984155 .006557250736 Tracking 2.98214475 .004432890323 Matching .18719715 5.71515738606E-4 Overall .109711450298 2.85608472421E-4 Function/Optics/Matchingは高速化しているが、Trackingが劣化している インライン展開等でコードのフットプリンとが肥大化しキャッシュから溢れた可能性がある。