MSI Endanwender-Forum

Allgemeines Forum => Plauderecke => Thema gestartet von: Reat am 10. Februar 2008, 12:24:47

Titel: multicore cpu unterstützung
Beitrag von: Reat am 10. Februar 2008, 12:24:47
moin,
hab gestern mal n bissl nachgedacht......
programme müssennn ja für z.b. den dualcore betrieb geschrieben sein, damit sie ordentlich funktionieren bzw beide kerne nutzen, aber jetzt gibts ja schon 4 kern cpus und was weiß ich nicht alles, für was werden denn jetzt die spiele/ progrmme geschrieben, oder kann man  können die dieprogramme auch so schreiben dass sie jede art von cpu unterstützen? nicht dass man dann so spaß wie ich hat, wenn man cs 1.6 spielt und das programm auf beiden kernen laufen lässt, man wie mit speedhack spielt und das spielen eigentlich unmöglich wird weil man alles einfach so unglaublich schnell macht.....

mfg reat
Titel: RE: multicore cpu unterstützung
Beitrag von: jabberwoky am 11. Februar 2008, 12:41:14
programme werden für single-core oder für multi-core geschrieben. demnach ist es egal ob dann 2 bis n cores im rechner stecken und vom programm genutzt werden. eine portierung auf nur zwei kerne macht auch keinen sinn in der heutigen zeit.

das prob mit cs hat m.e. nichts mit den cores zu tun. valve unterstützt derzeit auch nur einen kern. somit kann das programm gar nicht auf zwei kernen laufen. dass alles schneller läuft muss einen anderen grund haben. ich kann mich aber auch täuschen, allerdings hätte so ein verhalten schon längst in cheaterkreisen für furore gesorgt.
Titel: multicore cpu unterstützung
Beitrag von: << dp >> am 11. Februar 2008, 15:30:23
Hm, ich hatte gestern so einen schönen Text geschrieben und dann war der Server wieder weg :wall

@jabberwoky: Doch, die Source-Engine unterstützt (IMHO in gepatchter Version) Multi-Core-CPUs.


Hier als Nachtrag:

Man schreibt Programme nicht für die Anzahl vorhandener CPU-Kerne ;)

