set_aop_infoset_aop_infoSetAopInfoSetAopInfo (Operator)
Name
set_aop_infoset_aop_infoSetAopInfoSetAopInfo
— Verändert Information über HALCONs automatische Operator-Parallelisierung.
Signatur
void SetAopInfo(const HTuple& OperatorName, const HTuple& IndexName, const HTuple& IndexValue, const HTuple& InfoName, const HTuple& InfoValue)
static void HSystem::SetAopInfo(const HTuple& OperatorName, const HTuple& IndexName, const HTuple& IndexValue, const HString& InfoName, const HTuple& InfoValue)
static void HSystem::SetAopInfo(const HString& OperatorName, const HString& IndexName, const HString& IndexValue, const HString& InfoName, Hlong InfoValue)
static void HSystem::SetAopInfo(const char* OperatorName, const char* IndexName, const char* IndexValue, const char* InfoName, Hlong InfoValue)
static void HSystem::SetAopInfo(const wchar_t* OperatorName, const wchar_t* IndexName, const wchar_t* IndexValue, const wchar_t* InfoName, Hlong InfoValue)
(Nur Windows)
static void HOperatorSet.SetAopInfo(HTuple operatorName, HTuple indexName, HTuple indexValue, HTuple infoName, HTuple infoValue)
static void HSystem.SetAopInfo(HTuple operatorName, HTuple indexName, HTuple indexValue, string infoName, HTuple infoValue)
static void HSystem.SetAopInfo(string operatorName, string indexName, string indexValue, string infoName, int infoValue)
Beschreibung
HALCON unterstützt einen Mechanismus, um das Verhalten der automatischen
Parallelisierung von Operatoren (AOP) an Mehrprozessorarchitekturen
anzupassen und Operatoren zu beschleunigen.
Dazu können für jeden Operator, der sich auf Tupel-, Kanal- oder
Domain-Ebene parallelisieren lässt, mit Hilfe von
optimize_aopoptimize_aopOptimizeAopOptimizeAopOptimizeAop
Abhängigkeiten des Laufzeitverhaltens von der
Hardware und Eingabeparametern ermittelt werden. Der Operator
get_aop_infoget_aop_infoGetAopInfoGetAopInfoGetAopInfo
liest Elemente dieser Informationen, während diese
durch den Operator set_aop_infoset_aop_infoSetAopInfoSetAopInfoSetAopInfo
verändert werden können.
Um die operatorspezifischen Informationen
adressieren zu können, sind die Daten in einer 3-stufigen Hierarchie
indizierbar, die sich mit query_aop_infoquery_aop_infoQueryAopInfoQueryAopInfoQueryAopInfo
abfragen
lässt. Durch ein Tripel von Indexkennungen lässt sich so jeweils ein AOP-Set
an Optimierungsdaten indizieren. Die drei Indizierungsstufen setzen sich
durch den
Operatornamen, den ikonischen Bildtyp und optional einen
Parameterstring zusammen, der einen speziellen Modus oder Methode des
Operators spezifiziert. Während der Operatorname
OperatorNameOperatorNameOperatorNameOperatorNameoperatorName
übergeben wird, definieren IndexNameIndexNameIndexNameIndexNameindexName
und IndexValueIndexValueIndexValueIndexValueindexValue
die letzteren beiden
Indizes. IndexNameIndexNameIndexNameIndexNameindexName
erhält dabei die Indexkennung,
IndexValueIndexValueIndexValueIndexValueindexValue
den Indexwert, wie sie von query_aop_infoquery_aop_infoQueryAopInfoQueryAopInfoQueryAopInfo
zurückgegeben werden. Es ist möglich mehrere Indexkennungen der gleichen
Stufe anzugeben, um die spezifizierte Information bei mehreren AOP-Sets
zu speichern. Die gesamte Indexstufe kann adressiert werden, wenn eine
Indexkennung ausgelassen oder für einen Indexwert ein leerer String
übergeben wird. Beispielsweise werden durch eine leeren String für
OperatorNameOperatorNameOperatorNameOperatorNameoperatorName
, dem Tupel ['iconic_type','iconic_type']["iconic_type","iconic_type"]["iconic_type","iconic_type"]["iconic_type","iconic_type"]["iconic_type","iconic_type"]
für IndexNameIndexNameIndexNameIndexNameindexName
und dem Tupel ['byte','uint2']["byte","uint2"]["byte","uint2"]["byte","uint2"]["byte","uint2"] für
IndexValueIndexValueIndexValueIndexValueindexValue
alle Operatoren adressiert, die Byte oder UINT2 Bilder
verarbeiten.
set_aop_infoset_aop_infoSetAopInfoSetAopInfoSetAopInfo
setzt die in InfoValueInfoValueInfoValueInfoValueinfoValue
übergebenen
Informationswerte in dem spezifizierten AOP-Sets. Die Art der Information
kann mit dem Parameter InfoNameInfoNameInfoNameInfoNameinfoName
mit einem der folgenden Werten
spezifiziert werden:
- 'max_threads'"max_threads""max_threads""max_threads""max_threads"
setzt die größte zulässige Threadanzahl,
mit der der Operator mit dem entsprechenden ikonischen Datentyp und
Parameterwert parallelisiert werden darf.
- 'split_level'"split_level""split_level""split_level""split_level"
setzt die erlaubten Parallelisierungsebenen
für die indizierten AOP-Sets. Mögliche Werte sind
'split_tuple'"split_tuple""split_tuple""split_tuple""split_tuple", 'split_channel'"split_channel""split_channel""split_channel""split_channel",
'split_domain'"split_domain""split_domain""split_domain""split_domain" und 'split_partial'"split_partial""split_partial""split_partial""split_partial".
Achtung
set_aop_infoset_aop_infoSetAopInfoSetAopInfoSetAopInfo
verändert die AOP-Systemwissensbasis. Diese Änderungen
werden ebenfalls durch write_aop_knowledgewrite_aop_knowledgeWriteAopKnowledgeWriteAopKnowledgeWriteAopKnowledge
gespeichert.
Es wird empfohlen eine Backup-Datei zu halten bevor das Systemwissen
geändert wird.
Ausführungsinformationen
- Multithreading-Typ: exclusive (läuft parallel nur zu unabhängigen Operatoren).
- Multithreading-Bereich: local (kann nur von dem Thread aufgerufen werden, in dem die Fenster-, Modell- oder Tool-Instanz erzeugt wurde).
- Wird ohne Parallelisierung verarbeitet.
Parameter
OperatorNameOperatorNameOperatorNameOperatorNameoperatorName
(input_control) string(-array) →
HTupleHTupleHtuple (string / integer) (string / int / long) (HString / Hlong) (char* / Hlong)
Operatorname.
Defaultwert:
''
""
""
""
""
IndexNameIndexNameIndexNameIndexNameindexName
(input_control) string(-array) →
HTupleHTupleHtuple (string / integer) (string / int / long) (HString / Hlong) (char* / Hlong)
Ikonischer Objekttyp.
Defaultwert:
''
""
""
""
""
Wertevorschläge: 'iconic_type'"iconic_type""iconic_type""iconic_type""iconic_type", ['iconic_type','parameter:0']["iconic_type","parameter:0"]["iconic_type","parameter:0"]["iconic_type","parameter:0"]["iconic_type","parameter:0"]
IndexValueIndexValueIndexValueIndexValueindexValue
(input_control) string(-array) →
HTupleHTupleHtuple (string / integer) (string / int / long) (HString / Hlong) (char* / Hlong)
Parameter-Typ.
Parameteranzahl: IndexName == IndexValue
Defaultwert:
''
""
""
""
""
Wertevorschläge: 'byte'"byte""byte""byte""byte", ['uint2','']["uint2",""]["uint2",""]["uint2",""]["uint2",""]
InfoNameInfoNameInfoNameInfoNameinfoName
(input_control) string →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Art der Information.
Defaultwert:
'max_threads'
"max_threads"
"max_threads"
"max_threads"
"max_threads"
Wertevorschläge: 'max_threads'"max_threads""max_threads""max_threads""max_threads", 'model'"model""model""model""model"
InfoValueInfoValueInfoValueInfoValueinfoValue
(input_control) integer(-array) →
HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
AOP-Information.
Ergebnis
Sind die Parameterwerte korrekt, dann liefert read_aop_knowledgeread_aop_knowledgeReadAopKnowledgeReadAopKnowledgeReadAopKnowledge
den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
Modul
Foundation