Jeder hier hat Benchmark-Intel C ++ - Compiler und GCC?
Ich bin mir nicht sicher, ob ich buchen soll diese Frage hier, denn dies scheint ein Programmier-orientierte website.
Sowieso, ich denke, es muss einige gurus hier, die weiß das.
Nun habe ich einen AMD Opteron server unter CentOS 5. Ich will einen compiler für eine ziemlich große c++ - Boost-Programm. Welchen compiler sollte ich wählen?
Kommentar zu dem Problem
solange der compiler läuft mit /der schnelle Wechsel und läuft auf einem intel-cpu(sollte der compiler die Ausführung auf einer intel-cpu, nicht unbedingt das kompilierte Programm), erhalten Sie einen effizienteren code insgesamt.
InformationsquelleAutor der Frage James Bond | 2009-11-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hoffe das hilft dir mehr als weh tut 🙂
Habe ich ein wenig compiler-shootout irgendwann vor über einem Jahr, und ich werde off-Speicher.
Getestet habe ich mehrere template-heavy-audio signal processing Programme, die ich geschrieben habe.
Zusammenstellung Zeiten: Der Intel-compiler war mit Abstand der langsamste compiler - mehr als 2x mal langsamer' als andere gepostet zitiert.
GCC behandelt, tief-Vorlagen sehr gut im Vergleich zu Intel.
Den Intel-compiler generiert riesige Objekt-Dateien.
GCC+LLVM ergab die kleinste binäre.
Den generierten code können erhebliche Varianz durch das Programm Bau, und wo SIMD verwendet werden könnte.
Für die Art, wie ich Schreibe, habe ich festgestellt, dass GCC + LLVM erzeugten den besten code. Für die Programme, die ich geschrieben habe, bevor ich nahm-Optimierung ernsthaft (wie ich schrieb), Intel war in der Regel besser.
Intel, die Ergebnisse vielfältig; es behandelt einige Programme viel besser, und einige Programme, die noch weit schlimmer. Es verarbeitet raw-Verarbeitung sehr gut, aber ich gebe GCC+LLVM-der Kuchen denn wenn Sie in den Kontext einer größeren (normalen) Programm... es hat besser.
Intel gewonnen, die für die out of the box, Anzahl Knirschen auf große Datenmengen.
GCC allein generiert am langsamsten code, obwohl es sein kann so schnell mit mess-und nano-Optimierungen. Ich bevorzuge es, zu vermeiden, weil der wind kann die Richtung ändern Sie mit der nächsten compiler-Version, sozusagen.
Habe ich nie gemessen, schlecht geschriebene Programme, die in dieser Prüfung (D. H. Ergebnisse besser als die Verteilungen des beliebten performance-Bibliotheken).
Schließlich wurden die Programme geschrieben, die über mehrere Jahre, mit GCC als primären compiler in dieser Zeit.
Update: ich war auch so, dass Optimierungen/Erweiterungen für Core2Duo. Die Programme waren sauber genug, um die strengen aliasing.
InformationsquelleAutor der Antwort justin
Es ist eine interessante Hier als PDF-Datei vergleicht eine Reihe von Compilern.
InformationsquelleAutor der Antwort Goz
Das MySQL-team veröffentlicht, sobald das icc gab Ihnen über einen 10% performanct boost über gcc. Ich werde versuchen, um den link zu finden.
Im Allgemeinen habe ich festgestellt, dass die 'native' Compiler besser als gcc auf Ihren jeweiligen Plattformen
edit: ich war ein wenig aus. Typische Gewinne wurden 20-30% und nicht 10%. Einige schmale Rand Fälle kam eine Verdoppelung der Leistung. http://www.mysqlperformanceblog.com/files/presentations/LinuxWorld2004-Intel.pdf
InformationsquelleAutor der Antwort Glen
Ich nehme an, es variiert je nach dem code, aber mit dem codebase-ich arbeite jetzt, ICC 11.035 gibt eine fast 2-Verbesserung über das gcc-4.4.0 auf einem Xeon 5504.
icc-Optionen:
-O2 -fno-alias
gcc-Optionen:
-O3 -msse3 -mfpmath=sse -fargument-noalias-global
Optionen sind spezifisch für die Datei mit den rechenintensiven code, wo ich weiß, gibt es kein aliasing. Single-threaded-code mit einem 5-level nested loop.
Obwohl autovectorization aktiviert ist, wird weder Compiler generieren Vektorisierung (kein Fehler des compilers)
Update (2015/02/27):
Während die Optimierung einige Geophysik code (Q2, 2013) laufen auf Sandy-Bridge-E Xeons, ich hatte die Gelegenheit, vergleichen Sie die Leistung des ICC-11.1 gegen GCC 4.8.0, und GCC war jetzt erzeugt schnelleren code als der ICC. Der code verwendet, der AVX-Interna und habe 8-Wege-Vektorgrafik-Anweisungen (nieither compiler autovectorized der code richtig, aufgrund bestimmter Daten, die layout-Vorgaben). Darüber hinaus GCC LTO-Implementierung (mit der IR-core-eingebettet in die .o-Dateien) war viel einfacher zu verwalten als in ICC. GCC mit LTO lief ungefähr 3-mal schneller als ICC-ohne LTO. Ich bin nicht in der Lage zu finden, die zahlen jetzt für GCC ohne LTO, aber ich erinnere mich, es war immer noch schneller als das ICC. Es ist keineswegs eine Allgemeine Aussage, die auf ICC-Leistung, aber die Ergebnisse waren für uns genug zu gehen, mit GCC-4.8.*.
Freuen uns auf GCC 5.0 (http://www.phoronix.com/scan.php?page=article&item=gcc-50-broadwell)!
InformationsquelleAutor der Antwort Gautham Ganapathy
Verwenden wir die Intel-compiler auf unser Produkt (DB2), die auf Linux-und Windows-IA32/AMD64, und auf OS-X (d.h. alle unsere Intel-Plattform ports außer SunAMD).
Ich weiß nicht, die zahlen, aber die Leistung ist gut genug, dass wir:
InformationsquelleAutor der Antwort Peeter Joot
PHP - Zusammenstellung von der Quelle, mit ICC statt GCC, sollte 10 % bis 20 % Geschwindigkeit improvment - http://www.papelipe.no/tags/ez_publish/benchmark_of_intel_compiled_icc_apache_php_and_apc
MySQL - Zusammenstellung von der Quelle, mit ICC statt GCC, sollte im Ergebnis eine 25% - 50% Geschwindigkeit improvment - http://www.mysqlperformanceblog.com/files/presentations/LinuxWorld2005-Intel.pdf
InformationsquelleAutor der Antwort Denis TRUFFAUT
Ich verwendet, um arbeiten an einem ziemlich großen signal-processing-system lief auf einem großen cluster. Wir verwendet, um zu rechnen, für schwere Mathe Knirschen, der Intel-compiler hat uns zu 10% weniger CPU-Last als GCC. Das ist sehr unwissenschaftlich, aber es war unsere Erfahrung (das war vor etwa 18 Monaten).
Was interessant gewesen wäre ist, wenn wir in der Lage gewesen wäre, die Intel math-Bibliotheken sowie die Nutzung Ihres Chipsatzes effizienter zu gestalten.
InformationsquelleAutor der Antwort Benj
Ich verwendet UnixBench (v. 5.1.3) auf einer openSUSE 12.2 (kernel 3.4.33-2.24-default x86_64) und kompiliert es mit GCC, und dann mit dem Intel compiler.
Mit 1 parallel-Kopie, UnixBench kompiliert mit Intel ' s ist etwa 20% schneller als die version, kompiliert mit GCC.
Doch dies birgt riesige Unterschiede. Dhrystone ist etwa 25% langsamer mit dem Intel-compiler, während der Schleifstein läuft 2x schneller.
Mit 4 Kopien von UnixBench laufen parallel, die Verbesserung der Intel-compiler über das GCC ist nur 7%. Wieder Intel ist viel besser als bei Wetzstein (> 200%), und auch langsamer beim Dhrystone (über 20%).
InformationsquelleAutor der Antwort Calimo
Viele Optimierungen, die der Intel-compiler führt routinemäßig erfordern spezifische Quelle syntax und die Verwendung von -O3 -ffast-math für gcc. Leider, die -funsafe-math-optimizations-Komponente -ffast-math -O3 -march=native, hat sich als inkompatibel mit -fopenmp, also muss ich spaltete meine source-Dateien, die in Gruppen mit den verschiedenen Optionen im Makefile. Heute lief ich in einen Fehler, wo ein g++ build-mit -O3 -ffast-math -fopenmp -march=native war in der Lage zu schreiben, auf dem Bildschirm, aber nicht umleiten in eine Datei.
Eine der krassesten Unterschiede sind meiner Meinung nach die Optimierung von icpc nur von std::max und min, wo gcc/g++ wollen die fmax|min[f] mit -ffast-math ändern Ihre Bedeutung Weg vom standard.
InformationsquelleAutor der Antwort tim18