Name
read_aop_knowledgeT_read_aop_knowledgeReadAopKnowledgeread_aop_knowledgeReadAopKnowledgeReadAopKnowledge — Laden von Informationen über das hardwareabhängige Verhalten der
automatischen Operator-Parallelisierung.
void ReadAopKnowledge(const HTuple& FileName, const HTuple& ParamName, const HTuple& ParamValue, HTuple* Attributes, HTuple* OperatorNames)
static HTuple HSystem::ReadAopKnowledge(const HString& FileName, const HTuple& ParamName, const HTuple& ParamValue, HTuple* OperatorNames)
static HTuple HSystem::ReadAopKnowledge(const HString& FileName, const HString& ParamName, const HString& ParamValue, HString* OperatorNames)
static HTuple HSystem::ReadAopKnowledge(const char* FileName, const char* ParamName, const char* ParamValue, HString* OperatorNames)
static void HOperatorSet.ReadAopKnowledge(HTuple fileName, HTuple paramName, HTuple paramValue, out HTuple attributes, out HTuple operatorNames)
static HTuple HSystem.ReadAopKnowledge(string fileName, HTuple paramName, HTuple paramValue, out HTuple operatorNames)
static HTuple HSystem.ReadAopKnowledge(string fileName, string paramName, string paramValue, out string operatorNames)
read_aop_knowledgeread_aop_knowledgeReadAopKnowledgeread_aop_knowledgeReadAopKnowledgeReadAopKnowledge wird verwendet, um die automatische
Operator-Parallelisierung (AOP) der HALCON-Operatoren zu unterstützen.
HALCON verwendet intern einen Parallelisierungsmechanismus, um
Mehrprozessorarchitekturen besser zu nutzen und die Bearbeitungsdauer
von Operatoren zu verkürzen. Um diese Parallelisierung automatisch,
optimiert durchführen zu können, benötigt HALCON spezielles Wissen über
die verwendete Hardware bzw. über deren Potential, die verschiedenen
HALCON-Operatoren parallel zu verarbeiten. Dieses Wissen ist
rechnerspezifisch und kann mit dem Operator optimize_aopoptimize_aopOptimizeAopoptimize_aopOptimizeAopOptimizeAop
und write_aop_knowledgewrite_aop_knowledgeWriteAopKnowledgewrite_aop_knowledgeWriteAopKnowledgeWriteAopKnowledge trainiert und abgespeichert werden.
Mit read_aop_knowledgeread_aop_knowledgeReadAopKnowledgeread_aop_knowledgeReadAopKnowledgeReadAopKnowledge ist es möglich, dieses Wissen explizit
aus einer Binärdatei zu laden. Dabei definiert FileNameFileNameFileNameFileNameFileNamefileName den
Namen der Datei mit Pfad und Dateierweiterung. Falls ein leerer String
''"""""""""" übergeben wird, liest HALCON die Informationen
aus der spezifischen Datei '.aop_info'".aop_info"".aop_info"".aop_info"".aop_info"".aop_info" im HALCON
Installationsverzeichnis (Linux/OS X) oder aus dem gemeinsamen
Datenverzeichnis für Anwendungen (Windows). Diese Datei wird auch von
HALCON automatisch während der Initialisierungsphase gelesen, kann aber
mit read_aop_knowledgeread_aop_knowledgeReadAopKnowledgeread_aop_knowledgeReadAopKnowledgeReadAopKnowledge leicht wieder eingelesen werden und so das
gespeicherte Wissen gegebenenfalls wieder restaurieren. Die Art und Weise
wie das gelesene Wissen die vorhandene Systeminformation aktualisiert, kann
mit Hilfe des Parameterpaares ParamNameParamNameParamNameParamNameParamNameparamName und ParamValueParamValueParamValueParamValueParamValueparamValue
gesteuert werden. Dabei muss jeder Wert in ParamNameParamNameParamNameParamNameParamNameparamName einen
korrespondierenden Definitionswert in ParamValueParamValueParamValueParamValueParamValueparamValue haben. D.h. die
Länge der Parameterarrays muss gleich groß sein.
- 'ignore_attrib'"ignore_attrib""ignore_attrib""ignore_attrib""ignore_attrib""ignore_attrib"
-
für ParamNameParamNameParamNameParamNameParamNameparamName ermöglicht es,
das Überprüfen der Wissensattribute zu beeinflussen. Beispielsweise
überprüft read_aop_knowledgeread_aop_knowledgeReadAopKnowledgeread_aop_knowledgeReadAopKnowledgeReadAopKnowledge während des Lesens, ob der Inhalt
der Datei
den aktuell verwendeten Computer, die HALCON-Version, -Revision und
-Architektur betrifft. Die entsprechenden Attribute können mit Hilfe der
folgenden Werte für ParamValueParamValueParamValueParamValueParamValueparamValue unterdrückt werden:
- 'host'"host""host""host""host""host"
der Computername des aktuellen Rechners
- 'cpu_info'"cpu_info""cpu_info""cpu_info""cpu_info""cpu_info"
die Rechnertopologie
- 'variant'"variant""variant""variant""variant""variant"
die HALCON-Variante
- 'version'"version""version""version""version""version"
die HALCON-Version
- 'revision'"revision""revision""revision""revision""revision"
die HALCON-Revision
- 'architecture'"architecture""architecture""architecture""architecture""architecture"
die HALCON Architektur
Dabei können mehrere, unterschiedliche Attribute unterdrückt werden.
- 'mode'"mode""mode""mode""mode""mode"
-
setzt die Art und Weise, wie die System-Informationen
aktualisiert werden.
- 'truncate'"truncate""truncate""truncate""truncate""truncate"
für ParamValueParamValueParamValueParamValueParamValueparamValue löscht alle
existierenden Informationen bevor das Wissen aus der Datei hinzugefügt
wird.
- 'renew'"renew""renew""renew""renew""renew"
überschreibt existierendes Wissen und fügt neues
hinzu (Standard).
- 'append'"append""append""append""append""append"
behält das existierende Wissen und fügt nur das
Wissen hinzu, welches noch nicht enthalten ist.
- 'nil'"nil""nil""nil""nil""nil"
verweigert jegliche Aktualisierung gibt aber
die Wissensattribute in AttributesAttributesAttributesAttributesAttributesattributes und alle in der Datei
enthaltenen Operatoren in OperatorNamesOperatorNamesOperatorNamesOperatorNamesOperatorNamesoperatorNames.
- 'operator'"operator""operator""operator""operator""operator"
für ParamNameParamNameParamNameParamNameParamNameparamName legt fest, dass der
korrespondierende Index von ParamValueParamValueParamValueParamValueParamValueparamValue einen Namen eines
Operators
enthält, dessen spezifisches AOP-Wissen aus der Datei gelesen und im
System aktualisiert werden soll. Mehrfache Definitionen von Operatoren
sind möglich.
Standardmäßig werden die Informationen zu allen, in der Datei enthalten
Operatoren gelesen.
- 'iconic_type'"iconic_type""iconic_type""iconic_type""iconic_type""iconic_type"
beschränkt sich auf AOP-Information eines
bestimmten ikonischen Typs. Folgende Typen können mit ParamValueParamValueParamValueParamValueParamValueparamValue
spezifiziert werden:
'byte'"byte""byte""byte""byte""byte",'uint2'"uint2""uint2""uint2""uint2""uint2",'real'"real""real""real""real""real",'int1'"int1""int1""int1""int1""int1",
'int2'"int2""int2""int2""int2""int2",'int4'"int4""int4""int4""int4""int4",'int8'"int8""int8""int8""int8""int8",'direction'"direction""direction""direction""direction""direction",
'vector_field'"vector_field""vector_field""vector_field""vector_field""vector_field",'cyclic'"cyclic""cyclic""cyclic""cyclic""cyclic",'vector_field'"vector_field""vector_field""vector_field""vector_field""vector_field",
'complex'"complex""complex""complex""complex""complex",'region'"region""region""region""region""region",'xld'"xld""xld""xld""xld""xld". Mehrfache Definitionen
von ikonischen Typen sind möglich.
Die Namen der aktualisierten Operatoren werden in OperatorNamesOperatorNamesOperatorNamesOperatorNamesOperatorNamesoperatorNames
zurückgegeben, die Attribute der enthaltenen Information in AttributesAttributesAttributesAttributesAttributesattributes.
Letzteres Tupel kodiert folgende Bedeutungen mit aufsteigendem Index, beginnend
mit 0: Rechnername, HALCON-Variante, HALCON-Version, HALCON-Revision,
HALCON-Architektur.
- Multithreading-Typ: exclusive (läuft parallel nur zu unabhängigen Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Name der Informationsdatei.
Defaultwert:
''
""
""
""
""
""
Filtert die zu ladende Information.
Defaultwert:
'none'
"none"
"none"
"none"
"none"
"none"
Wertevorschläge: 'none'"none""none""none""none""none", 'ignore_attrib'"ignore_attrib""ignore_attrib""ignore_attrib""ignore_attrib""ignore_attrib", 'operator'"operator""operator""operator""operator""operator", 'iconic_type'"iconic_type""iconic_type""iconic_type""iconic_type""iconic_type", 'mode'"mode""mode""mode""mode""mode"
Spezifiziert den Filter.
Parameteranzahl: ParamName == ParamValue
Defaultwert:
'none'
"none"
"none"
"none"
"none"
"none"
Wertevorschläge: 'none'"none""none""none""none""none", 'host_name'"host_name""host_name""host_name""host_name""host_name", 'variant'"variant""variant""variant""variant""variant", 'architecture'"architecture""architecture""architecture""architecture""architecture", 'version'"version""version""version""version""version", 'revision'"revision""revision""revision""revision""revision", 'byte'"byte""byte""byte""byte""byte", 'int1'"int1""int1""int1""int1""int1", 'int2'"int2""int2""int2""int2""int2", 'uint2'"uint2""uint2""uint2""uint2""uint2", 'int4'"int4""int4""int4""int4""int4", 'int8'"int8""int8""int8""int8""int8", 'direction'"direction""direction""direction""direction""direction", 'cyclic'"cyclic""cyclic""cyclic""cyclic""cyclic", 'vector_field'"vector_field""vector_field""vector_field""vector_field""vector_field", 'complex'"complex""complex""complex""complex""complex", 'region'"region""region""region""region""region", 'xld'"xld""xld""xld""xld""xld", 'xld_cont'"xld_cont""xld_cont""xld_cont""xld_cont""xld_cont", 'xld_poly'"xld_poly""xld_poly""xld_poly""xld_poly""xld_poly", 'nil'"nil""nil""nil""nil""nil", 'truncate'"truncate""truncate""truncate""truncate""truncate", 'replace'"replace""replace""replace""replace""replace", 'renew'"renew""renew""renew""renew""renew", 'append'"append""append""append""append""append"
Attribute der geladenen Information.
Sind die Parameterwerte korrekt, dann liefert read_aop_knowledgeread_aop_knowledgeReadAopKnowledgeread_aop_knowledgeReadAopKnowledgeReadAopKnowledge
den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
HALCON verwendet intern einen Parallelisierungsmechanismus, um
Mehrprozessorarchitekturen besser zu nutzen und die Bearbeitungsdauer
von Operatoren zu verkürzen. Um diese Parallelisierung automatisch,
optimiert durchführen zu können, benötigt HALCON spezielles Wissen über
die verwendete Hardware bzw. über deren Potential, die verschiedenen
HALCON-Operatoren parallel zu verarbeiten. Dieses Wissen ist
rechnerspezifisch und kann man mit Hilfe der Operatoren optimize_aopoptimize_aopOptimizeAopoptimize_aopOptimizeAopOptimizeAop
und read_aop_knowledgeread_aop_knowledgeReadAopKnowledgeread_aop_knowledgeReadAopKnowledgeReadAopKnowledge erhalten.
Foundation