Implementierungsaspekte aufgrund des Callback-Konzepts



next up previous contents
Next: 4 Simulationsunterstützte CMOS-Entwicklung Up: 3.4.5 Extremwertsuche Previous: 3.4.5 Extremwertsuche

Implementierungsaspekte aufgrund des Callback-Konzepts

 

Bei Optimierern wird üblicherweise davon ausgegangen, daß die zu optimierende Funktion synchron ausgewertet werden kann. Der Optimierer ruft die ihm übergebene Funktion mit einem von ihm bestimmten Satz von Argumenten auf und wertet den Rückgabewert aus; er wartet also auf die Beendigung des Funktionsaufrufs. Enthält die auszuwertende Funktion einen Subprozeßaufruf (z.B. einen MINIMOS-Lauf), so wird dieser innerhalb der VISTA-TCAD-Shell asynchron abgesetzt. Der Optimierer kann nur in Form eines Termination-Callbacks Kenntnis vom Ergebnis (entspricht dem Funktionsrückgabewert) erlangen.

Die vereinfachte Fragestellung lautet ,,Wer kontrolliert wen? ``: Üblicherweise steuert der Optimierer die auszuwertende Funktion an. In der VISTA-TCAD-Shell in Verbindung mit dem Callback-Konzept steuert jedoch die Beendigung der Funktion genau eine Iteration des Optimierers an.

Der Optimierer wird in der TCAD-Shell in zwei völlig getrennte Prozeduren aufgespalten, die Daten mittels einer beiden Teilen zugänglichen Struktur austauschen. Der erste Teil initialisiert diese Struktur und setzt die ersten beiden Funktionsaufrufe mit dem Callback-Teil des Optimierers als Termination-Callback. Nur diese ersten beiden Funktionsaufrufe sind von allen anderen unabhängig und können parallel ausgewertet werden.

Wird der Callback-Teil des Optimierers nach Beendigung einer Funktionsauswertung aufgerufen, trägt er zuerst den Funktionswert in die globale Struktur ein. Anhand der Anzahl der Ergebniseinträge wird erkannt, um die wievielte Callback-Auswertung es sich handelt: Die erste ist damit abgeschlossen; die zweite und alle weiteren überprüfen sodann das Abbruchkriterium der Optimierungsaufgabe. Ist dieses erfüllt, wird der Termination-Callback der gesamten Opimierungsaufgabe mit der Ergebnisstruktur als call_data-Argument ausgeführt. Ist das Abbruchkriterium nicht erfüllt, so veranlaßt der Callback-Teil des Optimierers eine weitere Funktionsauswertung mit einem neuen Satz von Abszissenparametern und sich selbst als Termination-Callback. Die Rekursion in der Optimierungsschleife wird also über den Callback-Mechanismus erzwungen.



Martin Stiftinger
Mon Oct 17 21:16:53 MET 1994