In der Regel versucht man, einzelne Programmteile in Threads (http://de.wikipedia.org/wiki/Thread_%28Informatik%29) (einfach ausgedrückt Prozesse) aufzuteilen. Das Betriebssystem (oder man selbst) verteilt diese Prozesse dann auf die vorhandenen CPU-Kerne. Je mehr Programmteile in einzelne Prozesse ausgelagert werden, umso schneller kann ein Programm arbeiten. Wobei die Betonung auf \"kann\" liegt. Denn viele Prozesse müssen nicht unbedingt ein Garant für ein schnelles Programm sein. Das hängt letztendlich davon ab, wie gut die Entwickler die Prozesse aufeinander abgestimmt haben. Nehmen wir als Beispiel mal einen Texteditor, der in einem Prozess läuft. Schreibst du eine große Textdatei (sagen wir mal 1 Gigabyte), dann hängt der Editor in der Zeit, in der du diese Datei speichern möchtest. Denn der einzige Prozess des Editors ist mit Speichern beschäftigt. Windows quitiert sowas oft mit \"Programmname (keine Rückmeldung)\". Wäre der Editor für mehrere Prozesse ausgelegt, könnte er mit einem Prozess die Datei speichern (hat der Rechner mehrere CPU-Kerne, wäre einer davon wahrscheinlich komplett ausgelastet), mit einem anderen Prozess könnte man mit dem Editor ohne Probleme weiterarbeiten. Was bei solchen simplen Programmen noch recht einfach ist, ist bei Spielen aber sehr kompliziert. Denn Spiele sind zeitkritische Anwendungen. Soll ein Spiel auf mehrere Prozesse aufgeteilt werden, so müssen diese untereinander synchronisiert werden. Ansonsten passieren solche Sachen wie bei dir mit Counter-Strike (der Fehler bei dir hat auch etwas mit Synchronisation zu tun, glaube aber weniger, dass es an den Prozessen liegt). Man kann nicht einfach hingehen und sagen, der eine Kern versorgt die Grafikkarte mit Daten, der andere berechnet die KI, der dritte Kern berechnet Flugbahnen von Geschossen und der Vierte kümmert sich um die Netzwerkkommunikation. Natürlich kann man das so einfach sagen, nur müssen die Prozesse aufeinander abgestimmt sein - sie müssen miteinaner kommunizieren. Zum Beispiel wird die Netzwerkkommunikation immer schneller sein als die Grafikberechnung bzw. muss die Netzwerkkommunikation erst mal die Positionen und Aktionen der anderen Mitspieler feststellen, bevor der Grafikprozess die Grafikkarte mit Daten füttern kann und das aktuelle Geschehen auf den Bildschirm bringt. Aber macht es dann noch Sinn, einen Prozess auszulagern, wenn er ohnehin auf einen anderen Prozess warten muss? Nicht immer. In dem Beispiel könnte man auch die Netzwerkkommunikation mit der Grafikausgabe in einen Prozess legen und es würde wahrscheinlich keine Geschwindigkeitseinbußen geben. Warum auch? Alte Spiele liefen und laufen auch in einem Prozess ohne Probleme...

Wie du siehst, kann man zwar Programme für mehrere CPU-Kerne optimieren, aber immer sinnvoll ist es nicht bzw. gibt es speziell bei Spielen viele Probleme, da deren Prozesse in der Regel nacheinander berechnet werden wollen und nicht gleichzeitig. Aber um deine eigentliche Frage zu beantworten: Ja, Programme werden, wenn es sich lohnt, in mehrere Prozesse aufgeteilt. Die Anzahl der CPU-Kerne spielt für sie keine Rolle. Denn auch Single-Core-CPUs können mehrere Prozesse gleichzeitigt berechnen - wenn auch nicht so effektiv wie eine Multi-Core-CPU. Verwenden Programme mehrere Prozesse, so ist das Betriebssystem bemüht, diese gleichmäßig auf die CPU-Kerne aufzuteilen. Das Programm kann schneller werden, muss es aber nicht.

BTW momentan sind die Quad-Cores ja schwer im kommen. IMHO macht es zurzeit keinen Sinn, so eine CPU für einen reinen Spiele-PC zu kaufen (siehe zum Beispiel Intels Skull-Trail-System). Sicherlich sind mehrere Kerne bei mehreren Grafikkarten nicht schlecht. Nur müssen die Spiele dafür optimiert werden - das wäre übrigens der nächste Punkt: Spiele müssen nicht nur für mehrere CPU-Kerne optimiert werden, sondern auch für mehrere GPU-Kerne. Sind sie das nicht, dann werden sie trotz mehrerer GPUs sogar langsamer als mit einer GPU. Und da momentan kaum Spiele für solche Rechner optimiert wurden, macht es fast keinen Sinn, solche Hardware anzuschaffen. Alleine schon wegen der Stromkosten, ist ein schnöder Dual-Core-Rechner mit einer simplen Single-Core-Grafikkarte absolut ausreichend. Es gibt ja eh nur ein Spiel (Crysis), was so einen Rechner voll auslastet. Wobei das IMHO eher auf die schlechte Programmierung als auf die \"schlechte\" Hardware zurückzuführen ist. UT schafft es ja auch immer wieder, selbst auf älteren Rechnern gut auszusehen.

Aber jetzt komme ich vom Thema ab...

 :winke
Titel: multicore cpu unterstützung
Beitrag von: reik am 11. Februar 2008, 15:37:49
da hat einer das wort \"plauderecke\" aber echt wörtlich genommen ;)

is nich negativ gemeint.

mfg
Titel: multicore cpu unterstützung
Beitrag von: jabberwoky am 11. Februar 2008, 16:47:16
Zitat
Original von << dp >>
@jabberwoky: Doch, die Source-Engine unterstützt (IMHO in gepatchter Version) Multi-Core-CPUs.

haste mal einen link oder einen anderen verweis auf diese aussage. danke dir im voraus.  :]
Titel: multicore cpu unterstützung
Beitrag von: << dp >> am 11. Februar 2008, 17:21:43
Jup, hier die Ankündigung (http://www.golem.de/0611/48797.html) und hier gibt es einen etwas älteren Benchmark (http://www.hlportal.de/?site=news&do=shownews&news_id=5372)...

 :winke

@reik:
Joh, und das Forum hat mir einen dicken Strich durch die Rechnung gemacht ;(
Titel: multicore cpu unterstützung
Beitrag von: Reat am 11. Februar 2008, 19:05:11
achso, also hat die dualcore tauglichkeit nicht direkt was mit der \"programierung\" zu tun sonder einfach nur ob das spiel mehrere prozesse hat......

ja aber wegen counter strike, wenn ich die hlf.exe auf einen kern beschrenke läufts ganz normal, oder liegt es daran, dass das bs immer den kern wechselt auf dem die exe ausgeführt werden soll und es somit zu diesem fehler kommt......

achja und ich dnek nciht, dass das in einem cheaterforum vorkommt, das ist so etrem schnell, dass man fallschaden bekommt wenn man gegen ne wand läuft, oder was das fürn schaden ist, jedenfalls ist es unmöglich so zu spielen =)
Titel: multicore cpu unterstützung
Beitrag von: jabberwoky am 11. Februar 2008, 20:05:20
Zitat
Original von << dp >>
Jup, hier die Ankündigung (http://www.golem.de/0611/48797.html) und hier gibt es einen etwas älteren Benchmark (http://www.hlportal.de/?site=news&do=shownews&news_id=5372)...

da steht nirgendwo was, daß das bereits produktiv ist. wenn ich das alles schon hätte was valve mal angekündigt hat, dann............

meines wissens ist das nie freigschaltet worden. sprich die hl-engine läuft seit jahr und tag als single-core-applikation.
Titel: multicore cpu unterstützung
Beitrag von: << dp >> am 11. Februar 2008, 20:38:11
... naja, laut den Ankündigungen soll der Multi-Core-Support ab der \"Episode 2\", die seit Weihnachten letzten Jahres erhältich ist, verfügbar sein. Laut einigen Forenberichten benutzt die Source-Engine immer noch nur einen Kern. Allerdings gehört die Source-Engine zu den wenigen Grafik-Engines, die sehr gut auf verschiedenen Systemen skaliert. Daher finde ich es gar nicht mal so schlimm, dass sie nur einen Kern verwendet. Mir tun nur alle Kinder (und deren Eltern) leid, die sich voller Vorfreude \'nen Quad-Core gekauft haben. Ich kann mir ein Lachen nicht verkneifen *kicher* Momentan unterstützen nur sehr wenige Spiele (Crysis, Supreme Commander,  UT3, Lost Planet *glaub*) mehrere Kerne. Der Rest läuft ganz klassisch auf einem Kern. An der Synchronisation werden sich die Entwickler noch einige Zeit die Zähne ausbeißen...