Multi-Core GHz Threads Intel Ultra?

Mirlo schrieb:
Leider gibt es noch einige und sehr gute Single-Core Progs. Das ist dann schon sehr heftig, wenn die nur 1 von 24 nutzen. Irgendwie auch absurd.

Hast Du da mal Beispiele? Nur weil die Programmierer Deiner "Lieblingstools" nicht aus den puschen kommen, ist die Entwicklung bei den CPUs nicht schlecht.

Du kannst auch einfach Dein Tool x mal starten. Dann arbeitet es auch parallel.
 
  • Gefällt mir
Reaktionen: ILoveShooter132 und Alexander2
Läuft das Tool überhaupt irgendwie zu langsam mit nur Nutzung von einem Kern? es macht auch einfach nicht für jedes Programm Sinn die Mühe zu betreiben!

Programmieren von Programmen, die Aufgaben parallel verarbeiten ist nicht einfach mit einem Fingeschnippen gemacht.
 
Mirlo schrieb:
Aber zurück zur Frage der Addierung: Also kann ein 16 Core 3GHz "annähernd" 4x soviel wie ein 4 Core 3GHz (bei Multi-Core Progs im Batch)?
4 Core = Batch: 4 Befehle parallel
16 Core = Batch: 16 Befehle parallel
also 4x schneller?

Wenn es zu 100% skaliert und kein TDP-Limit limitiert, natürlich.
 
BlubbsDE schrieb:
Du kannst auch einfach Dein Tool x mal starten. Dann arbeitet es auch parallel.
Das ist ... schwierig. Weil, manche Arbeitsprozesse müssen mit Progs nacheinander erledigt werden. Zum Beispiel müssen alle Grafiken zuerst per Grafikbearbeitung in Grafikprogramm bearbeitet und als neue Dateien gespeichert werden, bevor das nächste Programm die EXIF-Infos in diesen neu gespeicherten Dateien bearbeiten kann. Das geht nicht parallel. 2 verschiedene Progs. Das eine muss erst auf die neu erstellten Dateien warten.

Single-Core-Progs Beispiel:
  • IrfanView (wird von mir mit Batch verwendet)
  • exiftool (command line tool).
  • Flowblade (einfaches Video-Rendering. Gibt da aber auch Batch-Liste, wurde von mir noch nicht verwendet.)
Insbesondere bei IrfanView wäre 24x schneller absolut genial, aber is nich. Stattdessen nur 1 von 24 Cores sehr absurd. Leider.
Ergänzung ()

Vermutlich ist es so, dass Multicore-Prozessoren bei Grafik- und Videobearbeitung keinen Mehrwert haben, außer wenn mit Batch gearbeitet wird, also die Aufgaben nicht gleich erledigt, sondern in eine Batch-Liste gepackt und möglichst mittels Multicore abgearbeitet werden. Multicore nützt nichts bei einer sofortigen sehr aufwendigen Bearbeitung einer einzelnen Grafik. Wenn Filter und Effekte in einer bestimmten Reihenfolge nacheinander angewendet werden müssen, dann können diese nicht parallel eledigt werden. Somit sind Multicore bei Grafik- und Videobearbeitung oft absurd, weil eh nur 1 Core verwendet wird. Bei 24 Core extrem absurd.
 
Zuletzt bearbeitet:
Mirlo schrieb:
Vermutlich ist es so, dass Multicore-Prozessoren bei Grafik- und Videobearbeitung keinen Mehrwert haben, außer wenn mit Batch gearbeitet wird, also die Aufgaben nicht gleich erledigt, sondern in eine Batch-Liste gepackt und möglichst mittels Multicore abgearbeitet werden. Multicore nützt nichts bei einer sofortigen sehr aufwendigen Bearbeitung einer einzelnen Grafik. Wenn Filter und Effekte in einer bestimmten Reihenfolge nacheinander angewendet werden müssen, dann können diese nicht parallel eledigt werden. Somit sind Multicore bei Grafik- und Videobearbeitung oft absurd, weil eh nur 1 Core verwendet wird. Bei 24 Core extrem absurd.

Ist das dein Ernst? Gerade Videobearbeitung ist doch ein Paradebeispiel für Multicore-Performance. Auch Bildbearbeitung profitiert von mehr Kernen. Allgemein kann man sagen, dass die meisten Anwendungen gut parallelisierbar sind. Problematisch ist es z.B. eher bei Games. Da machen 1-2 Kerne richtig viel und alles ab Kern 7-8 ist fast egal.
Ergänzung ()

