Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Optimale Compilerflags für gcc3.3.5 und Pentium IV
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
RedWing
n00b
n00b


Joined: 26 Jan 2005
Posts: 2

PostPosted: Wed Jan 26, 2005 9:50 pm    Post subject: Optimale Compilerflags für gcc3.3.5 und Pentium IV Reply with quote

Hallo,

bin grad dabei mir eine Gentoo 2004.3 Distribution mit Kernel 2.6.10 anzueignen.

Nun meine Frage:

In der /etc/make.conf für das portage System von Gentoo kann ich ja die Compilerflags angeben.
Ich habe meine Installation aber mittlerweile schon fast komplett fertig und habe aus
Unwissenheit alles mit dem Flag "-march=i386" kompiliert, obwohl ich einen Pentium 4
habe.
Macht es Performancemäßig einen großen Unterschied ob ich nun alles mit -march=i386,
oder mit -march=i686 kompiliere?
Wenn ja, wie kann ich mein komplettes System rekompilieren und was würde es da zu beachten geben?

Danke und Gruß

RedWing
Back to top
View user's profile Send private message
Squiddle
Tux's lil' helper
Tux's lil' helper


Joined: 27 Jan 2004
Posts: 141

PostPosted: Wed Jan 26, 2005 10:09 pm    Post subject: Reply with quote

gentoo-wiki.com ist nach dem Forum DIE Adresse zum schauen, allerdings auch im Forum hättest du über die Suchfunktion lockker auf die CFLAGS central kommen können naja egal.

http://gentoo-wiki.com/Safe_Cflags

dort steht, dass du mit Sicherheit
Code:

     CHOST="i686-pc-linux-gnu"
    CFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
    CXXFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"

nehmen kannst.

Perormancegewinn von i368 zu pentium4 könnte so bei 50Promille liegen oder mehr oder weniger :)
Am meisten noch bei Multimediazeugs wegen mmx und sse.

rekompilieren machst du mit
Code:
# emerge -e system && emerge -e world

-e entspricht emptytree sprich portage geht davon aus dass noch nichts installiert ist und muss dementsprechend alles emergen was in system (aus dem profile) und world (aus dem worldfile) inklusive abhängigkeiten neu kompilieren.

rekompilieren würd ich nicht machen. Einfach ändern und dann nach und nach stellt sich ja alles um :)
_________________
"Unerhört schnelle Systeme begehen unerhört schnell Fehler." -- Stanislaw Lem
Back to top
View user's profile Send private message
RedWing
n00b
n00b


Joined: 26 Jan 2005
Posts: 2

PostPosted: Wed Jan 26, 2005 11:11 pm    Post subject: Reply with quote

Danke für die schnelle Antwort,
werd das dann gleich mal umstellen, vielleicht auch rekompilieren, wenn ich die Zeit dafür finde.

Das mit gentoo-wiki is natürlich ne tolle Geschichte, auch hier nochmal danke für die Addresse.

Bin jetzt schon begeistert von Gentoo :)

Gruß

RedWing
Back to top
View user's profile Send private message
NightDragon
Veteran
Veteran


Joined: 21 Aug 2004
Posts: 1156
Location: Vienna (Austria)

PostPosted: Wed Jan 26, 2005 11:57 pm    Post subject: Reply with quote

Hi!

Falls es dich interessiert.
Ich habe meinen Notebook hier (hat einen normalen P4)
mit folgenden Flags aufgesetzt bzw, alles kompiliert:
Code:
CFLAGS="-O3 -pipe -march=pentium4 -mmmx -msse2 -mfpmath=sse -fexpensive-optimizations -fschedule-insns2 -fomit-frame-pointer -frerun-cse-after-loop -frerun-loop-opt -falign-functions=4"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
LDFLAGS="-Wl,-O1 -Wl,--relax -Wl,--enable-new-dtags -Wl,--sort-common -s"
FEATURES="ccache candy"
MAKEOPTS="-j2"
CCACHE_SIZE="180M"


Hatte bis jetzt keine Probleme damit.
Auch prelinking ist zusätzlich aktiviert.

Zu den LDFLAGS möchte ich aber sagen, das diese nicht von anfang an eingetragen waren, die sind erst vor gut 2 Wochen dazugekommen.
Zwar bis jetzt damit auch schon xorg und die ati treiber usw... kompiliert, auch ohne fehler, aber eine Stage1 Installation mit den LDFLAGS würde ich nicht ausprobieren.
_________________
You are the problem too all my solutions ;)
Back to top
View user's profile Send private message
Squiddle
Tux's lil' helper
Tux's lil' helper


