Verschiedene Methoden, asynchrone Aufgaben zu erledigen

Parallel-Verarbeitung, Multi-Threading

Ich bin im Moment damit beschäftigt, gewisse Laufzeit-Probleme eines von mir entwickelten
Software-Systems zu analysieren und versuche, diese durch Parallelisierung des vorhandenen Codes
zu beheben / verbessern.

Dabei bin ich hierüber gestolpert:

C# Tipps, Teil 1 – Threads, Prozesse und Synchronisierung

Es handelt sich um einen ge-feature-ten Auszug aus einem Buch, der auf MSDN online verfügbar ist.

Dort werden die verschiedenen Möglichkeiten, Arbeit in parallel laufenden Threads zu erledigen, angesprochen. Das war zumindest das, was mich dort momentan interessierte …

Im (nicht genauer) angesprochenen System arbeiten sowieso schon diverse Threads, die unter anderem damit beschäftigt sind

  • von zwei Kameras jeweils 50 Bilder pro Sekunde (384×288, 16 Bit pro Pixel) abzuholen
  • und weiter zu verteilen:
    • diese auf einem RAID-Array abzuspeichern,
    • sie geometrisch zu entzerren,
    • durch eine Look-Up-Table (LUT) nudeln, um eine schöne Pseudocolor-Darstellung für die Live-Anzeige zu erhalten,
    • durch eine andere LUT nudeln, um sie von den 16-bit-Rohdaten in eine Floating-Point Darstellung irgendeiner physikalischen Grösse (Strahlung/Helligkeit/Temperatur halt),
    • diese beiden Bilder dann „seamless“ zusammenzupixeln,
    • mit dem kombinierten, entzerrten Bild aus zwei gleichzeitig aufgenommen Bilder von den beiden Kameras irgendeine Berechnung anleiern (und hier ist die Crux …)
    • … und und und.

In dem ganzen Ablauf habe ich allerdings ein paar Bottlenecks, die jeweils nur einen (von den jeweils vier) Kernen der beiden XEON Prozessoren für länger belagern, als es dem Timing der Applikation gut tut …

Dabei sollte mir dieser Artikel (zusammen mit der „Effective Concurrency“ – Reihe von Herb Sutter) ein paar
Anregungen liefern und das hat auch gut geklappt.

🙂

, , ,

  1. Hinterlasse einen Kommentar

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: