# [OT] Intel Compiler

## sirro

Intel bietet ja jetzt ihren neuen Compiler zum kostenlosen Download für private Nutzung an [1].

Da ich mal gehört habe, dass der Compiler (bzw. eine ältere Version) auch was auf einem AMD bringen kann, wollte ich hier einfach mal kurz nachfragen ob da schon jemand Erfahrungen mit gemacht hat.

Bringt das Teil wirklich was oder ist das ne Urban Legend?

[1] http://www.intel.com/software/products/compilers/clin/noncom.htm

----------

## Karaca

Es gab mal zwei Artikeln in c't. Dortige Benchmarks bewiesen, dass zwischen 5 und fast 30(!) prozent drinne sein könnte (gegenüber gcc, P4).

Der Haken dabei ist: nicht jede Open Source Software lasst sich damit kompilieren. Besonders KERNEL und KDE nicht   :Sad: 

Damit war damals die Sache erledigt. Vielleicht hat Intel inzwischen was verbessert und jetzt lauft alles prima. Kann ich aber momentan nichts sagen ...

Tee trinken und auf nächste Artikel in c't warten   :Smile: 

Grüsse

----------

## MaJor_PerMutation

Einem Compiler, in dessen manual so etwas steht, traue ich nicht.  :Wink: 

http://www.intel.com/software/products/compilers/clin/docs/ug/linux82a.htm

Pentium-M != Pentium4...aber gerade Intel sollte das wissen.   :Shocked: 

----------

## Inte

 *MaJor_PerMutation wrote:*   

> Pentium-M != Pentium4...aber gerade Intel sollte das wissen.  

 

Hab auch erst gestutzt, aber eine einfache Verwechslung ist es nicht (sind ja beide aufgeführt).

 :Idea:  Vielleicht ist das ein Wink mit dem Zaunpfahl, das -march=pentium4 für den Pentium M empfohlen wird.

Gruß, Inte.

----------

## thodi

 *Karaca wrote:*   

> 
> 
> Der Haken dabei ist: nicht jede Open Source Software lasst sich damit kompilieren. Besonders KERNEL und KDE nicht  
> 
> 

 

... was aber in der Regel kein Intel-Problem ist, da sich viel freie Software auf gcc-eigene Feature verlässt. ANSI C und C++ sollten kein Problem darstellen.

Ich habe gute Erfahrungen mit dem icc gemacht, insbesondere was Warnungen und Optimierungen betrifft -- zu AMD kann ich aber auch nichts sagen.

----------

## Empire

Bringt mir das Teil eigentlich auch auf einem alten P3 eine Leistunssteigerung?

----------

## sirro

 *thodi wrote:*   

> ... was aber in der Regel kein Intel-Problem ist, da sich viel freie Software auf gcc-eigene Feature verlässt. ANSI C und C++ sollten kein Problem darstellen.

 

Unter [1] gibt es ein pdf von Intel zum Thema "Compatibility with GNU Compilers"

 *Empire wrote:*   

> Bringt mir das Teil eigentlich auch auf einem alten P3 eine Leistunssteigerung?

 

Am besten ein bißchen mit den CFLAGS spielen und ausprobieren. In der Intel-Vergleichsliste [2] ist an sowas natürlich nicht gedacht worden.

[1] ftp://download.intel.com/software/products/compilers/techtopics/linuxcompilerscompatibility702.pdf

[2] http://www.intel.com/software/products/compilers/techtopics/compiler_gnu_perf.pdf

----------

## HelloWorld82

Ich hatte gelesen, dass der ICC um einieges schneller sein *kann*, und zwar auch auf AMD's in der version 7.1 (soll ich mein duron 900 als pentium 3 dann kompilieren???). Ich schaetze, dass er jetzt nur schneller geworden ist. 

Ausserdem soll die version 8, die heute erschienen ist viel kompatibler sein. Hat hier jemand schon den kernel damit kompiliert ? Und wie steht's mit dem 2.6 kernel ? erzaehlt mir mal eure erfahrung!

----------

## Nightwish

 *Karaca wrote:*   

> Es gab mal zwei Artikeln in c't. Dortige Benchmarks bewiesen, dass zwischen 5 und fast 30(!) prozent drinne sein könnte (gegenüber gcc, P4).

 

Jep, aber solche benchmarks sind sehr speziell und wirken sich oftmals gar nicht auf sogenannte "Standardanwendungen" aus.

 *Quote:*   

> Der Haken dabei ist: nicht jede Open Source Software lasst sich damit kompilieren. Besonders KERNEL und KDE nicht   

 

