Was ist der Unterschied zwischen der Anzahl der Kerne und der Anzahl der logischen Prozessoren?

20425
Borealis

Ich habe einige Bildverarbeitungen auf meinem Computer mit Erdas Imagine durchgeführt . Insbesondere verwende ich einen 5x5-Medianfilter für Bilder. Ich kann die Anzahl der Prozesse angeben, die gleichzeitig im Erdas-Stapelbefehlfenster ausgeführt werden. Ich habe ein ungewöhnliches Verhalten beobachtet, als ich 16 gleichzeitige Prozesse vorgebe, die mich dazu veranlassen, die Anzahl der Prozessoren auf der Maschine zu überprüfen. Ich habe die folgende Eingabeaufforderung verwendet, um die Anzahl der Prozessoren zu ermitteln:

wmic cpu > cpu.txt 

Was ergab (zum Teil):

Number of Cores: 8  Number of Logical Processors: 16 

Wie unterscheidet sich die Anzahl der Kerne von der Anzahl der logischen Prozessoren im Zusammenhang mit Software wie Erdas, wo der Benutzer die Anzahl der gleichzeitigen Prozesse angeben kann? Ich versuche herauszufinden, ob ich 8 oder 16 simultane Prozesse angeben sollte, um die Effizienz zu maximieren.

7
[Hyperthreading nachschlagen] (http://en.wikipedia.org/wiki/Hyper-threading). HopelessN00b vor 9 Jahren 2
Zu Ihrer letzten Frage: In den meisten Fällen möchten Sie, dass 16 Prozesse die Effizienz maximieren. Bei speicherintensiven Vorgängen wie der Bildverarbeitung bin ich mir nicht sicher: Ich empfehle Ihnen, ein Benchmarking durchzuführen und herauszufinden, was für Sie am besten funktioniert. Möglicherweise erzielen Sie die beste Leistung, wenn Sie HyperThreading vollständig deaktivieren (dies ist normalerweise über die BIOS-Einstellungen möglich). Harry Johnston vor 9 Jahren 0

3 Antworten auf die Frage

15
Jason C

Durch Hyper-Threading erscheint ein physischer Kern für das Betriebssystem als zwei.

Durch Hyper-Threading kann ein Kern im Wesentlichen zwei Befehlssätze gleichzeitig ausführen, abhängig von der Art der Anweisungen. Als es zum ersten Mal eingeführt wurde (damals im Jahr 2002, und es war damals ziemlich angespannt), und Overclocker und dann neue Blogger, die verrückt über HT gegen True Multicore debattieren - einige Dinge ändern sich nie -, war das so etwas wie "Dual Core Lite" ". Um die Verwendung von Hyperthreading für vorhandene Software und Betriebssysteme transparent zu machen, wurden sie so konzipiert, dass sie als zwei Kerne erscheinen. Der Kernel könnte also seine vorhandene Planung und den Lastausgleich weiterhin verwenden und Hyperthreading ohne Änderungen nutzen (natürlich später). Optimierungen wurden vorgenommen). Aus diesem Grund hat es so angefangen - so dass Hyperthread-CPUs auf Plattformen, die sowieso schon Multiprozessor-Unterstützung hatten, einfach Drop-In-Ersatz sein können.

Da Effizienz jedoch von der Art der Anwendung abhängt, möchten Sie möglicherweise eine Benchmark bei 8 und 16 (und höher, wenn die Prozesse nicht an eine CPU gebunden sind, sondern z. B. an ein Netzwerk oder an eine E / A-Bindung).

Ich stimme im Wesentlichen zu, möchte aber klarstellen, dass Hyper-Threading (HT) einem Kern nicht erlaubt, zwei Befehlssätze gleichzeitig auszuführen. HT ermöglicht das * Umschalten * zwischen zwei Befehlssätzen sehr schnell oder "billig", um die Auswirkungen auf die Leistung zu minimieren. Es wird zu jedem Zeitpunkt nur einer von zwei HT-Threads pro physischem Kern ausgeführt, aber der Aufwand für das Umschalten zwischen ihnen ist erheblich reduziert. Es bleibt jedoch ein gewisser Aufwand Einige Sysadmins deaktivieren möglicherweise Hyper-Threading, wenn sie routinemäßig über eine große Anzahl extrem CPU-gebundener Threads verfügen, um diesen Overhead zu beseitigen. Basil Bourque vor 9 Jahren 5
Es gibt ein kurzes und ziemlich amüsantes Video [hier] (https://www.youtube.com/watch?v=wnS50lJicXc). Versuchen Sie auf keinen Fall, zuerst die Eistüte zu essen. Jason C vor 9 Jahren 0
3
Cornelius

Die Anzahl der Kerne (8) gibt die tatsächliche Anzahl der physischen Kerne an. Für jeden physisch vorhandenen Prozessorkern adressiert das Betriebssystem zwei virtuelle oder logische Kerne und teilt die Arbeitslast nach Möglichkeit auf.

Wenn Multiprocessing-Systeme mehrere vollständige Verarbeitungseinheiten enthalten, zielt das Multithreading darauf ab, die Verwendung eines einzelnen Kerns durch die Verwendung von Parallelität auf Thread- und Befehlsebene zu erhöhen. Da diese beiden Techniken komplementär sind, werden sie manchmal in Systemen mit mehreren Multithreading-CPUs und in CPUs mit mehreren Multithreading-Cores kombiniert.

Siehe Wikipedia-Artikel zu HyperThreading und Multithreading .

Beachten Sie, dass nicht alle CPUs HyperThreading unterstützen und möglicherweise auch vom Motherboard deaktiviert werden (dies ist normalerweise eine BIOS-Option). Wenn HyperThreading nicht unterstützt wird oder deaktiviert ist, gibt es nur einen logischen Prozessor pro Kern. Harry Johnston vor 9 Jahren 1
-3
Sandesh Damkondwar

Eine logische CPU wird normalerweise verwendet, um die Gesamtsumme der CPUs auf dem Chip zu beschreiben. Die 8 Kerne sind physische Kerne, die auf dem Chip vorhanden sind. So kann sich jede CPU gleichzeitig an Prozesse wenden, wodurch Sie 16 logische Prozessoren erhalten. Durch das Hyper-Threading kann ein Kern zwei Aufgaben gleichzeitig ausführen. Da Sie also 8 Kerne pro Hyperthreading haben, stehen Ihnen insgesamt 16 logische Prozessoren zur Verfügung.

Im Grunde sind die Kerne echt, dh Sie haben 8 physische Kerne auf Ihrem Chip. Während logische Prozessoren alles auf dem Chip sind, das eine Berechnung durchführen kann. Alle Kerne sind logische Prozessoren, aber nicht alle logischen Prozessoren sind Kerne.

Das ist eigentlich nicht richtig. Hinweis: Hyperthreading. HopelessN00b vor 9 Jahren 4