AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [Delphi] Thread-Organisation mit Mehrkern-CPUs
Thema durchsuchen
Ansicht
Themen-Optionen

[Delphi] Thread-Organisation mit Mehrkern-CPUs

Ein Thema von UliBru · begonnen am 16. Feb 2012 · letzter Beitrag vom 16. Feb 2012
Antwort Antwort
Seite 1 von 2  1 2      
UliBru

Registriert seit: 10. Mai 2010
155 Beiträge
 
Delphi 11 Alexandria
 
#1

[Delphi] Thread-Organisation mit Mehrkern-CPUs

  Alt 16. Feb 2012, 09:29
Es gibt da so ein nettes Beispiel für die Anwendung von Threads im Zusammenhang mit Mehrkern-CPUs.
Zum Programm dBPowerAmp gibt es einen Konverter welcher irgendwelche Musikdateien im Batch in ein anderes Format umwandelt.
Und dabei zeigt sich beim Wandeln in mp3 das im Anhang dargestellte Bild.

Es wird also festgestellt, wieviele CPU-Kerne, also reale und virtuelle, vorhanden sind. Jedem Kern wird dann die Umwandlung einer Datei als Aufgabe/Thread zugeteilt. Wenn ein Kern fertig ist, bekommt er die nächste Datei beauftragt. Hübsch gemacht ist dabei auch die Fortschrittsanzeige. Bei dieser Art von Bearbeitung sind die Teilaufgaben voneinander unabhängig.

Ich würde so eine Grundstruktur einer Threaderstellung und -bearbeitung gerne mit Delphi realisieren.
Dazu braucht es ja wohl
eine Prozedur, die die Anzahl der Kerne feststellt
eine Organisation, die die Gesamtaufgabe verwaltet
eine Zuweisung eines Threads zur Bearbeitung einer Teilaufgabe an einen nächsten freien Kern *
Strukturen, die das Anhalten bzw. Beenden (Pause, Cancel) ermöglichen als auch die Fortschrittsanzeige realisieren.

So stell ich mir das bescheidenerweise vor. Da ich praktisch keine Erfahrung mit Threads habe, hoffe ich, hier Tipps bzw. Code-Snippets zu bekommen, mit denen ich das realisieren kann. Die Struktur sollte für beliebige ähnliche gelagerte Aufgaben, die unabhängig voneinander parallel laufen können, geeignet sein.

Uli

* wann ist ein Kern eigentlich als frei zu betrachten? Es laufen ja parallel noch beliebig andere Prozesse inkl. der o.g. Organisation der Threads.
Miniaturansicht angehängter Grafiken
threads.png  
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs

  Alt 16. Feb 2012, 09:36
Für so etwas gibt es mehr oder minder umfangreiche Bibliotheken. Spontan fällt mir da OTL ein, evtl. ist das auch mit Andreas' AsyncCalls machbar (hab ich mir noch nicht angeschaut).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#3

AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs

  Alt 16. Feb 2012, 09:41
Es gibt in der DP einige Ansätze zu einem Hier im Forum suchenThreadpool, dass sollte deinem Wunsch nahe kommen.
Für das Feststellen der Hier im Forum suchenAnzahl der Kerne sollte die Suche auch was finden.
Die Kommunikation mit dem Job, der von Thread ausgeführt wird, musst du dir vmtl. selbst stricken.

PS: Mir fällt gerade erst auf, dass Thread-Pools so etwas wie Scheduling auf Anwendungsebene sind
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#4

AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs

  Alt 16. Feb 2012, 09:59
Ja, die OTL ist eine gute Wahl.

Mit dem ForEach oder mit den Pipelines kann man das prima machen.

Allerdings würde ich von der Idee Abstand nehmen eine bestimmte Aufgabe einer bestimmten CPU zu geben.
Lass das lieber das OS entscheiden.


Entwickler Magazin (Ausgabe: 05.11) Artikel: Multithreading mit der Omni Thread Lib (OTL)
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs

  Alt 16. Feb 2012, 10:05
Guten Morgen,

willst Du bestimmte Threads auf einen CPU Kern festlegen?

Bei einem Threadpool wird das OS die Verteilung übernehmen.
Die Threadpoolgröße könnte dann abhänging von der Kernanzahl sein z.B. zwei Threads pro Kern.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
UliBru

Registriert seit: 10. Mai 2010
155 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs

  Alt 16. Feb 2012, 10:36
Also ich möchte gerne rechenintensive Prozesse (Convolution) im Zusammenhang mit mehrkanaliger Audioausgabe so effektiv wie möglich gestalten. Anstelle nun einen Kanal nach dem andern zu bearbeiten, kann ich ja eben die vorhandenen CPU-Kerne nutzen. Wobei mir aufgefallen ist, dass bei einer einfachen Threadvergabe nun nur bis vier Kerne beschäftigt sind, aber eben nicht alle acht.

Mmh, das es OTL gibt weiss ich auch. Aber bisher hab ich den Aufwand gescheut mich da reinzuarbeiten. Wie immer ist der Anfang schwierig, weil ziviel Info.

Andererseits war mir eben nun aufgefallen, wie locker das in der Anwendung bei dBPowerAmp aussieht. Dort wird ja gezielt den Kernen zugewiesen. Was ja all den Meinungen widerspricht, die hier in anderen Beiträgen vertreten wurden. So mit Inhalt: Finger weg von SetThreadAffinityMask, lass dass das OS selber machen. Es scheint wohl doch kein klares Rezept zu geben.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#7

AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs

  Alt 16. Feb 2012, 11:41
lade die die Heft Beispiele herunter. Diese sind aufs Minimum reduziert.
Alternativ lade dir die Beispiele von den Delphi-Tagen 2011 runter.
Da habe ich auch mini Beispiele gezeigt.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
UliBru

Registriert seit: 10. Mai 2010
155 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs

  Alt 16. Feb 2012, 12:20
lade die die Heft Beispiele herunter. Diese sind aufs Minimum reduziert.
Alternativ lade dir die Beispiele von den Delphi-Tagen 2011 runter.
Da habe ich auch mini Beispiele gezeigt.
Kannst Du bitte so nett sein und etwas mehr preisgeben? Welche Heft Beispiele? Und zumindest derzeit gibt es keine Beispiele bei delphitage.de. Gibt es irgendwelche Links?
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#9

AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs

  Alt 16. Feb 2012, 12:53
Zitat:
Gibt es irgendwelche Links?
generic hat unter dem Namen Bernd Ott einen guten Artikel im Entwickler-Magazin (5.2011) geschrieben inklusive kleiner Beispiele.
Wenn ich Dir das jetzt hier reinstelle, gibt es wohl Ärger.
Es gibt von dem Entwickler von OTL ein gutes Video auf Coderage 6 und dieser beginnt auch mit einem Wiki auf seiner Seite.
Achtung: Bin kein Informatiker sondern komme vom Bau.

Geändert von Jens01 (16. Feb 2012 um 12:58 Uhr)
  Mit Zitat antworten Zitat
UliBru

Registriert seit: 10. Mai 2010
155 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: [Delphi] Thread-Organisation mit Mehrkern-CPUs

  Alt 16. Feb 2012, 13:32
Ok, ich befasse mich mal mit OTL - es gibt da ja einen Haufen Doku - und komme dann mit Fragen zurück, so ich sie denn (sicher) haben werde
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz