[GELÖST] Mathemathische Grundoperationen auf allen Kernen der Prozessors gleichzeitig duchführen



  • Hi

    Sorry wegen dem viel zu langen Titel.
    Ich will Plus, Minus, Mal und Geteilt gleichzeitig auf allen logischen Kernen des Hauptprozessors rechnen können. Ich könnte zwar Theards nehmen, aber ich weiss nicht ob das die Kerne optimal belastet...

    Danke im Voraus...



  • Es belastet alle Kerne Optimal, insorfern du genausoviele Threads wie CPU Kerne vorhanden sind laufen lässt. Eine bessere Auslastung kannst du nur erreichen indem du ein Programm (vorhandene CPU-Kerne) mal startest und dann jedem einen Kern zuweist. (Windows Lastenverteilung entfällt). Alles weitere ist auch Betriebssystemspezifisch.



  • Danke! 👍

    Kann geclosed werden!



  • cooky451 schrieb:

    Es belastet alle Kerne Optimal, insorfern du genausoviele Threads wie CPU Kerne vorhanden sind laufen lässt. Eine bessere Auslastung kannst du nur erreichen indem du ein Programm (vorhandene CPU-Kerne) mal startest und dann jedem einen Kern zuweist. (Windows Lastenverteilung entfällt). Alles weitere ist auch Betriebssystemspezifisch.

    Was so mehr oder weniger stimmt 😉 . Ein Prozess bekommt ja immer mehr Rechenkraft zugeteilt, als ein Thread (da er ja trivialerweise zu einem Prozess gehört). Wenn Du also auf mehrere Prozesse auslagerst, solltest Du die -im Vergleich- mehr Rechenkraft zugeteilt bekommt, theoretisch. Letzenendes hängt das aber davon ab, wie das Betriebssystem die Multiprozessor- bzw. Multicodeunterstützung implementiert.



  • Wo hast du denn den Unsinn her, CodeFinder?



  • @CodeFinder:
    Das ist Quark was Du schreibst (jedenfalls im Zusammenhang mit dem Forumthema)

    Also stark vereinfacht ausgedrückt unterscheidet der Kernel nicht zwischen Prozeß und Thread was Zuweisung von Rechenzeit betrifft.

    Aber: Der wichtigste Unterschied zwischen Prozeß und Thread aus der Sicht des Kernels ist folgender:
    Macht ein User irgendeine Aktion (Mausklick, Tastatureingabe, ...), so bekommt der Prozeß mit dem aktiven Eingabefokus kurzzeitig (für einige Zuteilungen) eine etwas höhere Prozeßpriorität und damit eine Bevorzugung bei der Rechenzeit-zuteilung. Quasi eine Art kurzzeitiger Turbo-Boost.
    Das ist alles genau dokumentiert, habs aus Zeitgründen nur nicht aus dem linken Ärmel parat.

    HTH,
    Martin



  • Von welchem OS reden wir?



  • Windows!
    (egal ob die Win95- oder die WinNT-Schiene)

    Schließlich sind wir im Unterforum WinAPI.



  • Ja, davon bin ich auch ausgegangen. Naja, egal. Ich glaube, dass wir n bissl aneinander vorbei reden 😃 .

    Unter Unix werden Prozesse und Threads durch den Scheduler übrigens gleich behandelt 😉 .



  • CodeFinder schrieb:

    Unter Unix werden Prozesse und Threads durch den Scheduler übrigens gleich behandelt 😉 .

    Der Scheduler von Windows führt seine Entscheidungen strikt auf Threadbasis durch, es spielt keine Rolle, zu welchem Prozess ein Thread gehört.

    Wenn ein Prozess 10 Threads, ein Anderer 2 Threads hätte und haben alle Threads die gleiche Priorität, dann würde jeder Thread theoretisch 1/12 der CPU-Zeit für die beiden Prozesse zugewiesen bekommen. Der Scheduler würde nicht die CPU-Zeiten 50/50 auf beide Prozesse verteilen.

    Ein kurzzeitiger "Boost" wird bei einigen Ereignissen (wie Mmacher geschrieben hat) gewährt.

    Quelle: Windows Internals 5th edition, pg 391 ff



  • CodeFinder schrieb:

    Unter Unix werden Prozesse und Threads durch den Scheduler übrigens gleich behandelt 😉 .

    Wie ich schon geschrieben habe, auch unter Windows werden Prozesse und Threads durch den Scheduler gleich behandelt.
    (Wenn man den Sonderfall mit der Priority-Boost bei Benutzeraktion mal außer acht läßt)

    CodeFinder schrieb:

    Ein Prozess bekommt ja immer mehr Rechenkraft zugeteilt, als ein Thread

    Ich weiß nicht, woher Du diese m.E. falsche Information her hast? Nachweis?


Anmelden zum Antworten