• Keine Ergebnisse gefunden

Sicheres Fenster = 5

Kapitel 10 - SPIKELAB Bedienung und Programmierung

10.5. Betrieb über die Konsole – Fileformat

Der Simulator kann auch ohne die graphische Oberfläche verwendet werden. Diese Version (Projekt SubSimulatorKonsole) liest Netzwerke aus drei Dateien ein. Die Parti-tionsdatei beschreibt die Struktur des Netzwerks und die darin enthaltenen Verzöge-rungen und besitzt die Dateiendung „prt“. Die Gewichtsdatei beinhaltet alle Parameter der verwendeten Neuronenmodelle und die Gewichte der Verbindungen, welche Ein-gangsparameter zu den Neuronen sind. Die Gewichtsdatei trägt die Endung „wgt“. Die Log-Datei beschreibt welche Neuronendaten während der Simulation aufgezeichnet werden sollen und sie besitzt die Dateiendung „lgi“.

Bei der verteilten Simulation kommt noch die „Hostdatei“ mit der Endung „hst“ hinzu.

In dieser Datei werden die Zuordnungen zwischen Rechnern und den darauf zu simulierenden Partitionen angegeben.

10.5.1. Partitionsdatei

Die Partitionsdatei besitzt folgendes Format (#Kommentare):

SimpleTest #Name des Netzwerks

4 #Zahl aller logischen Prozesse in dem folgenden Netzwerk

$OPTIONS #Schlüsselwort leitet den Abschnitt für Optionen ein floatDelay = TRUE #Diese, einzig wesentliche Option gibt an, dass die

#Darstellung der Verzögerungen in Fließkommazahlen

#erfolgt

$PROCESSES #Schlüsselwort leitet den Abschnitt ein, in dem normale

#logische Prozesse – keine Generatoren beschrieben und

#verknüpft werden.

P1 (4) #Name des Prozesses und in Klammern die Nummer

#des Neuroenenmodells

local: P2(0.001,0) #local: leitet die lokalen Verbindungen ein,

#welche der Form NameZielprozess(Ausgang,

#Verzögerung, EingangZielprozess) folgen, wobei

#der Ausgang weggelassen werden kann.

extern: #extern: leitet die externen Verbindungen ein.

#Hinter diesem Schlüsselwort werden die Namen

#aller Partitionen aufgeführt zu denen der

#Prozess eine Verbindung hat

; #Das Semikolon schließt die Beschreibung eines

#logischen Prozesses ab.

P2 (4)

local: P3(0.001,0) extern:

;

P3 (4) local:

extern:

;

$GENERATORS #Schlüsselwort leitet den Abschnitt der

#Generatorneuronen ein.

#Die Beschreibung der Prozesse erfolgt wie

#bei den normalen logischen Prozessen

P4 (6)

local: P1(0.001,0) extern:

;

$PARTITIONS #Schlüsselwort leitet den Abschnitt ein, in dem #die eingehenden Verbindungen von anderen

#Partitionen aufgeführt werden. (siehe unten)

END_MARKER #Schließt die Datei ab.

Ein Beispiel für einen $PARTITIONS Abschnitt:

Jede externe Partition, die Verbindungen in die aktuelle Partition besitzt, wird separat gelistet, und darunter für jeden Prozess aus der externen Partition ein so genannter

„connector“ eingerichtet, der mit dem Schlüsselwort connector eingeleitet wird. Danach folgen die Prozessnamen der lokalen Zielprozesse gefolgt von der Verzögerung und dem betreffenden Eingang des lokalen Prozesses.

$PARTITIONS part-3:

connector P17: P1(0.001546,1), P2(0.001175,1), P3(0.001484,1) connector P18: P1(0.001189,2), P2(0.001379,2), P3(0.001251,2) part-4:

connector P20: P1(0.001546,3), P2(0.001175,3), P3(0.001484,3) connector P21: P1(0.001189,4), P2(0.001379,4), P3(0.001251,4)

10.5.2. Gewichtsdatei

Der Aufbau der Gewichtsdatei ist sehr einfach gehalten und wird im Wesentlichen durch die Strukturen bestimmt, in denen die Modelle Ihre Parameter ablegen. In einer Gewichtsdatei werden daher nicht nur Gewichte, sondern jegliche Parameter der logischen Prozesse abgelegt.

Beispiel für eine Gewichtsdatei:

$PROCESS$ # Jeder Prozess wird mit diesem Schlüsselwort

# eingeleitet

P1 # Name des Prozesses – muss zur *.prt Datei

# korrespondieren

$DO_RESET$ 1 # Schlüsselwörter und Daten des Modells

$ABS_REFRAC$ 0.001 # entsprechend den Vorgaben des Modell-

$THRESHOLD$ 1.0 # schreibers.

$WEIGHTS$ 1 110 0.01 1000

$PROCESS$

P2

$DO_RESET$ 1

$ABS_REFRAC$ 0.001

$THRESHOLD$ 1

$WEIGHTS$ 1 110 0.01 1000

$PROCESS$

P3

$DO_RESET$ 1

$ABS_REFRAC$ 0.001

$THRESHOLD$ 1

$WEIGHTS$ 1 110 0.01 1000

$PROCESS$ P4

$INTERVAL$ 0.1

$END_MARKER$ # Abschluss der Datei

10.5.3. Log-Datei

Mit Hilfe der Log-Datei kann die Aufzeichnung aller Pulse und Statusvariablen über einen gewählten Zeitraum aktiviert werden. Darüber hinaus kann für einzelne Prozesse die Aufzeichnung selektiv für entsprechende Zeiträume aktiviert oder deaktiviert werden.

Sofern die Aufzeichnung aller Pulse, respektive Statusvariablen aktiviert ist, so wirkt die Nennung eines spezifischen Prozesses als Deaktivierung für den angegebenen Zeit-raum. Ist die Aufzeichnung für alle Pulse bzw. Statusvariablen deaktiviert, so wirkt die Nennung als Aktivierung für den angegebenen Zeitraum.

Beispiel für eine Log-Datei:

ALL_SPIKES 0 INF # Standardeintrag um alle Pulse im Netz

# aufzuzeichnen (Hier beginnend mit dem Zeit-

# punkt 0 bis zur maximalen Simulationsdauer

# INF = infinity

ALL_MODELS 0 INF # Standardeintrag um alle Statusdaten im Netz

# aufzuzeichnen

LOG_GRANULARITY 10 # Granularität mit der Statusvariablen

# aufgezeichnet werden sollen

PROCESS P1 EVENTS 0.001 5 # Einschalten bzw. Ausschalten der

# Pulsaufzeichnung für einen spezifischen

# Prozess für den angegebenen Zeitraum

PROCESS P1 MODEL 0.001 5 # Einschalten bzw. Ausschalten der

# Pulsaufzeichnung für einen spezifischen

# Prozess für den angegebenen Zeitraum

END_MARKER # Abschluss der Datei

10.5.4. Hostdatei

In der Hostdatei werden Partitonsnamen und damit den gleichnamigen Partitionsdateien eindeutige Nummern zugeordnet und deren Abhängigkeiten zueinander bezüglich eingehender und ausgehender Verbindungen angegeben. Des Weiteren werden den Partitionen Rechnernamen zugeordnet, wobei die Zuordnung mehrerer Partitionen zu einem Rechner möglich ist.

Für die Kommunikation zwischen den Rechnern können Optionen angegeben werden, welche die Art der Nachrichtenübermittlung, das Synchronisationsschema und die Puffermethode steuern.

Bei der Übermittlung kann zwischen der Einstellung FAST oder SAVE gewählt werden, wobei mit FAST eine unsichere Oneway Übermittlung verwendet wird.

Bei dem Synchronisationsschema können PEINQUIRIES aktiviert werden, mit denen bei einer Blockade eine Anfrage bei dem Vorgänger gestellt wird.

Die Pufferung lässt sich deaktivieren, oder unter unterschiedlichen Randbedingungen aktivieren. Es kann eine Pufferung bis zum nächsten Zeitschritt (Ein Schritt in der gewählten Zeitauflösung) erfolgen, wobei dies mit oder ohne Entleerung des Puffers bei Anfragen geschehen kann und es kann eine vollständige Pufferung erfolgen, die immer bis zur nächsten Anfrage durchgeführt wird.

Beispiel einer Hostdatei für 4 Partitionen

#HOST INFORMATION

[PARTITIONS] # Schlüsselwort leitet den Abschnitt

# mit den Partitionsbeschreibungen ein

NUMBERPARTITIONS 4 # Gesamtzahl der zu simulierenden Partitionen

# Im folgenden Abschnitt werden die Partitionen nummeriert und benannt

# i PNAME <name> is the name of the partition i ( 0 <= i < n ) 0 PNAME part_0

1 PNAME part_1 2 PNAME part_2 3 PNAME part_3

# Im folgenden Abschnitt werden Abhängigkeiten zwischen den

# Partitionen durch die Angabe von eingehenden und ausgehenden

# Verbindungen wiedergegeben

# i IN a b c ... a,b,c are InputPartions of i

# i OUT a b c ... a,b,c are OutputPartions of i 0 IN 3

0 OUT 2 1 OUT 3 2 IN 0 3 IN 1 3 OUT 0

# Im folgenden Abschnitt werden den Partitionsnummern Rechnernamen

# zugeordnet

# i HOST <hostname> shows the wish to simulate partition i on

<hostname>

0 HOST zmtmbdb3 1 HOST zmtmml60 2 HOST zmtmp148 3 HOST zmtmp243

# In diesem Abschnitt können Optionen für den Datentransfer angegeben

# werden.

# Folgende Optionen werden unterstützt:

# TRANSFERMODE {SAVE, FAST}

# PREINQUIRIES {1, 0}

# BUFFERMODE {NO_BUFFERING, LVT_STEP_BUFFERING,

# LVT_BUFFERING_WITH_FLUSH, FULL_BUFFERING}

# i OPTION <PARAMETER> <VALUE> will send option <PARAMETER> with

<VALUE> to Partition i 0 OPTION TRANSFERMODE SAVE 1 OPTION TRANSFERMODE SAVE 2 OPTION TRANSFERMODE SAVE 3 OPTION TRANSFERMODE SAVE

[END_PARTITIONS] # Markiert das Ende der Partitionsbeschreibung