Intel C Compiler meets GNU-Software

Hallo,

experimentell versuche ich gerade auf einem Xeon ein paar Utilities, die jedes GNU/Linux so dabei hat, mit dem icc statt dem ueblichen gcc zu uebersetzen. Urspruenglich wollte ich mal wissen, ob die dann wirklich flotter sind, inzwischen habe ich meine Ansprueche auf die blosse Funktion des Kompilats zurueckgeschraubt. Ich verwende den ICC 9.0 mit gar keinen bis maessigen Optimierungsoptionen und erzeuge 32bit-Code.

Hat das schon mal jemand versucht? Ich mache da sehr unterschiedliche Beobachtungen: manche Tools lassen sich tatsaechlich problemlos uebersetzen (GNU/Screen z.B.), manche mault er schon beim Compilieren mit den wildesten Fehlern und Warnings an und dramatischerweise lassen sich einige uebersetzen, segfaulten aber bei der ersten ernsthaften Verwendung (sed, laeuft auf einen NULL). Hat da jemand aehnliches beobachtet?

Quizfrage: woran liegt’s? Dass C nicht gleich C ist, verstehe ich. Dass das GNU-Geraffel extensiv mit dem gcc getestet wird, auch. Ist es auf den gcc „optimiert“, so dass der icc einfach scheitern muss? Oder ist der icc doch noch nicht weit genug, ernsthaft C zu uebersetzen? Ansonsten habe ich bei wissenschaftlichen Applikationen mit dem icc oder auch dem ifc ganz gute Erfahrungen gemacht.

Danke im Voraus,
Gruss vom Frank.

Hallo,

Quizfrage: woran liegt’s? Dass C nicht gleich C ist, verstehe
ich. Dass das GNU-Geraffel extensiv mit dem gcc getestet
wird, auch. Ist es auf den gcc „optimiert“, so dass der icc
einfach scheitern muss?

Nein, ich denke nicht. Wenn man programmiert, schreibt man nicht ANSI-C-Code (wie das idealerweise wäre), sondern Code, den der Compiler nicht bemängelt. Eine ganz ähnliche Beobachtung kann man bei shellskripten machen: mit der bash entwickelte skripte habe ‚bashisms‘…
Ich denke, das ist ein ganz natürlicher Vorgang, der sich immer dann einstellt, wenn man nicht explizit dagegensteuert. Und wer hat schon den icc zur Verfügung… (ich hätte auf Zugriff drauf, aber ich verwende ihn nicht - ein Compiler reicht mir meist)

Oder ist der icc doch noch nicht weit
genug, ernsthaft C zu uebersetzen? Ansonsten habe ich bei
wissenschaftlichen Applikationen mit dem icc oder auch dem ifc
ganz gute Erfahrungen gemacht.

Ohne jetzt selbst Erfahrungen damit gemacht zu haben: die Intel-Compiler haben einen ziemlich guten Ruf, vor allem (aber nicht nur) bei der Optimierung.

Grüße,
Moritz

Hallo Frank,

Quizfrage: woran liegt’s? Dass C nicht gleich C ist, verstehe
ich. Dass das GNU-Geraffel extensiv mit dem gcc getestet
wird, auch. Ist es auf den gcc „optimiert“, so dass der icc
einfach scheitern muss? Oder ist der icc doch noch nicht weit
genug, ernsthaft C zu uebersetzen? Ansonsten habe ich bei
wissenschaftlichen Applikationen mit dem icc oder auch dem ifc
ganz gute Erfahrungen gemacht.

ANSI-C definiert nicht alles genau. Gerade bei den Datentypen gibt es je nach implementierung unterschiede, welche ANSI offen lässt. Diese sind aber im Compilerhandbuch unter „Implenetation specific“ aufgelistet.

Im K&H steht zu den Datentypen Integer:
Es ist nur garantiert, dass char nicht grösser als int und int nicht grösser als long ist…

Es gab Implementationen bei welchen char 9 Bit lang war und int 48-Bit hatte, je nach CPU.

Wenn man hier also annahmen macht, kann der Compiler auf die schnautze fallen.

MfG Peter(TOO)

Hallo,

Hi,

Wenn man programmiert, schreibt man nicht ANSI-C-Code (wie
das idealerweise wäre), sondern Code, den der Compiler nicht
bemängelt.

Stimmt, deshalb hab ich immer -ansi an den gcc gehangen. Naja, ich programmiere schon ein Stueckchen nicht mehr.

mit der bash entwickelte skripte habe ‚bashisms‘…

Ich bild mir auch bei meinen Shell-Skripten ein, halbwegs kompatibel zur Bourne Shell zu sein (auch wenn es die Bourne-Shell-Emulation der bash es einem da nicht gerade einfach macht).

Das heisst also, ich darf doch das OpenSource-Pack anmaulen, was sie da verbrochen haben? (Jaja, schon gut: gemault wird erst, wenn ich einen Patch mit anhaengen kann…)

Und wer hat schon den icc zur Verfügung… (ich hätte auf
Zugriff drauf, aber ich verwende ihn nicht - ein Compiler
reicht mir meist)

Na… vielleicht sollte man mehr propagieren, dass es fuer den icc fuer 32bit eine kostenlose noncommercial licence gibt…

Ohne jetzt selbst Erfahrungen damit gemacht zu haben: die
Intel-Compiler haben einen ziemlich guten Ruf, vor allem (aber
nicht nur) bei der Optimierung.

Ja, genau, deshalb wollte ich ja mal ein GNU/Linux mit dem icc testen.

Gruss vom Frank.