INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Parallelisierung von DLLs



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

19.07.2012, 14:07 (Dieser Beitrag wurde zuletzt bearbeitet: 19.07.2012 14:17 von jg.)
Beitrag #1

Herm Offline
LVF-Grünschnabel
*


Beiträge: 24
Registriert seit: Jun 2011

LV 2009 & 2012
2011
DE


Deutschland
Smile Parallelisierung von DLLs
Hallo

Ich habe folgendes Problem:
Ich nehme mit einer Kamera von Image Control Bilder auf. Diese Bilder werden an eine Bildauswertung angeschlossen. Die Auswertung liegt in Form einer DLL vor und wird über einen CLF-Knoten eingebunden. Das Ganze funktioniert an sich auch, nur ist die DLL deutlich langsamer, als die Kamera Bilder liefert. Ich möchte also die Bilder auf mehrere CLF-Knoten aufteilen, die dann in unterschiedlichen Kernen abgearbeitet werden. Der PC, den ich benutze hat 8 Kerne und 16 GB Arbeitsspeicher. Ich will maximal 4 Kerne mit der Abarbeitung der DLL belasten. Dazu möchte ich quasi einen Kreislauf schreiben. Die Bilder der Kamera werden in einer lossy queue abgelegt. Immer wenn eine DLL ein Bild bearbeitet hat soll sie ein TRUE ausgeben, welches der lossy queue sagt, dass es jetzt ein weiteres Bild ausgeben kann ("Element auslesen" von VI "Queue-Status lesen" auf TRUE setzten).

Je nach Größe des Bildes und Auswertungsmethodik (es gibt zwei verschiedene) braucht die DLL zwischen 66 und 200 ms. Wenn nur kleine Bilder vorliegen, die schnell ausgewertet werden, sollen auch nur 1-2 DLLs und damit Kerne belastet werden, wenn die DLLs länger brauchen, soll die Auswertung automatisch auf die anderen DLLs erweitert werden. Die DLLs sollen also priorisiert angesteuert werden. Immer wenn die erste frei ist, soll diese auch mit dem neuen Bild belegt werden und nur, wenn diese gerade arbeitet, soll das Bild an die zweite gegeben werden usw. Wenn alle 4 DLLs belegt sind und neue Bilder ankommen, verfallen diese automatisch durch die lossy queue.
Ich habe das Prinzip des VIs vereinfacht angehängt, so wie es mit einer DLL aussehen würde. Das eingehende Bild wird durch einen einzelnen Zufallswert dargestellt. Die DLL habe ich mal vereinfacht dargestellt als Timer mit 66 ms Wartezeit (Mindestlaufzeit der DLL) und der eingehende Wert wird um 1 erhöht.

Hier also meine Frage:
Wie lässt sich sozusagen eine priorisierende Casestruktur realisieren, oder etwas, was die Bilder bevorzugt auf bestimmte Schleifen aufteilt. Wenn ich einfach einen Counter durchlaufen lasse, der mir der Reihe nach die Bilder in die unterschiedlichen DLLs schickt, dann werden immer alle 4 Kerne belastet, obwohl das nicht unbedingt nötig ist. Ich möchte ja hier, dass die 1. DLL priorisiert behandelt wird, nur wenn diese gerade ein Bild bearbeitet, soll die nächste DLL verwendet werden.

Viele Grüße

Herm


Angehängte Datei(en)
9.0 .vi  Kreislauf der Bildauswertung.vi (Größe: 18,64 KB / Downloads: 172)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
Parallelisierung von DLLs - Herm - 19.07.2012 14:07
RE: Parallelisierung von DLLs - Herm - 25.07.2012, 13:04
RE: Parallelisierung von DLLs - Herm - 26.07.2012, 09:46
RE: Parallelisierung von DLLs - Herm - 26.07.2012, 10:54
RE: Parallelisierung von DLLs - Herm - 26.07.2012, 13:42
RE: Parallelisierung von DLLs - Herm - 20.08.2012, 14:43
RE: Parallelisierung von DLLs - Herm - 21.08.2012, 09:32

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Parallelisierung von Schleifen =steffen= 2 3.760 15.08.2008 18:18
Letzter Beitrag: Kvasir
  Callback Mechanismus mit DLLs nachbilden eg 0 2.942 01.09.2006 10:54
Letzter Beitrag: eg
  Globale Variablen bzw. Queues in DLLs Winzler 1 3.865 11.10.2005 08:56
Letzter Beitrag: thomas.sandrisser

Gehe zu: