Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
gcc 4.1.1. Erfahrungen
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) Diskussionsforum
View previous topic :: View next topic  
Author Message
Klaus Meier
Advocate
Advocate


Joined: 18 Apr 2005
Posts: 2908
Location: Bozen

PostPosted: Mon Sep 25, 2006 12:09 pm    Post subject: gcc 4.1.1. Erfahrungen Reply with quote

Das ganze beieht sich auf ein 32-bit System mit einem Athlon64. Bei anderen Systemen kann die Sache ganz anders aussehen.

Als der gcc 4 angekündigt wurde, haben sich ja einige Zeitschriften überschlagen, wegen der sensationellen Performance. Eigene Tests mit bashmark und nbench sowie Berichte in Zeitschriften zeigten eher das Gegenteil. Bei -O2 erzeugt der gcc 4.1.1 schlechteren Code als der gcc 3.4.6, bei -O3 lag er leicht vorn, aber dazu später. Des weiteren hat der gcc 4 ja viele neue Compiler- und Linkeroptionen, die deutlich besseren Code bringen sollen. In der Praxis bringen sie aber meistens eins: Kaputten Code. AMD empfiehlt in seinen "Compiler using Guidelines" ja auf heftige Sachen. -O3 -march=k8 -ffast-math -fomit-frame-pointer -malign-double -mfpmath=sse -fpeel-loops -ftracer -funswitch-loops -ftree-vectorize. Damit habe ich mir mein System mit dem 4.1.1 total zerschossen. Es ist schon ziemlich daneben, einen Compiler rauszubringen, der jetzt auch im stable steht, wo man die Möglichkeit hat, mit 95% aller Einstellungen kaputten Code zu erzeugen und der auch noch schlechteren Code liefert als der Vorgänger.

Aber jetzt zu dem, was ging.

KDE mit gcc 4.1.1 und -O2 macht Ärger.
Gnome mit gcc 4.1.1 und -O2 läuft.

KDE mit gcc 4.1.1-r1 und -O2 läuft.
KDE mit gcc 4.1.1-r1 und -O3 läuft und zwar tierisch schnell (Bis auf Kaffeine, was sich nur mit -O2 übersetzen läßt).
Gnome mit gcc 4.1.1-r1 und -O3 läuft, aber eigentlich kein Unterschied zu -O2. Liegt eventuell daran, daß gtk+ -O3 nicht erlaubt.

Werde jetzt mal die von AMD empfohlenen Optionen testen.

Also es sollte eventuell am gcc etwas getan werden, daß er aussteigt und nicht so viel kaputten Code erzeugt. Wenn alle Entwickler zum gcc 4 gewechselt sind, dann entspannt sich die Situation mit den Flags wohl auch. Jedenfalls hat mir der gcc 4 bis zum Erscheinen des 4.1.1-r1 mehr Ärger als Nutzen gebracht. Wenn es erst mal soweit ist, daß mit hohen Optimierungen läuffähiger Code erzeugt wird, dann sieht die Sache nicht schlecht aus.

Was sind eure Erfahrungen mit kaputtem Code und Flags?

[Edit:] Hab jetzt mal die von AMD empfohlenen Optionen gesetzt. und dann ein emerge -e world gemacht. Ist schon bei Paket 2, gettext ausgestiegen.


Last edited by Klaus Meier on Mon Sep 25, 2006 2:18 pm; edited 1 time in total
Back to top
View user's profile Send private message
ixo
Guru
Guru


Joined: 09 Jul 2005
Posts: 375

PostPosted: Mon Sep 25, 2006 1:45 pm    Post subject: Reply with quote

Ich habe leider keine Benchmarks (vorher / nachher) gefahren, mir ist allerdings aufgefallen, dass emerge --sync jetzt sehr deutlich schneller ist: Bei Hochzählen der Prozentzahlen am Schluss hatte ich voher immer Phasen, in denen die CPU langsamer als die Festplatte war. Davon kann jetzt überhaupt nicht mehr die Rede sein.
Die Beobachtung bezieht sich auf Rechner mit Duron (800MHz), Celeron (463MHz), Athlon XP (1900MHz) und Core-Duo (1800MHz).

Negativ ist, dass auf dem Duron die Graphikkarte nicht mehr mit dem nvidia Treiber läuft (siehe https://forums.gentoo.org/viewtopic-t-501581.html).
Back to top
View user's profile Send private message
deejay
l33t
l33t


Joined: 24 Aug 2004
Posts: 983
Location: Hannover, Germany

PostPosted: Mon Sep 25, 2006 1:55 pm    Post subject: Reply with quote

Keine Probleme gehabt. Funktioniert von Anfang an alles einwandfrei.
Nutze den gcc-4.1.1 schon bevor er als stable makiert wurde. Einziges Problem ist, dass
er sich bei einem revdep-rebuild ständig selbst neu kompilieren möchte, aber das liegt an dem Useflag gcj. Ist ein Bug, welcher aber schon bekannt ist.

ixo wrote:
[...], mir ist allerdings aufgefallen, dass emerge --sync jetzt sehr deutlich schneller ist: Bei Hochzählen der Prozentzahlen [...]


Sicher, dass das am gcc liegt? Würde eher behaupten das Portage da ne ganze Ecke schneller geworden ist.

Gruß
deejay
_________________
Back to top
View user's profile Send private message
Klaus Meier
Advocate
Advocate


Joined: 18 Apr 2005
Posts: 2908
Location: Bozen

PostPosted: Mon Sep 25, 2006 2:08 pm    Post subject: Reply with quote

ixo wrote:
Ich habe leider keine Benchmarks (vorher / nachher) gefahren, mir ist allerdings aufgefallen, dass emerge --sync jetzt sehr deutlich schneller ist: Bei Hochzählen der Prozentzahlen am Schluss hatte ich voher immer Phasen, in denen die CPU langsamer als die Festplatte war. Davon kann jetzt überhaupt nicht mehr die Rede sein.
Die Beobachtung bezieht sich auf Rechner mit Duron (800MHz), Celeron (463MHz), Athlon XP (1900MHz) und Core-Duo (1800MHz).

Negativ ist, dass auf dem Duron die Graphikkarte nicht mehr mit dem nvidia Treiber läuft (siehe https://forums.gentoo.org/viewtopic-t-501581.html).

Das liegt aber nicht am gcc sondern am neuen portage. portage ist nicht in C geschrieben.
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Mon Sep 25, 2006 2:12 pm    Post subject: Reply with quote

Ich hab hier den gcc-4.1.1 laufen, seit dem er als Testing im portage steht.
Damals hatten SEHR viele Programme im stable-Zweig Probleme mit dem 4er, was sich durch Ausweichen auf Pakete im Testing-Zweig aber lösen ließ.
Ich bin sehr experimentierfreudig, hab aber noch nie mein System zerschossen, ist immer noch die erste Installation auf dem Rechner.
Alles läuft stabil und vor allem schnell...
Code:
emerge -pv =qt-3.3.6-r2
[ebuild   R   ] x11-libs/qt-3.3.6-r2  USE="cups doc examples gif ipv6 mysql odbc opengl pertty postgres risky sqlite -debug (-firebird) -immqt -immqt-bc -nas -nis -xinerama" 0 kB [7]

Portage overlays:[...]
 [7] /usr/local/layman/sabayon
sagt alles :D
Ich hasse instabile Systeme, drum kommt bei mir auch kein XGL auf den Desk (ok, seit heute experimentier ich mit den neuen nvidia-drivers + AIGLX...)

Wenn es hier zu Instabilitäten kommen sollte liegt das definitiv nicht am GCC sondern an mir :D

ALLERDINGS:
Soooo gewaltig wie bei der Einführung getan wurde sind die Geschwindigkeitsgewinne nicht (überall).
Grub allerdings war ein Hammerbeispiel:
auf x86 kam der 1-2sec nach dem BIOS, jetzt ist grub direkt auf das Verschwinden der BIOS-Infos da. War sehr überrascht ;)
KDE "schliert" nimmer so, liegt aber denkt ich an risky+pertty+kdehiddenvisibility (was allerdings auch nur mit gcc-4 geht ;))

Aber dass mein System jetzt doppelt so schnell läuft wäre eine Falschaussage.

Grüße
Franz
Back to top
View user's profile Send private message
ixo
Guru
Guru


Joined: 09 Jul 2005
Posts: 375

PostPosted: Mon Sep 25, 2006 2:27 pm    Post subject: Reply with quote

Klaus Meier wrote:
ixo wrote:
Ich habe leider keine Benchmarks (vorher / nachher) gefahren, mir ist allerdings aufgefallen, dass emerge --sync jetzt sehr deutlich schneller ist: Bei Hochzählen der Prozentzahlen am Schluss hatte ich voher immer Phasen, in denen die CPU langsamer als die Festplatte war. Davon kann jetzt überhaupt nicht mehr die Rede sein.
Die Beobachtung bezieht sich auf Rechner mit Duron (800MHz), Celeron (463MHz), Athlon XP (1900MHz) und Core-Duo (1800MHz).

Negativ ist, dass auf dem Duron die Graphikkarte nicht mehr mit dem nvidia Treiber läuft (siehe https://forums.gentoo.org/viewtopic-t-501581.html).

Das liegt aber nicht am gcc sondern am neuen portage. portage ist nicht in C geschrieben.


Kann sein, dass sich da Effekte überlagern, was ich bei den Kompilierorgien nicht mitbekommen habe. Wenn ich nicht völlig verblödet bin, ist emerge in phyton geschrieben, und das rennt durch den C-Compiler - es wäre also auch möglich, dass (Teile von) phyton schneller geworden sind.
Back to top
View user's profile Send private message
Klaus Meier
Advocate
Advocate


Joined: 18 Apr 2005
Posts: 2908
Location: Bozen

PostPosted: Mon Sep 25, 2006 2:34 pm    Post subject: Reply with quote

ixo wrote:
Klaus Meier wrote:
ixo wrote:
Ich habe leider keine Benchmarks (vorher / nachher) gefahren, mir ist allerdings aufgefallen, dass emerge --sync jetzt sehr deutlich schneller ist: Bei Hochzählen der Prozentzahlen am Schluss hatte ich voher immer Phasen, in denen die CPU langsamer als die Festplatte war. Davon kann jetzt überhaupt nicht mehr die Rede sein.
Die Beobachtung bezieht sich auf Rechner mit Duron (800MHz), Celeron (463MHz), Athlon XP (1900MHz) und Core-Duo (1800MHz).

Negativ ist, dass auf dem Duron die Graphikkarte nicht mehr mit dem nvidia Treiber läuft (siehe https://forums.gentoo.org/viewtopic-t-501581.html).

Das liegt aber nicht am gcc sondern am neuen portage. portage ist nicht in C geschrieben.


Kann sein, dass sich da Effekte überlagern, was ich bei den Kompilierorgien nicht mitbekommen habe. Wenn ich nicht völlig verblödet bin, ist emerge in phyton geschrieben, und das rennt durch den C-Compiler - es wäre also auch möglich, dass (Teile von) phyton schneller geworden sind.

Nene, es liegt daran, daß portage 2.1 im vergleich zum 2.0 deutlich beschleunigt wurde. Egal, mit welchem Compiler du das machst.
Back to top
View user's profile Send private message
Carlo
Developer
Developer


Joined: 12 Aug 2002
Posts: 3356

PostPosted: Mon Sep 25, 2006 2:46 pm    Post subject: Reply with quote

-ftracer und -ffast-math sorgen in weitaus mehr Fällen für fehlerhaften Binär-Code, als die Optimierungen irgendwelche Vorteile bringen - schlicht, weil der zugrunde liegende Quellcode dafür nicht geschrieben ist. Einen Fall, in dem -ftree-vectorize für kaputten Code gesorgt hat, meine ich gesehen zu haben und das dürfte ein Compiler-Bug gewesen sein.

Man könnte nun dahergehen und sagen, GCC ist zu buggy und die Empfehlungen von AMD gehen schlicht an der Realität vorbei. Tatsache ist aber, daß beide für Entwickler gedacht sind - und nicht für Hans, Susi und Otto Normaluser, die keine Ahnung von der Materie haben.


Wer irgendwelche Compiler-Flags verwendet, obwohl er davon keine Ahnung hat, darf sich nicht wundern, wenn's in die Hose geht.


Warum GCC 4.x und nicht GCC 3.x, wo ersterer gegenüber letzterem für den Anwender kaum Vorteile bringt!? Weil GCC 3.x von Entwicklerseite nicht mehr unterstützt wird.


Klaus Meier wrote:
KDE mit gcc 4.1.1 und -O2 macht Ärger.

Kann ich nicht nachvollziehen.
_________________
Please make sure that you have searched for an answer to a question after reading all the relevant docs.
Back to top
View user's profile Send private message
Klaus Meier
Advocate
Advocate


Joined: 18 Apr 2005
Posts: 2908
Location: Bozen

PostPosted: Mon Sep 25, 2006 3:04 pm    Post subject: Reply with quote

Deshalb habe ich diesen Thread ja auch eröffnet. Damit Kommentare kommen, was wo geht, und was nicht. Habe ich ja auch ganz am Anfang geschrieben, daß das, was bei meinem Proz ist, bei einem anderen ganz anders sein kann. Und es ging mir auch darum, wenn man in den Foren so liest, was da von sensationellen CFlags und LDFlags berichtet wurde, die so sensationellen Coder erzeugen sollen. Und bei mir kam da immer nur Mist raus. Deshalb wollte ich wissen, ob es hier jemanden gibt, der mit z.B. den von AMD empfohlenen Optionen ein System ans Laufen bekommt.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum 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