Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar? (https://www.delphipraxis.net/182867-maximale-threadanzahl-anzahl-der-threads-fuer-programm-prozess-erhoehbar.html)

JasonDX 25. Nov 2014 18:42

AW: Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar?
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1281048)
Erstaunlicherweise läuft dieser Algorithmus bei mehr als 2 Prozessoren bzw. Prozessorkernen nicht nennenswert schneller, also scheint dann schon die Ausgabe "der Flaschenhals" zu sein.

Das ist genau das, was dir Leute versucht haben, mitzuteilen: Ab einem gewissen Punkt bringen mehr Threads nix mehr. Das hat höchstwahrscheinlich nix mit "Ausgabe" zu tun. Das kannst du auch gut nachprüfen: Schalt einfach temporär die Ausgabe aus.
Falls du ein bisschen was über Parallelisierung lernen willst: Füg einen Parameter ein mit dem du steuern kannst, wieviele Threads die Sortierung bearbeiten, und beobachte die Auswirkungen ;)

Delphi-Laie 25. Nov 2014 19:20

AW: Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar?
 
Leute, noch einmal: Ich wollte nicht zeigen, daß sich der Algorithmus durch Multithreadverwendung beschleunigen läßt - ein solches Ziel wäre hiermit auch widerlegt, wenn auch nicht grundsätzlich, sondern nur eben auf meinem Wege - sondern, daß er sich parallelisieren läßt, und das sogar ganz massiv. Und das bezeichne ich als gelungen.

Die Geschwindigkeitsmessung ist ohnehin ohne allzugroße Aussgakraft, ich implementierte sie auf Wunsch eines einzelnen und weil der Aufwand dafür überschaubar war.

Im "nackten" Windows, also dem frischen Installationszustand ohne zusätzlich gestartete Anwendungsprogramme, sind bereits hunderte Threads gestartet. Wieviele sind davon mehr oder weniger, d.h., wenigstens sporadisch aktiv? Vermutlich eine ganze Menge. Auch, wenn es nur ein winziger Teil der Gesamtanzahl ist, so sind es doch mit Sicherheit deutlich mehr als die Anzahl der Prozessoren / Prozessorkerne. Also gehört das ständige Umschalten zwischen einzelnen Threads auch ohne meinen "Quälalgorithmus" zu einer häufigen Aufgabe des Betriebsprogrammes.

Schon beim parallelen Quicksort versuchte ich, die Anzahl der Threads zu begrenzen, was mir aber nicht gelang. Vielleicht wage ich mich noch einmal daran, auch beim hier thematisierten Mergesort.

hathor 25. Nov 2014 19:32

AW: Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar?
 
Ich habe jetzt nicht alles gelesen, aber diese Info habe ich vermisst:

64‑bit versions of WINDOWS can support up to 256 processor cores.


Es macht also nicht viel Sinn, mehr Threads zu starten, als VIRTUELLE CORES (Beispiel: i7-3610: Anzahl der Kerne: 4, Anzahl der Threads: 8) vorhanden sind.

Sir Rufo 25. Nov 2014 19:39

AW: Maximale Threadanzahl / Anzahl der Threads für Programm / Prozeß erhöhbar?
 
Zitat:

Zitat von hathor (Beitrag 1281075)
Ich habe jetzt nicht alles gelesen, aber diese Info habe ich vermisst:

64‑bit versions of WINDOWS can support up to 256 processor cores.


Es macht also nicht viel Sinn, mehr Threads zu starten, als VIRTUELLE CORES (Beispiel: i7-3610: Anzahl der Kerne: 4, Anzahl der Threads: 8) vorhanden sind.

Ähm, nicht ganz: Es macht nicht viel Sinn mehr Threads mit Last zu starten als Cores vorhanden sind. Wartende Threads kannst du nach Belieben (bis der Speicher kneift) erstellen, die werden den Rechner nicht stressen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz