Threads gleich Kerne?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Ameisen23
Beiträge: 50
Registriert: 19.10.2013 12:04

Threads gleich Kerne?

Beitrag von Ameisen23 »

Jemand schrob dass auf seiner Maschine hardwaremäßig 8 Threads gleichzeitig ausgeführt werden können...
NicTheQuick hat geschrieben:Threads sind erlaubt. Übrigens kann ich auf meiner Maschine hardwaremäßig 8 Threads gleichzeitig ausführen.
Ist das wirklich so? Ich dachte man kann unbegrenzt Threads erstellen oder hat es mit CPU Kerne zu tun und man kann nur so viele Threads erstellen
so viel der Prozessor an Kernen hat? Threads == Kerne oder Threads != Kerne?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Threads gleich Kerne?

Beitrag von ts-soft »

Du kannst "unbegrenzt" Threads erstellen, diese werden, meist vom Betriebssystem, auf die Kerne verteilt.
Je mehr Kerne, desto weniger Threads pro Kern = bessere Performance.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8837
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Threads gleich Kerne?

Beitrag von NicTheQuick »

Wirklich gleichzeitig laufen eben immer nur so viele wie der Prozessor eben unterstützt. Aber erstellen kann man natürlich fast beliebig viele. Der Scheduler vom Betriebssystem entscheidet dann, wann welcher Thread die CPU benutzen darf. Auf meinem System laufen z.B. gerade 497 Threads "gleichzeitig". Unter Windows kann man die Threadanzahl auch im Taskmanager sehen.

Wenn man wirklich einen Algorithmus entwickelt, der sich parallelisieren lässt, dann macht es natürlich Sinn, genau so viele Threads gleichzeitig laufen zu lassen wie die Hardware auch hergibt. Wenn man mehr benutzt als möglich sind, muss das Betriebssystem eben zwischen den Threads umschalten und das macht es dann theoretisch auch wieder langsamer. Wirklich merken tut man das aber auch erst, wenn es wirklich viel mehr sind als hardwaremäßig vorhanden sind.

Man kann auch Programme schreiben, die die Grafikkarte zum Rechnen nutzen. Mit der CUDA-Schnittstellen von Nvidia kann man auf deren Grafikkarten so viele Kerne gleichzeitig nutzen wie die Karte eben hat. Bei den neusten Modellen sind das mehr als 2500 Kerne pro Grafikkarte.
Antworten