Wie geht das? "Anwendungen für Multi-Core optimiert"
-
Hi ich höre immer wieder von Games, etc. die optimiert für Multi-Core-Prozessoren sind aber wie macht man sowas?

Meine bisherige Theorie ist Multi-Threading.
Könnt ihr mich bestätigen oder ist das ganze komplizierter als erwartet. Es wird ja ziehmlich an die große Glocke gehängt.Wäre nett wenn jemand 'n bisschen Code hätte

ooO /""\ /""\ Ooo
\,/ ooO Ooo \,/
-
Genau, einfach ein paar Threads erstellen und möglichst gleich auslasten

-
Na wenns so einfach ist warum der ganze Wirbel drumrum???
Also n bissl Multi-Threading und mein Programm wird der Hammer :pooO /""\ /""\ Ooo
\,/ ooO Ooo \,/
-
Kannst ja hier im Forum schon einmal üben: Einfach mehrere Threads erstellen und gleichmäßig auslasten.

-
Hi,
wenn ich ehrlich bin finde ich es schwieriger nicht Multicore zu programmieren...
Denn man hat je schnell mal ne Funktion oder sonstwas was parallel laufen muss oder in irgendeiner form blockierte. Ich frag mich wie das die Spielentwickler bisher geschafft habe alles in einem Prozess zu machen.Ich hab auch irgendwo mal gelesen das es in VS 2005 + Patch / VS 2008 eine Kompiler Option gibt, die ein Programm Multicore optimiert. Is da was dran? Bzw wo finde ich so eine Liste mit Optionen, es soll ja auch möglich sein für bestimmte Prozessorhersteller (AMD / Intel) zu Optimieren.
Und zuguter letzt gibt es das auch unter Linux für den gcc? :p
-
Also gleichmäßig auf alle Cores verteilen geht bei Intel am besten mit den
"Threading Building Blocks"! Einfach mal nach google'n!
-
Mitbewohner schrieb:
Hi,
wenn ich ehrlich bin finde ich es schwieriger nicht Multicore zu programmieren...

Hast du jemals wirklich mit mehreren Threads gearbeitet? Mit Threads, die ständig auf den gleichen Datenbestand zugreifen und deshalb synchronisiert werden müssen? Wenn ich mir den ganzen Mist wie Race Conditions und Deadlocks ansehe, dann weiß ich ziemlich sicher, dass Single-Threaded einfacher ist. Zumindest meiner Erfahrung nach.Würde mich ehrlich interessieren, warum du da scheinbar anders denkst.
gruß
mad_martin
-
Unregistrierter schrieb:
Könnt ihr mich bestätigen oder ist das ganze komplizierter als erwartet. Es wird ja ziehmlich an die große Glocke gehängt.
Ja, multi-core (korrekt ist es multi-threaded) optimierte Software ist grundsätzlich komplizierter zu entwickeln als solche mit single-thread Standard. Allerdings ist das eher pauschal aufzufassen.
Es gibt tatsächlich einige (eher wenige) Situationen, wo eine multi-threaded Lösung eleganter umgesetzt werden kann, als aufwendig innerhab einer single-threaded rumzumurksen. Z.B. den Datenstrom von einer seriellen Schnittstelle mitloggen.Bei den aktuellen 3D-Spielen wird beispielsweise versucht, die Berechnung der vielen Objekte (Figuren, Fahrzeuge, Landschaften, Pflanzen, et cetera ...) auf mehrere Threads aufzuteilen um so die Quad-Cores optimal ausreizen zu können.
Das ist es was die Hard-Core-Gamer von den Top-Spielen auf ihren teuer bezahlten Multi-Core-CPUs erwarten.
Dabei muß der Entwickler höllisch aufpassen daß die Timings zwischen den Objekten stimmen usw. (Fahrzeug ist schon weitergefahren, aber der Baum steht immer noch im Weg
Übrigens: "Multi-Core" betrifft nur die CPU und meint nicht die Software, dort spricht man von "multi-threaded". Denn: Multi-threaded Software läuft sehr wohl auch auf Single-Core-CPU! Aber in der Werbung klingt "Quad-Core" oder "Multi-Core" nun mal besser

Martin
-
Mitbewohner schrieb:
Ich hab auch irgendwo mal gelesen das es in VS 2005 + Patch / VS 2008 eine Kompiler Option gibt, die ein Programm Multicore optimiert.
Wenn Du eine Applikation multi-threaded entwickelst, muß Du dem Compiler (Linker) über den Schalter /MT mitteilen, daß er MT-taugliche CRT-Library einbinden soll.
(Bin davon ausgegangen, daß 95% aller C-Applikationen die CRT-Bibliothek benötigen, für VB und andere Sprachen gibt es sicher ähnliche Optionen)Diese Linker-Option gab es schon spätestens seit Visual Studio 6!
Martin