Beim Kernel würde es ohnehin nichts bringen, es stünde sogar zu befürchten, dass ein hochoptimierender compiler Verschlechterungen mit sich bringen könnte, da der ICC bei hohen Optimierungsstufen den code nicht unwesentlich aufbläht.

Der kernelcode ist an vielen Stellen händisch optimiert und für verschiedene CPU-Typen angepasst. Man sollte mal davon ausgehen, dass die Kernelentwickler wissen was sie tun und wie man effizienten code schreibt.

gcc -O2 reicht dafür im allgemeinen.

Vor Jahren habe ich mal diverse tests mit verschiedenen Optimierungseinstellungen bei der Übersetzung des FreeBSD Kernels gemacht - Ergebnis war wie erwartet: Die Standardeinstellungen brachten die besten Resultate.

Sinn ergibt die Verwendung des ICC bei wirklich *rechen*intensiven Anwendungen.

Bei KDE ist es ähnlich - die paar % die der ICC in manchen Situtationen aus dem code rausholen *kann* verliert man an anderer Stelle wieder durch die aufgeblähten binaries. Die wahren Probleme (wie z.b. die durch das runtime-linken von Umfangreichen libraries verursachten Ladezeiten von großen Anwendungen) bringt man damit auch nicht unter Kontrolle.

Dafür gibt es z.b. prelink  :Smile: 

----------

## florianr

Hat denn jemand schon Erfahrungen mit dem Intelcompiler gemacht?

Und kann jemand vielleicht Tips geben, wie der Compiler in gentoo integriert werden kann? 

Wenn das stimmt, was in der CT über die Performance Steigerung steht, könnte es sich ja für manche Anwendung lohnen.

Was den Kernel betrifft, stimme ich zu, dabi dürfte es nicht allzuviel bringen, da hier ja schon der Quellcode für verschiedene Intelprozessoren optimiert ist.

Gruß Florian

----------

## gaelic

in den use-flags icc angeben.

----------

## thodi

 *gaelic_cargal wrote:*   

> in den use-flags icc angeben.

 

Bringt das eigentlich wirklich was? Bei mir wurde noch nie irgendein Paket daraufhin mit dem icc kompiliert.

----------

## sirro

 *thodi wrote:*   

> Bringt das eigentlich wirklich was? Bei mir wurde noch nie irgendein Paket daraufhin mit dem icc kompiliert.

 

Das Paket muss den icc natürlich auch unterstützen, sonst bringt das ganze herzlich wenig...

Hier mal alle ebuilds mit in denen das wörtchen icc _vorkommt_. Die Auswahl scheint also extrem klein zu sein!

```
$ grep -R -m 1 icc /usr/portage/*-* | cut -d':' -f1 | grep .ebuild

/usr/portage/app-arch/zip/zip-2.3-r2.ebuild

/usr/portage/app-misc/spicctrl/spicctrl-1.6.ebuild

/usr/portage/dev-games/physfs/physfs-0.1.9.ebuild

/usr/portage/dev-lang/icc/icc-7.1.029.ebuild

/usr/portage/dev-lang/icc/icc-7.1.006.ebuild

/usr/portage/dev-lang/icc/icc-6.0-r1.ebuild

/usr/portage/dev-lang/icc/icc-7.0.065-r1.ebuild

/usr/portage/dev-lang/icc/icc-7.1.030.ebuild

/usr/portage/dev-lang/icc/icc-6.0.ebuild

/usr/portage/dev-lang/icc/icc-7.0.065-r2.ebuild

/usr/portage/dev-lang/icc/icc-7.0.065.ebuild

/usr/portage/dev-lang/ifc/ifc-7.0.064.ebuild

/usr/portage/dev-lang/ifc/ifc-6.0.ebuild

/usr/portage/dev-lang/ifc/ifc-7.0.064-r1.ebuild

/usr/portage/dev-libs/blitz/blitz-0.6.ebuild

/usr/portage/dev-libs/boost/boost-1.31.0_alpha1.ebuild

/usr/portage/dev-libs/boost/boost-1.30.0.ebuild

/usr/portage/dev-libs/boost/boost-1.31.0_alpha2.ebuild

/usr/portage/dev-libs/boost/boost-1.30.2.ebuild

/usr/portage/dev-libs/cgicc/cgicc-3.2.1.ebuild

/usr/portage/games-action/d2x/d2x-0.2.5.ebuild

/usr/portage/games-action/orbital-eunuchs-sniper/orbital-eunuchs-sniper-1.29.ebuild

/usr/portage/games-arcade/pydance/pydance-0.8.2.ebuild

/usr/portage/games-arcade/pydance/pydance-0.8.1-r1.ebuild

/usr/portage/games-arcade/pydance/pydance-0.8.4.ebuild

/usr/portage/games-arcade/pydance/pydance-0.8.1.ebuild

/usr/portage/games-arcade/ddrmat/ddrmat-0.9.ebuild

/usr/portage/games-arcade/excido/excido-0.1.2.ebuild

/usr/portage/games-arcade/excido/excido-0.1.3.ebuild

/usr/portage/games-arcade/pydance-songs/pydance-songs-20030926.ebuild

/usr/portage/games-arcade/pydance-songs/pydance-songs-20040111.ebuild

/usr/portage/games-board/crafty/crafty-19.8.ebuild

/usr/portage/games-board/crafty/crafty-19.1.ebuild

/usr/portage/games-emulation/xmame/xmame-0.77.1.ebuild

/usr/portage/games-emulation/xmame/xmame-0.78.1.ebuild

/usr/portage/games-emulation/xmess/xmess-0.78.1.ebuild

/usr/portage/games-emulation/xmess/xmess-0.77.1.ebuild

/usr/portage/games-emulation/virtualjaguar/virtualjaguar-1.0.6.ebuild

/usr/portage/games-emulation/virtualjaguar/virtualjaguar-1.0.5.ebuild

/usr/portage/games-fps/blackshades-cvs/blackshades-cvs-20031110.ebuild

/usr/portage/games-fps/aaut/aaut-1.ebuild

/usr/portage/games-fps/rott/rott-1.0.ebuild

/usr/portage/games-fps/duke3d/duke3d-20030817-r1.ebuild

/usr/portage/games-fps/quake2-icculus/quake2-icculus-0.15-r1.ebuild

/usr/portage/games-fps/unreal/unreal-226.ebuild

/usr/portage/games-fps/avp-cvs/avp-cvs-20031110.ebuild

/usr/portage/games-puzzle/magiccube4d/magiccube4d-2.2.ebuild

/usr/portage/games-puzzle/neverball/neverball-0.25.11.ebuild

/usr/portage/games-puzzle/neverputt/neverputt-0.18.3.ebuild

/usr/portage/games-puzzle/neverputt/neverputt-0.18.2.ebuild

/usr/portage/games-rpg/gwiz/gwiz-0.8.ebuild

/usr/portage/media-gfx/lprof/lprof-1.09.ebuild

/usr/portage/media-gfx/povray/povray-3.1g-r5.ebuild

/usr/portage/media-gfx/povray/povray-3.50c.ebuild

/usr/portage/media-libs/sdl-sound/sdl-sound-1.0.0.ebuild

/usr/portage/media-libs/sdl-sound/sdl-sound-0.1.5.ebuild

/usr/portage/media-libs/sdl-sound/sdl-sound-1.0.1.ebuild

/usr/portage/sys-apps/pcsc-lite/pcsc-lite-1.1.1.ebuild

/usr/portage/sys-cluster/mpich/mpich-1.2.5-r1.ebuild

/usr/portage/sys-cluster/mpich/mpich-1.2.5.2.ebuild

/usr/portage/sys-devel/bison/bison-1.75.ebuild

/usr/portage/sys-devel/bison/bison-1.875.ebuild

/usr/portage/sys-devel/bison/bison-1.35.ebuild

/usr/portage/x11-libs/qt/qt-3.3.0_beta1.ebuild

/usr/portage/x11-misc/xscreensaver/xscreensaver-4.14-r1.ebuild

/usr/portage/x11-misc/docker/docker-1.3-r1.ebuild

/usr/portage/x11-misc/docker/docker-1.5.ebuild

/usr/portage/x11-misc/obconf/obconf-1.5.ebuild

/usr/portage/x11-misc/obconf/obconf-1.5-r1.ebuild

/usr/portage/x11-themes/gtk-engines-magicchicken/gtk-engines-magicchicken-1.1.1.ebuild

/usr/portage/x11-themes/gtk-themes/gtk-themes-2.0-r2.ebuild

/usr/portage/x11-themes/gtk-themes/gtk-themes-2.0-r1.ebuild

/usr/portage/x11-wm/openbox/openbox-2.1.3-r4.ebuild

/usr/portage/x11-wm/openbox/openbox-3.0-r1.ebuild

/usr/portage/x11-wm/openbox/openbox-2.3.0.ebuild

/usr/portage/x11-wm/openbox/openbox-3.1.ebuild

/usr/portage/x11-wm/openbox/openbox-3.0.ebuild

/usr/portage/x11-wm/openbox/openbox-2.3.1.ebuild
```

----------