Joined: 27 Jan 2004
Posts: 141

PostPosted: Thu Jan 27, 2005 11:06 am    Post subject: Reply with quote

NightDragon wrote:

Code:
CFLAGS="-O3 -pipe -march=pentium4 -mmmx -msse2 -mfpmath=sse -fexpensive-optimizations -fschedule-insns2 -fomit-frame-pointer -frerun-cse-after-loop -frerun-loop-opt -falign-functions=4"


straight from the man page :) Wichtig sind die "Enabled at levels -O2, -O3, -Os". Sprich du kannst dir einige CFLAGS sparen :) oder du nimmst folgende

Code:

CFLAGS="-O3 -pipe -march=pentium4 -mmmx -msse2 -mfpmath=sse -falign-functions=4 -fdefer-pop
           -fmerge-constants -fthread-jumps -floop-optimize -fcrossjumping
           -fif-conversion -fif-conversion2 -fdelayed-branch
           -fguess-branch-probability -fcprop-registers  -fforce-mem -foptimize-sib-
           ling-calls -fstrength-reduce -fcse-follow-jumps  -fcse-skip-blocks
           -frerun-cse-after-loop  -frerun-loop-opt -fgcse   -fgcse-lm
           -fgcse-sm -fdelete-null-pointer-checks -fexpensive-optimizations
           -fregmove -fschedule-insns  -fschedule-insns2 -fsched-interblock
           -fsched-spec -fcaller-saves -fpeephole2 -freorder-blocks  -fre-
           order-functions -fstrict-aliasing -falign-functions  -falign-jumps
           -falign-loops  -falign-labels -finline-functions -frename-registers"

Es ist einfach wesentlich Beeindruckender :) SCNR

-frerun-cse-after-loop
Re-run common subexpression elimination after loop optimizations
has been performed.
Enabled at levels -O2, -O3, -Os.

-frerun-loop-opt
Run the loop optimizer twice.
Enabled at levels -O2, -O3, -Os.

-fomit-frame-pointer
Don't keep the frame pointer in a register for functions that don't
need one. This avoids the instructions to save, set up and restore
frame pointers; it also makes an extra register available in many
functions. It also makes debugging impossible on some machines.

On some machines, such as the VAX, this flag has no effect, because
the standard calling sequence automatically handles the frame
pointer and nothing is saved by pretending it doesn't exist. The
machine-description macro "FRAME_POINTER_REQUIRED" controls whether
a target machine supports this flag.
Enabled at levels -O, -O2, -O3, -Os.

-fschedule-insns
If supported for the target machine, attempt to reorder instruc-
tions to eliminate execution stalls due to required data being
unavailable. This helps machines that have slow floating point or
memory load instructions by allowing other instructions to be
issued until the result of the load or floating point instruction
is required.
Enabled at levels -O2, -O3, -Os.

-fexpensive-optimizations
Perform a number of minor optimizations that are relatively expen-
sive.
Enabled at levels -O2, -O3, -Os.
_________________
"Unerhört schnelle Systeme begehen unerhört schnell Fehler." -- Stanislaw Lem
Back to top
View user's profile Send private message
NightDragon
Veteran
Veteran


Joined: 21 Aug 2004
Posts: 1156
Location: Vienna (Austria)

PostPosted: Thu Jan 27, 2005 2:16 pm    Post subject: Reply with quote

Oh! Danke für die Info.
_________________
You are the problem too all my solutions ;)
Back to top
View user's profile Send private message
c07
Veteran
Veteran


Joined: 25 Oct 2002
Posts: 1091

PostPosted: Thu Jan 27, 2005 6:16 pm    Post subject: Reply with quote

Das mit -fomit-frame-pointer gilt aber nicht für alle Architekturen, insbesondere für x86 nicht. -fschedule-insns (nicht -fschedule-insns2) ist bei x86 auch standardmäßig deaktiviert (weil es da eher deoptimiert).
Back to top
View user's profile Send private message
amne
Bodhisattva
Bodhisattva


Joined: 17 Nov 2002
Posts: 6378
Location: Graz / EU

PostPosted: Thu Jan 27, 2005 7:52 pm    Post subject: Reply with quote

Squiddle wrote:
dort steht, dass du mit Sicherheit
Code:

     CHOST="i686-pc-linux-gnu"
    CFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
    CXXFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"

