All articles in a thread |
---|
GCC 4.5.0以降では、link-time optimizationが実装されていますが、 試して見たところベンチマーク(bench2.sad)の範囲では、一部のスコアがかなり上がるようです 環境は、以下の通り Quad-Core AMD Opteron(tm) Processor 2376 (2300.11-MHz K8-class CPU) FreeBSD/amd64 8.1-PRERELEASE #1: Mon May 31 14:08:35 JST 201 gcc46 (GCC) 4.6.0 20100605 (experimental) SAD amorita branch Rev.3081 with LTO(-g -O3 -fwhopr -march=native -msse3 -mfpmath=sse) Average Sigma Function 1.8810231 .006087917714 Optics 1.02328445 .001274970979 Tracking 3.0991447 .007066664866 Matching .4202354 9.83683378671E-4 Overall .092105686682 1.64455657784E-4 without LTO(-g -O3 -march=native -msse3 -mfpmath=sse) Average Sigma Function 1.90751815 .009364446848 Optics 2.7036258 .006689210217 Tracking 3.00537145 .006988694385 Matching .18070175 5.42954381626E-4 Overall .10676813006 3.17633835754E-4 Matching Testのスコアが悪化しているのに、Optics Testのスコアが上がっているのは かなり謎ですが、正しく動いているとすればチューニング次第ではかなり有望そうです。 |
出来上がった実行バイナリは、strip状態で 27%ほど肥大化しています |
> GCC 4.5.0以降では、link-time optimizationが実装されていますが、 |
> 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が劣化している インライン展開等でコードのフットプリンとが肥大化しキャッシュから溢れた可能性がある。 |