Mirlo schrieb:
Single-Core-Progs Beispiel:
  • IrfanView (wird von mir mit Batch verwendet)

Dann benutze eher ein Programm, was ordentlich für Multicore optimiert wurde: XnView MP, FastStone Image Viewer oder Photoshop...
 
  • Gefällt mir
Reaktionen: Alexander2, ILoveShooter132 und Wo bin ich hier
Ayo34 schrieb:
Gerade Videobearbeitung ist doch ein Paradebeispiel für Multicore-Performance.
Mir ist dieser Vorteil nur mittels Verwendung von Batch bekannt. Das heißt, bei der Videobearbeitung wird das zu erstellende Video in mehrere Abschnitte aufgeteilt. Dann wird pro Abschnitt bearbeitet, indem Filter und Effekte draufgelegt werden. Aber, es wird nicht sofort gerendet und auch nicht das gesamte Video auf einmal, sondern jeder Abschnitt wird in die Batch geladen. Am Ende wird die Batch - am besten Multi-Core - gerendert, womit mehrere Bearbeitungen parallel erledigt werden. Das läuft dann meist über Nacht. Bei kleinen Videos wird meist das gesamte Video auf einmal bearbeitet und gerendert. Da nützt Multicore nichts, weil es nur 1 Befehl ist.

Bei Grafik ist es ähnlich. Filter und Effekte werden sofort angewandt und rendern sofort. Da wird nicht gewartet bis zum nächsten um beide parallel anzuwenden. Filter und Effekte müssen meistens nacheinander und nicht zugleich angewandt werden, weil sonst Chaos. Also nützt Multicore nichts, bzw. nur, wenn mehrere Grafiken per Batch abgearbeitet werden. Oder die Progs können (im Hintergrund) eine Grafik in verschiedene Abschnitte aufteilen und so per Multicore bearbeiten - quasi jeden Pixelcluster (bei zB 4x4) separat. Das weiß ich nicht. Bei manchen Filtern und Effekten wird das aber nicht funktionieren, weil die sozusagen linear sind und nicht aufgesplittet werden können.
Ergänzung ()

Ayo34 schrieb:
Dann benutze eher ein Programm, was ordentlich für Multicore optimiert wurde
Darum geht es hier nicht, sondern ob zB 24 Core CPUs bei Single-Core-Progs sinnvoll sind.
 
Zuletzt bearbeitet:
Mirlo schrieb:
Darum geht es hier nicht, sondern ob zB 24 Core CPUs bei Single-Core-Progs sinnvoll sind.
Das ist doch längst gelöst und geklärt. Natürlich nicht. Wenn ein Programm ein Kern nutzen kann, dann ist der zweite Kern schon überflüssig.

Und wenn du Premiere Pro, Photoshop, After Effects und Co. mal mit einem Kern und einmal mit 20 Kernen ausführst, dann du siehst du einen gigantischen Unterschied. Schaue dir eben einfach mal Multicore Benchmarks an. Da sind aktuelle 8 Kerner immer deutlich hinter 16-24 Kernern. Gerade auch bei Videobearbeitung.
 
  • Gefällt mir
Reaktionen: ILoveShooter132 und Skudrinka
Mirlo schrieb:
Darum geht es hier nicht, sondern ob zB 24 Core CPUs bei Single-Core-Progs sinnvoll sind.
Wenn man es auf diese Frage herunterricht: nein. Es ist trotzdem sinnvoll mehr als ein Kern zu haben, damit, wenn auf Kern 1 die "Haup"aufgabe abgearbeitet wird, auf Kern 2 bis X Betriebssystem, Hintergrundprozess und sonstige Aufgaben abgearbeitet werden können. Das hat aber auch einen abnehmenden Grenznutzen.
 
  • Gefällt mir
Reaktionen: iSight2TheBlind
Mirlo schrieb:
Single-Core-Progs Beispiel:
  • IrfanView
  • Flowblade
Wie kommst du darauf, dass das reine Single-Core-Progs wären?

Wenn ich in IrfanView ein Bild skaliere, nutzt es alle Cores/Threads:
1740322430760.png


Flowblade verwendet FFmpeg - und das ist auch alles andere als "Single-Core".

Das Multithreading passiert (wie du ja schon vermutet hast) auf einer deutlich kleineren Ebene:
Oder die Progs können (im Hintergrund) eine Grafik in verschiedene Abschnitte aufteilen und so per Multicore bearbeiten - quasi jeden Pixelcluster (bei zB 4x4) separat. Das weiß ich nicht.
 
  • Gefällt mir
Reaktionen: ILoveShooter132 und Mirlo
...und wenn dein Workflow tatsächlich nicht von mehreren Kernen profitiert, dann kannst du auch beruhigt einen Vierkerner nutzen. So simpel ist das.
 
  • Gefällt mir
Reaktionen: ILoveShooter132
OK, dann verlassen wir die Diskussion um Single-Core-Progs und gehen hin zu Multi-Core-Progs, insbesondere bei Grafik (Bild, Video).

Im Grunde geht es um "command lines". Also Befehlszeilen. Die laufen bei GUI-Progs im Hintergrund.
Code:
convert input.png -resize 512x512 output.png
Manchmal ist es notwendig, dass Befehle nicht zugleich, sondern nacheinander abgearbeitet werden müssen. Zum Beispiel erst Blur und dann Contrast. Da muss die Reihenfolge eingehalten werden, weil zuerst Contrast und danach Blur möglich ein anderes Ergebnis ergibt (nur ein simples Beispiel). Diese Befehle können also nicht parallel abgearbeitet werden, aber ...

Bei Multicore wird es wohl so sein, dass eine Grafik / ein Frame in seine Einzelteile (Pixel, bzw. Pixelcluster) aufgeteilt und bearbeitet wird. Bei Single-Core geschieht das linear, also ein Pixel/Pixelcluster nach dem anderen. Bei Multicore können mehrere auf einmal bearbeitet werden. Aber nicht bei jedem Effekt. Manche haben Abhängigkeiten (frag mich nicht).

@Wo bin ich hier , vielen Dank für das Beispiel! (und danke für das Beipiel mit IrfanView - ist mir neu, weil bei meinem jetztigen AMD Phenom II X4 nutzt es nur 1 Core.)

Dass Pixel mit Multicore parallel bearbeitet werden kann auch jeder hier selbst prüfen:
https://earth.nullschool.net/#current/wind/isobaric/250hPa/orthographic=-345.00,0.00,477
Das ist JavaScript canvas, bei dem jedes Pixel line by line von oben links nach unten rechts in einem Array gelistet ist, die bearbeitet werden. Mit Multicore können gleich mehrere parallel bearbeitet werden. Zumindest bei meinem AMD Phenom II X4 werden alle 4 Cores benutzt.
 
Mirlo schrieb:
Im Grunde geht es um "command lines". Also Befehlszeilen. Die laufen bei GUI-Progs im Hintergrund.
Das sollte sich am Ende auch nicht anders verhalten als die GUI selbst.
Der verwendete/implementierte Algorithmus sollte (in einer sauber gecodeten Anwendung) der gleiche sein.
Mirlo schrieb:
ist mir neu, weil bei meinem jetztigen AMD Phenom II X4 nutzt es nur 1 Core
Das ist seltsam. Ich habe es einfach über die GUI (Image->Resize/Resample) getestet/ausgeführt.
 
  • Gefällt mir
Reaktionen: ILoveShooter132
Wo bin ich hier schrieb:
Das ist seltsam. Ich habe es einfach über die GUI (Image->Resize/Resample) getestet/ausgeführt.
Ja, ist es. Also um da mal spezifischer zu werden. GUI = ja. Aber Batch-Modus. Im normalen Modus weiß ich es nicht. Pack doch mal zum testen 10 Grafiken/Fotos in einen Ordner und bearbeite per Batch-Modus (Taste B). Und nenne mal den Namen deiner CPU.
Ergänzung ()

Habe eben selbst mal getestet. Mit der 64bit Version. Batch-Modus. Es ist etwas komplexer. Hatte bisher immer nur im Task-Manager nachgesehen und da nie über 25 % (blöder Zufall bei 4 Core). Tatsächlich aber werden zwar alle Cores verwendet, aber nur einer stark, sowie 3 schwach, was dann insgesamt nicht mehr als 25% macht. Das ist dann wohl der Flaschenhals, dass manche Befehle nicht aufgesplittet werden können.
Im normalen Modus werden alle 4 Cores gleich stark benutzt.
 
Zuletzt bearbeitet:
So sieht bei mir ein Upscaling aus. Eine JPG 1000x1000px auf 30000x30000px.
Man sieht, dass das Upscaling direkt alle Kerne/Threads für ~5 Sec auslastet.
Danach passiert noch ~15 Sec irgendwas anderes, was eher nach Singlethread aussieht (JPG Komprimierung? JPG auf SSD schreiben?).

1740327566695.png
 
  • Gefällt mir
Reaktionen: Mirlo
Zurück
Oben