Echte Kerne oder Threads in einem i5 7500T?

405
Niels

Sie sagen, ein i5 7500T hat 4 Kerne (in diesem Fall 4 Threads). Wenn ich zum Beispiel die 1-millionste Fibonacci-Zahl (nur bei einem Thread, jede Zahl ist von ihrem Vorgänger abhängig) mit Python berechne, dauert es 5,5 Sekunden. Wenn ich zwei dieser Vorgänge gleichzeitig starte, dauert es jeweils 6,3 Sekunden, und wenn ich 3 oder 4 starte, dauert es noch länger (10+ Sekunden pro Vorgang).

Wie kann das als "Multi-Core" bezeichnet werden? Wenn ich einen großen Server mit mehreren Kernen verwende, 1 dauert der nProzess, wenn n<Anzahl der Kerne alle die gleiche Zeit in Anspruch nimmt n.

0
Wenn Sie einen rekursiven Algorithmus verwenden, sollten Sie zu einem iterativen Algorithmus wechseln, da er in diesem Szenario wesentlich effizienter sein und besser skalieren sollte. James P vor 5 Jahren 0
Verwenden Sie einfach folgendes: def fib (n): a, b = 1,1 für i im Bereich (n-1): a, b = b, a + b Rückgabe eines Ausdrucks (fib (1000000)) Niels vor 5 Jahren 0

1 Antwort auf die Frage

1
Mokubai

Jeder Kern ist individuell schnell, aber alle benötigen Zugriff auf gemeinsam genutzte Ressourcen wie Caches und Speicher. Multicore-Arbeit erhöht dadurch den Arbeitsaufwand, kann aber auch Engpässe verursachen.

Ihre mathematischen Berechnungen sind wahrscheinlich sehr speicherbeschränkt und Sie stoßen an die Grenze Ihrer Speicherbandbreite.

Das dauert es 5,5 Sekunden auf einem Kern, aber mit zwei Kernen dauert 6,3 Sekunden bedeutet, dass Sie in doppelt so viel Arbeit haben nur 0,8 Sekunden länger statt der 5,5 Sekunden länger (11 Sekunden insgesamt), dass die Arbeit in Reihe genommen hätte tun. Sie haben sich effektiv 4,7 Sekunden reale Zeit (11 - 6,3) eingespart, indem Sie die Arbeit Seite an Seite statt nacheinander erledigen.

Multi-Core bedeutet nicht, dass Sie doppelt so viel Arbeit in derselben Zeitspanne erledigen können, aber es bedeutet, dass Sie eine sinnvolle Menge mehr erreichen können, als Sie mit einem einzigen Core hätten erreichen können.

Wenn nun bei allen 4 Kernen alle Prozesse 10 Sekunden benötigen, ist der Vorgang noch schneller abgeschlossen, als wenn Sie die Arbeit an einem einzigen Kern viermal erledigt hätten, wo es 22 Sekunden hätte dauern sollen. Sie erreichen das Vierfache der Arbeit in weniger als der doppelten Zeit.

Multi-Threading ist ein Fall von [Diminishing Returns] (https://en.wikipedia.org/wiki/Diminishing_returns). harrymc vor 5 Jahren 0
Es wundert sich immer noch, warum in manchen Systemen die gleiche Zeit pro Prozess benötigt wird, wenn sie gleichzeitig ausgeführt werden ... Niels vor 5 Jahren 0
Da diese Systeme über Prozessoren mit höherem Ende und zwei-, drei- oder sogar vierkanalige Speicher verfügen, wäre die Speicherbandbreite erheblich erhöht worden. Ohne zu wissen, was die anderen Systeme sind, können wir nur wilde Vermutungen anstellen. Mokubai vor 5 Jahren 0