View previous topic :: View next topic |
Author |
Message |
RedWing n00b
Joined: 26 Jan 2005 Posts: 2
|
Posted: Wed Jan 26, 2005 9:50 pm Post subject: Optimale Compilerflags für gcc3.3.5 und Pentium IV |
|
|
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 |
|
|
Squiddle Tux's lil' helper
Joined: 27 Jan 2004 Posts: 141
|
Posted: Wed Jan 26, 2005 10:09 pm Post subject: |
|
|
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 |
|
|
RedWing n00b
Joined: 26 Jan 2005 Posts: 2
|
Posted: Wed Jan 26, 2005 11:11 pm Post subject: |
|
|
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 |
|
|
NightDragon Veteran
Joined: 21 Aug 2004 Posts: 1156 Location: Vienna (Austria)
|
Posted: Wed Jan 26, 2005 11:57 pm Post subject: |
|
|
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 |
|
|
Squiddle Tux's lil' helper
Joined: 27 Jan 2004 Posts: 141
|
Posted: Thu Jan 27, 2005 11:06 am Post subject: |
|
|
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 |
|
|
NightDragon Veteran
Joined: 21 Aug 2004 Posts: 1156 Location: Vienna (Austria)
|
Posted: Thu Jan 27, 2005 2:16 pm Post subject: |
|
|
Oh! Danke für die Info. _________________ You are the problem too all my solutions |
|
Back to top |
|
|
c07 Veteran
Joined: 25 Oct 2002 Posts: 1091
|
Posted: Thu Jan 27, 2005 6:16 pm Post subject: |
|
|
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 |
|
|
amne Bodhisattva
Joined: 17 Nov 2002 Posts: 6378 Location: Graz / EU
|
Posted: Thu Jan 27, 2005 7:52 pm Post subject: |
|
|
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 |
|
|
Jinidog Guru
Joined: 26 Nov 2003 Posts: 593 Location: Berlin
|
Posted: Mon Jan 31, 2005 11:27 am Post subject: |
|
|
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 |
|
|
|
|
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
|
|