CPU Auslastung und Tempo

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    CPU Auslastung und Tempo

    Ich habe das schon öfter beobachtet, und wollte mal wissen, ob ich mit meiner Annahme richtig liege.

    Gerade habe ich mit Blender Loop Tools eine größere Fläche geflattet.
    Erst hat es einige Zeit gedauert, bis die Maus busy angezeigt wurde, dann hat die
    Berechnung auch noch sehr lange gedauert.
    Darum hatte ich mal gemütlich Zeit, um im Taskmanager danach zu schauen.
    Die 6/12 Prozessoren waren gerade mal zu 12 % am Arbeiten, bei 3.3GHz
    Der Arbeitsspeicher zeigte 16 GB von noch verfügbaren 46 GB an.

    Könnte man sagen, dass ich mit 4 GHz statt 300 sec vielleicht 248 sec benötigt hätte,
    dass die Prozessoren dann halt nur zu 9% ausgelastet gewesen wären?


    Liegt das nun am Programmieren, oder am Compiler, dass nicht mehr von der
    Rechenpower verwendet wird?


    Wenn ich da an VB denke... dort habe ich ja wohl nur die Möglichkeit eine
    Berechnung auf mehrere Threads aufzuteilen. Was vielleicht auch von der Mathematik nicht immer
    möglich ist.

    Ist der Compiler in der Lage, bzw. verteilt der selbstständig die Arbeit auf die unterschiedlichen CPUs?

    Lightsource schrieb:

    Könnte man sagen, dass ich mit 4 GHz statt 300 sec vielleicht 248 sec benötigt hätte
    Jain. Die CPU ist dann dementsprechend schneller, aber die CPU ist ja nicht die einzige Komponente im PC und vor allem nicht die Langsamste. Die Programmierung mach da viel aus und auch die Art der Arbeit, die zu erledigen ist. Eine simple Addition z.B. von 2 Zahlen könnte in nur einem CPU-Zyklus abgearbeitet werden. Wenn beide Werte im Cache stecken. Muss ein Wert aus dem Ram geladen werden, dann dauert dass ca. 200 Zyklen, in denen die CPU nix machen kann. Die langweilt sich dann, bis der Ram zu Potte kommt. Ein noch schnellerer CPU würde dir hier also nicht so viel bringen wie du dir erhofft.

    Lightsource schrieb:

    Liegt das nun am Programmieren, oder am Compiler, dass nicht mehr von der
    Rechenpower verwendet wird?
    Beides. Die Frage hast du dir direkt weiter unten selbst beantwortet:

    Lightsource schrieb:

    Was vielleicht auch von der Mathematik nicht immer
    möglich ist.
    Wenn das von der Logik her nicht parallel abgearbeitet werde kann, kann man nix machen. Wenn es möglich ist, aber der Programmierer das nicht eingebaut hat, ist auch nicht besser. Es ist bei weitem nicht jeder Arbeit möglich einfach zu parallelisieren und damit den CPU immer auf 100% laufen zu lassen. Das geht einfach nicht. Der Compiler macht da nichts von allein.

    Lightsource schrieb:

    Ist der Compiler in der Lage, bzw. verteilt der selbstständig die Arbeit auf die unterschiedlichen CPUs?
    Nein. Vielleicht gibt es da eine abstrakte Hochsprache, die ich nicht kenne, aber wenn du mehrere Kerne deiner CPU für dein Programm nutzen willst, dann musst du das selber Programmieren.

    Lightsource schrieb:

    Oder gibt es da noch speziellere Möglichkeiten
    Parallel.For und Parallel.ForEach.
    Da muss aber der Code parallelisierbar sein.
    Um das zu untersuchen, musst Du schon ein paar Zeilen Kern-Code posten.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!