Durchlauf eines Fortran-Programms - warum ist i5-2500k langsamer als i3-2310M?

torf

Lt. Junior Grade
Registriert
Feb. 2004
Beiträge
415
Hallo,

Ich arbeite im Moment mit einem sehr rechenaufwendigen Modell, welches in Fortran programmiert und dann kompiliert wurde. Für die Berechnungen mit dem Modell habe ich:
einen Laptop mit i3-2310M (@2.1Ghz)/Samsung SSD PM810/4GB DDR3
und einen Desktop mit 2500k(@3.3 Ghz)/Samsung SSD 830/8GB DDR3
zur Verfügung (beide 64bit).

Das Fortran Modell/Programm kann leider nur auf 1 Kern rechnen. Da der i3 Hyper-Theading nutzt bedeutet dass in der Praxis (nach meinem Verständnis), dass das Programm nur die Rechenkraft eines halben realen Kernes ausnutzt. (Stimmt das?) Bei dem 2500k sollte das Programm zumindes einen ganzen physischen Kern nutzen können, der auch noch schneller getaktet ist.

Jetzt Überrascht mich aber doch sehr, dass die Modelldurchläufe auf dem Laptop rund 10-20% schneller ablaufen, als auf dem Desktop..!? Wodurch könnte das Zustande kommen? Habt ihr irgendwelche Ideen?

LG, Torf
 
torf schrieb:
Da der i3 Hyper-Theading nutzt bedeutet dass in der Praxis (nach meinem Verständnis), dass das Programm nur die Rechenkraft eines halben realen Kernes ausnutzt. (Stimmt das?)

Nein, das stimmt nicht.
Er benutzt einen ganzen Kern voll.


Trotzdem müsste es auf dem i5 schneller laufen (und zwar deutlich) da die IPC eines vollverwertigen I5-Desktop-Kerns mit 3,3GHz deutlich über der eines i3-Mobile-Kerns mit 2,1GHz liegt.

Das Problem muss also irgendwo anders liegen...
Ich kenne mich mit Fortran absolut nicht aus und was nicht was wie beansprucht wird, deswegen würde ich erstmal allgemein gucken was die Leistung des i5-System beeinträchtigen könnte.
Anfangen würde ich mit Hintergrundprogrammen und Chipsatztreibern.
 
Zuletzt bearbeitet:
torf schrieb:
Hallo,
Da der i3 Hyper-Theading nutzt bedeutet dass in der Praxis (nach meinem Verständnis), dass das Programm nur die Rechenkraft eines halben realen Kernes ausnutzt. (Stimmt das?)

Nein. Ohne andere Last können 2 volle Kerne genutzt werden.


Ansonsten würde ich bei dem 2500k System mal in den Taskmanager schauen ob nicht noch andere Sachen laufen.

Wie lange dauert denn ein Durchlauf und gibt es dabei auch IO Operationen?
 
> Wodurch könnte das Zustande kommen? Habt ihr irgendwelche Ideen?

Wenn im Notebook der Ram im Dual-Channel und im PC nur im Single-Channel läuft, könnte auch eine Erklärung sein.
 
torf schrieb:
Da der i3 Hyper-Theading nutzt bedeutet dass in der Praxis (nach meinem Verständnis), dass das Programm nur die Rechenkraft eines halben realen Kernes ausnutzt. (Stimmt das?)
Hyperthreading kann die Auslastung der physischen Kerne erhöhen, indem es, im Falle des i3, dem OS 4 reale Kerne vorgaukelt. Heißt also, dass dein Programm genauso auf einem ganzen physischen Kern ausgeführt wird wie auf dem i5 2500k.

Warum es jetzt auf dem Notebook schneller läuft: ka. Kenn mich mit Programmieren gar nicht aus, aber würde vermuten, dass beim Kompilieren irgendwelche Flags (Befehlserweiterungen oder son Kram) gesetzt wurden, die dem i3 zugute kommen oder ihn nicht stören, den i5 2500er aber schon (Fortran ist ja auch nicht gerade die modernste Sprache...).
 
Zuletzt bearbeitet:
Beim Laptop wird auch ein ganzer realer Kern verwendet, wenn die "zweite Hyper-Threading Warteschlange" nicht belegt ist.

Hyper-Threading ist quasi nur eine zweite Warteschlange und die CPU kann entscheiden ob er besser einen Befehl aus Warteschlange 1 oder 2 nimmt um den realen Kern besser auszulasten.
 
Kann dir das auch nicht erklären. Aber mein i3 im Laptop (M370) ist auch irgendwie schneller als der Q6700 in der FH. Bisher dachte ich das liegt am extrem langsamen Netzwerk in der FH.
PS: Nutze Codeblocks mit dem GNU Fortran Compiler
 
keine 4hnung schrieb:
Kann dir das auch nicht erklären. Aber mein i3 im Laptop (M370) ist auch irgendwie schneller als der Q6700 in der FH. Bisher dachte ich das liegt am extrem langsamen Netzwerk in der FH.
PS: Nutze Codeblocks mit dem GNU Fortran Compiler
das könnte man auch evtl noch verstehen, da die ipc von der core2-architektur zu der core-i-architektur einen guten sprung gemacht hat.

aber bei einem i3 und einem i5 der gleichen generation kann das eigentlich nicht sein.
 
Der Laptop benutzt die Grafikkarte mit, weil du es so gut programmiert hast :freaky:
 
Ich würde zudem einmal den Compiler näher betrachten. Manchmal sind die Bibliotheken genau auf einen bestimmten Prozessortyp optimiert. Also einmal genau hier in den entsprechenden Beschreibungen nachlesen bzw. einfach einen anderen Compiler probieren.
 
Blublah schrieb:
Nein. Ohne andere Last können 2 volle Kerne genutzt werden.

..Danke, da hab ich was dazu gelernt. Dachte der i3 nutzt nur einen halben echten Kern, weil im Taskmanager des i3 25% Auslastung stand..

Blublah schrieb:
Ansonsten würde ich bei dem 2500k System mal in den Taskmanager schauen ob nicht noch andere Sachen laufen.

.. der i5- Desktop frisch aufgesetzt, da läuft nichts groß im Hintergrund.. :(


Blublah schrieb:
Wie lange dauert denn ein Durchlauf und gibt es dabei auch IO Operationen?

Ein Durchlauf dauert ca. 2min und ich habe mind. 10.000 Durchläufe. Nach jedem Durchlauf werden die Parameter geändert, aber die Zeit für Parameteränderung ist vergleichbar nach meiner Praxis-Messung (beides SSD).

chriss_msi schrieb:
> Wenn im Notebook der Ram im Dual-Channel und im PC nur im Single-Channel läuft, könnte auch eine Erklärung sein.

Im Desktop sind 4x 2GB Riegel. Das müsste also auch im Dual-Channel sein.



Vielleicht noch zum Hintergund. Nicht ich habe das Programm kompiliert, sondern ich habe auch nur die Exe bekommen. Aber das sollte professionell kompiliert sein mit dem Intel-Fortran-compiler.


Naja, schade. Wenn ihr keine heißen Tips mehr habt kann ich wohl nichts machen und muss einfach warten.

Danke nochmal
 
Im Desktop sind 4x 2GB Riegel. Das müsste also auch im Dual-Channel sein.

Was sind die genauen Eigenschaften des Speichers (Timings Takt?). Wenn einer deutlich schlechter ist als der andere könntest du mal probieren die Werte anzupassen, ob du da immer noch einen Unterschied merken würdest.

Was tut das Progamm denn überhaupt so genau?
 
.. der Speicher ist ein Kit (Corsair XMS3 4x2GB). Da sollte eigentlich alles gleich sein.

Das Programm ist ein hydrologisches Modell, welches ich für meine Diplomarbeit nutze. (Deshalb auch der Zeitdruck..) Es werden im Prinzip aus ganz vielen Text-Input Dateien für jeden Tag die Abflusswerte etc. eines hydrologischen Einzugsgebietes berechnet. Aber naja. Dauert halt leider ewig.
 
Hey,

kannst du die Durchläufe nicht in der Nacht oder übers WE auf den Rechnern des Institut laufen lassen?
 
.. leider nein. Muss zwischendurch immerwieder Feineinstellungen vornehmen. Trotzdem Danke (und gute Nacht.. :)
 
torf schrieb:
.. der i5- Desktop frisch aufgesetzt, da läuft nichts groß im Hintergrund.. :(
Deswegen nochmal die Frage bzw der Hinweis: Chipsatztreiber (richtig) installiert?

torf schrieb:
Im Desktop sind 4x 2GB Riegel. Das müsste also auch im Dual-Channel sein.
Wenn das Board 4 RAM-Slots hat müssen sie das nicht zwangsläufig... auch das würde ich überprüfen ;)
 
Für mich klingt das alles danach, als würde der Fehler beim User liegen. Unterschiedliche Programmstände kompiliert oder unterschiedliche Build-Einstellungen.
 
Zurück
Oben