nehmen kannst.

rekompilieren würd ich nicht machen. Einfach ändern und dann nach und nach stellt sich ja alles um :)

Achtung: Das gilt nur für die CFLAGS. Den CHOST sollte man nur ändern wenn man alles neu baut (also entweder Bootstrap oder emerge -e world).

Squiddle wrote:

rekompilieren machst du mit
Code:
# emerge -e system && emerge -e world


Wenn schon neu kompilieren sollte emerge -e world reichen, das inkludiert system.

PS: Habe beim Zitieren die Reihenfolge umgestellt. ;)
_________________
Dinosaur week! (Ok, this thread is so last week)
Back to top
View user's profile Send private message
Jinidog
Guru
Guru


Joined: 26 Nov 2003
Posts: 593
Location: Berlin

PostPosted: Mon Jan 31, 2005 11:27 am    Post subject: Reply with quote

Quote:

Perormancegewinn von i368 zu pentium4 könnte so bei 50Promille liegen oder mehr oder weniger


Mal was dazu.

Quote:

AMD2800+ ktvtoday # CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer" emerge nbench
AMD2800+ bin # nbench

BYTEmark* Native Mode Benchmark ver. 2 (10/95)
Index-split by Andrew D. Balsa (11/97)
Linux/Unix* port by Uwe F. Mayer (12/96,11/97)

TEST : Iterations/sec. : Old Index : New Index
: : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT : 1768.3 : 45.35 : 14.89
STRING SORT : 132.53 : 59.22 : 9.17
BITFIELD : 4.3283e+08 : 74.25 : 15.51
FP EMULATION : 135.72 : 65.12 : 15.03
FOURIER : 19637 : 22.33 : 12.54
ASSIGNMENT : 23.475 : 89.33 : 23.17
IDEA : 3362.6 : 51.43 : 15.27
HUFFMAN : 1392.2 : 38.61 : 12.33
NEURAL NET : 25.648 : 41.20 : 17.33
LU DECOMPOSITION : 1097.5 : 56.86 : 41.06
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX : 58.350
FLOATING-POINT INDEX: 37.400
Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU : AuthenticAMD AMD Athlon(tm) XP 2800+ 2140MHz
L2 Cache : 512 KB
OS : Linux 2.6.10-gentoo-r4
C compiler : 3.4.3
libc :
MEMORY INDEX : 14.878
INTEGER INDEX : 14.327
FLOATING-POINT INDEX: 20.743
Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38


Quote:

AMD2800+ ktvtoday # CFLAGS="-march=i386 -O3 -pipe -fomit-frame-pointer" emerge nbench
AMD2800+ bin # nbench

BYTEmark* Native Mode Benchmark ver. 2 (10/95)
Index-split by Andrew D. Balsa (11/97)
Linux/Unix* port by Uwe F. Mayer (12/96,11/97)

TEST : Iterations/sec. : Old Index : New Index
: : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT : 1075.4 : 27.58 : 9.06
STRING SORT : 129.08 : 57.68 : 8.93
BITFIELD : 4.1919e+08 : 71.91 : 15.02
FP EMULATION : 104.76 : 50.27 : 11.60
FOURIER : 19781 : 22.50 : 12.64
ASSIGNMENT : 20.567 : 78.26 : 20.30
IDEA : 3346.6 : 51.19 : 15.20
HUFFMAN : 1292.8 : 35.85 : 11.45
NEURAL NET : 26.465 : 42.51 : 17.88
LU DECOMPOSITION : 1041.5 : 53.96 : 38.96
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX : 50.396
FLOATING-POINT INDEX: 37.229
Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU : AuthenticAMD AMD Athlon(tm) XP 2800+ 2140MHz
L2 Cache : 512 KB
OS : Linux 2.6.10-gentoo-r4
C compiler : 3.4.3
libc :
MEMORY INDEX : 13.962
INTEGER INDEX : 11.627
FLOATING-POINT INDEX: 20.648
Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38


Auch wenn mein Athlon-XP jetzt kein Pentium4 ist, so dürfte der Vergleich mit i386 wohl schon hinhauen.
Der Performancegewinn ist bei diesem Benchmark zu groß, als dass ich auf das Flag verzichten würde.
Das Binary ist beiden Fällen ziemlich gleich groß, march=athlon-xp kostet dort also nichts.
Dabei dürfte nbench MMX und SSE ziemlich egal sein.
_________________
Just unused Microsoft-Software is good Microsoft-Software
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum