Piktogramm
Fleet Admiral
- Registriert
- Okt. 2008
- Beiträge
- 10.093
Servus,
ich suche Literaturhinweise bzw. direkte Antworten/Erfahrungen, wie sich die div. Parameter auf den GNU Compiler (und auch Andere) in der Praxis auswirken. Daher, die Dokumentation d. GNU Compiler kann ich selber lesen und auch mal 1-2 Programme selber mit div. Parameter compilieren.
Bisher habe ich das beispielsweise mit dem ursprünglichem Linpack probiert, wo zwischen einem Lauf der ohne jede Optimierung kompiliert wurde und einem Versuch mit -03 und -march=native. Das optimierte Kompilat schafft da mal eben das 7,5x an OP/s*. Nun ist Linpack mit seinen bekannten Schwächen nicht unbedingt absolut zuverlässig, aber das Ergebnis zeigt, in welche Richtung es geht.
Nun frage ich mich, wieso kompiliert man beispielsweise nicht gleich alle Programme mit -ox bzw. wenn es nicht um Portabilität geht gleich mit -march=native bzw. wann nutzt man diese Optionen? Bis auf die etwas längere Zeit zum kompilieren ist das ja verschenkte Performance/Energieeffzienz etc. pp.
PS: Ich habe schon etwas selber gesucht, aber meist sind das dann Erfahrungsberichte der Ecke Benchmarkkiddie, die man freiwillig an kein Produktivsystem heran lässt. Also doch arg unbrauchbar
*Faktor 7,5 bei einem Thread und 200x200er Array. Faktor 4 bei 10.000². Daher mit größerem Problem und auch größerem Einfluss der Anbindung zum Arbeitsspeicher wird der Unterschied kleiner, aber das ist dennoch ne ordentliche Hausnummer.
Prozessor ist ein Intel Haswell, aber auch die kleinen AMD Kabini für AM1 Sockel skalieren ähnlich ebenso der RasperryPi
ich suche Literaturhinweise bzw. direkte Antworten/Erfahrungen, wie sich die div. Parameter auf den GNU Compiler (und auch Andere) in der Praxis auswirken. Daher, die Dokumentation d. GNU Compiler kann ich selber lesen und auch mal 1-2 Programme selber mit div. Parameter compilieren.
Bisher habe ich das beispielsweise mit dem ursprünglichem Linpack probiert, wo zwischen einem Lauf der ohne jede Optimierung kompiliert wurde und einem Versuch mit -03 und -march=native. Das optimierte Kompilat schafft da mal eben das 7,5x an OP/s*. Nun ist Linpack mit seinen bekannten Schwächen nicht unbedingt absolut zuverlässig, aber das Ergebnis zeigt, in welche Richtung es geht.
Nun frage ich mich, wieso kompiliert man beispielsweise nicht gleich alle Programme mit -ox bzw. wenn es nicht um Portabilität geht gleich mit -march=native bzw. wann nutzt man diese Optionen? Bis auf die etwas längere Zeit zum kompilieren ist das ja verschenkte Performance/Energieeffzienz etc. pp.
PS: Ich habe schon etwas selber gesucht, aber meist sind das dann Erfahrungsberichte der Ecke Benchmarkkiddie, die man freiwillig an kein Produktivsystem heran lässt. Also doch arg unbrauchbar
*Faktor 7,5 bei einem Thread und 200x200er Array. Faktor 4 bei 10.000². Daher mit größerem Problem und auch größerem Einfluss der Anbindung zum Arbeitsspeicher wird der Unterschied kleiner, aber das ist dennoch ne ordentliche Hausnummer.
Prozessor ist ein Intel Haswell, aber auch die kleinen AMD Kabini für AM1 Sockel skalieren ähnlich ebenso der RasperryPi
Zuletzt bearbeitet: