Einzelnen Beitrag anzeigen

noob2k9

Registriert seit: 1. Aug 2008
13 Beiträge
 
Delphi XE2 Starter
 
#4

AW: Delphi und NUMA-Nodes

  Alt 2. Sep 2019, 21:42
Ich muss nur erkennen, dass sich etwas bewegt und in welche Richtung es sich bewegt.
Dazu sind je nach Bedarf auf dem Boden Streifen- und Schachbrettmuster aufgebracht wodurch die Aufgabe recht trivial wird.

Die Reduzierung der JPEG-Qualität hat nur geringfügig Einfluss auf den Download und das Dekodieren. Bei noch halbwegs brauchbarer Qualität halbiert sich die Dateigröße. Die Zeiteinsparung liegt jedoch bei lediglich ~5%. Dabei ist aufgefallen, dass die Kamera zwar auf Graustufen eingestellt ist, jedoch wird dennoch ein Farb-JPEG übermittelt (nur eben monochrom). Dadurch entsteht vermutlich unnötig Overhead beim Dekodieren, aber dass kann ich nicht beeinflussen ohne die Kameras zu ersetzen.

Beim detaillierten Logging hat sich nun herausgestellt, dass der Zeitanteil der Speicherzugriffe und -verschiebungen lediglich einen Bruchteil der Gesamtzeit ausmacht - der Löwenanteil geht auf Konto des Jpeg-Decoders. Ich werde hie rnochmal libJpeg versuchen.

Vorher werde ich noch einen Benchmark durchführen und die Zahl der parallelen Threads variieren. Die 2 CPUs haben jeweils 8 Cores, 16 Threads (logische Prozessoren). Ich vermute in den häufigen Kontextwechseln das Bottleneck, so dass 16 parallele Threads (Anwendung) - jeweils verteilt auf 1 Core / 2 logische Prozessoren - optimal sein könnten.

---

Der Speicher den ich zum Austausch zwischen den Prozessen verwende ist statisch. Der Input ist dynamisch, die 300kB sind jedoch in <1ms verschoben.
Die Anwendung wird gerade auf ThreadPools umgestellt, dass hat dann auch gleich den Vorteil, dass man problemlos wieder zurück auf eine feste Zuordnungen gehen kann.
Ich glaube nicht, dass eine zusätzliche GPU hier sinnvoll ist - was soll auf dieser berechnet werden? Das verschieben der Daten in den Speicher der GPU über eine relativ langsame Anbindung dauert dann ja länger als es direkt auf der CPU zu erledigen.

Die reine Bildverarbeitung dauert nichtmal 5ms, das Bildformat ist recht simpel: ein einfacher Bytestream zu dem die Breite und Höhe des Bildes gespeichert wird. Die Pixel werden als Graustufen / 1 Byte gespeichert.
  Mit Zitat antworten Zitat