Dual Core CPUs programmieren
-
Ok, das eas ganz soviele gibt dachte ich jetzt auch nicht, war jetzt vor allem mal als Reaktion zu net gedacht, der geschrieben hat, dass es unter win garkeine solchen Programme gäbe. Aber Leistungskritische Programme wie Spiele(welche man natürlich je nach Einstellung zu den weniger ernstzunehemenden Programmen zählen kann) haben im Moment allermeistens nur einen Thread.
Zarniwoop
-
Zarniwoop schrieb:
Ok, das eas ganz soviele gibt dachte ich jetzt auch nicht, war jetzt vor allem mal als Reaktion zu net gedacht, der geschrieben hat, dass es unter win garkeine solchen Programme gäbe. Aber Leistungskritische Programme wie Spiele(welche man natürlich je nach Einstellung zu den weniger ernstzunehemenden Programmen zählen kann) haben im Moment allermeistens nur einen Thread.
Zarniwoop
Im Task-Manager werden aber meistens so 10 Stück angezeigt. Aber ich hab gehört die kommen von DirectX oder den Treibern?!
-
audacia schrieb:
Zarniwoop schrieb:
Es gibt schcon ein paar Windows Multithreaded Programme, aber das sind dann nur Renderproramme oder Encodingprogramme.
So ein Unsinn. Praktisch jedes halbwegs ernstzunehmende Programm hat mehrere Threads. Oder was denkst du, wie Word die Rechtschreibungsprüfung, WinRAR die Dateikompression, DaemonTools mehrere Laufwerke, Firefox mehrere Tabs, ein Antivirenprogramm mehrere Überwachungsaufgaben, Winamp und Media Player das Musikabspielen und das User-Interface gleichzeitig, deine Entwicklungsumgebung das Nebenher-Kompilieren, CodeInsight etc. und Nero das Brennen und die Benutzerkommunikation zugleich handhaben?
Moritz
Nunja aber alle die hier genannt sind profitieren so gut wie gar nicht von einem DualCore-System weil der eine Thread die ganze CPU-Last hat und der andere das GUI.
-
ink3n schrieb:
jaja, ganz toll
hat nun einer mal eine Adresse zu einem Tut über Threading?
http://www.kharchi.de/threads.html
Muß ich demnächst nur noch mal erweitern.
-
Zarniwoop schrieb:
Aber Leistungskritische Programme wie Spiele(welche man natürlich je nach Einstellung zu den weniger ernstzunehemenden Programmen zählen kann) ...
So war das nicht gemeint
Zarniwoop schrieb:
... haben im Moment allermeistens nur einen Thread.
Sind denn Kompressionsprogramme, Compiler, Renderer, Encoder etc. keine leistungskritischen Programme?
Die einzigen ernstzunehmenden Singlethreaded-Programme, die mir momentan einfallen, sind tatsächlich nur Spiele, was allerdings nicht davon abhängt, daß sie leistungskritisch sind, sondern davon, daß der Benutzer stetig mit ihnen in Kontakt steht und nebenher kein anderes Programm benutzt (da fällt mir gerade der Intel-Typ ein, der auf der Cebit zu den Gamern meinte, mit Dual-Core-CPUs könnten sie ohne Performanceverlust zwei Spiele gleichzeitig spielen :D), und daß jede anfallende Berechnung direkt von einer Aktion des Benutzers abhängt.
Moritz
-
Bei Cinema4D (Raytracing-Software) von MAXON kenne ich es so, das man sein Rendering auf Threads aufteilen kann. Dann wird ein Bild in mehreren Threads aufgeteilt, entsprechend kann man bei 2 Threads beobachten, wie das Bild in zwei hälften aufgeteilt wird (obere und untere Hälfte). Ich glaub max. 16 Threads kann man einstellen, so das entsprechend eine Renderfarm mit 16 CPUs ausgelastet werden kann. Wer ein Board mit 2 CPUs hat, stellt dann 2 Threads ein.
Games benutzen wie gesagt bisher keine Threads (man könnte natürlich die Backgroundmusic als Thread ansehen, aber das spielt ja heute eigentlich die Sound-CPU selbst ab). Hyperthreading im P4 war ja nur die Vorbereitung für die Games-Industrie. Intel hat ja auch bei den großen Game-Publishern gefragt, ob diese etwas mit Multicore-CPUs anfangen können (stand mal bei golem.de). Ergebnis: Nö, die sind froh wenn sie die Dualcore-CPUs sinnvoll ausnutzen werden können. Bei Multicore hätten sie noch gar keine Konzepte.
-
@Artchi Besten Dank!
-
es ist viel zu schwierig ein spiele mit mehreren threads zu programmieren.
-
Spieleprogrammmierer schrieb:
es ist viel zu schwierig ein spiele mit mehreren threads zu programmieren.
ne, spieleprogrammierer sind nur zu doof dazu.
-
@net! Sehr witzig!
-
Mit Performancekritisch meinte ich Zeitkritisch, soll heißen, das Ergebnis muss innerhalb von Sekundenbruchteilen da sein.
Spiele multithreaded zu programmieren ist durchaus möglich, z.B. die Physikengine oder KI kann man auslagern.
Die Sachen die im Taskmanager alle angezeigt werden sind zum größten Teil Systemsachen oder sowas wie Virenscanner oä.
Zarniwoop
-
net schrieb:
Spieleprogrammmierer schrieb:
es ist viel zu schwierig ein spiele mit mehreren threads zu programmieren.
ne, spieleprogrammierer sind nur zu doof dazu.
-
Die Sachen die im Taskmanager alle angezeigt werden sind zum größten Teil Systemsachen oder sowas wie Virenscanner oä.
Im Task-Manager kannst du dir Anzeigen lassen wieviele Threads ein Programm am Laufen hat. Einfach die Spalte hinzufügen.
-
Hm, die meisten Programme, die ich jetzt grad im TM hab und die mehrere Threads haben, sind nicht sehr Performancehungrig und machen die meiste Zeit nichts. Sind meistens Systemsachen.
Zarniwoop
-
Spieleprogrammmierer schrieb:
es ist viel zu schwierig ein spiele mit mehreren threads zu programmieren.
Ok, das hört man immer wieder.
Ich gehe mal davon aus, dass du dich da auskennst, also: Warum eigentlich? Warum kann man Spiele nicht sehr parallel gestalten. Man hört immer so eine "semantische" Threadaufteilung, die man da haben möchte: Physik-Thread, KI-Thread usw.! Warum macht man diese Dinge nicht weiterhin sequentiell hintereinander und parallelisiert stattdessen zum Beispiel im KI-Teil selbst. Kann man da bei 10 Computergegnern nicht problemlos 10 Threads draus machen? Im Physik-Bereich sollte Parallelisierung IMHO auch keine große Sache sein. Gibt es Rechenintensive Bereiche, die gar nicht parallelisierbar sind?
-
Bestimmte Algorithmen sind nicht parallelisierbar, aber die meisten größeren Bereiche sollte man schon irgendwie aufteilen können.
-
Artchi schrieb:
@net! Sehr witzig!
du bist mal ganz ruhig. wie ich dich einschätze, benutzt du bestimmt pthreads oder boost::thread oder irgend so'n anderen aufgepfropften kram. da hätt' ich auch keine lust drauf.
-
net schrieb:
Artchi schrieb:
@net! Sehr witzig!
du bist mal ganz ruhig. wie ich dich einschätze, benutzt du bestimmt pthreads oder boost::thread oder irgend so'n anderen aufgepfropften kram. da hätt' ich auch keine lust drauf.
*lol*
-
net schrieb:
Artchi schrieb:
@net! Sehr witzig!
du bist mal ganz ruhig. wie ich dich einschätze, benutzt du bestimmt pthreads oder boost::thread oder irgend so'n anderen aufgepfropften kram. da hätt' ich auch keine lust drauf.
Wie ich Artchi einschätze, ist er äußerst kompetent. Ich gehe davon aus, dass er beim Programmieren weiß, was er macht und sich der Vor- und Nachteile seiner Entscheidungen stets bewußt ist.
-
Gregor@Home schrieb:
net schrieb:
Artchi schrieb:
@net! Sehr witzig!
du bist mal ganz ruhig. wie ich dich einschätze, benutzt du bestimmt pthreads oder boost::thread oder irgend so'n anderen aufgepfropften kram. da hätt' ich auch keine lust drauf.
Wie ich Artchi einschätze, ist er äußerst kompetent. Ich gehe davon aus, dass er beim Programmieren weiß, was er macht und sich der Vor- und Nachteile seiner Entscheidungen stets bewußt ist.
klar, deswegen schlägt er auch std::complex vor, wenn jemand mit großen Zahlen arbeiten will.