10.01.2013 Aufrufe

2.6M - 1. Institut für Theoretische Physik - Universität Stuttgart

2.6M - 1. Institut für Theoretische Physik - Universität Stuttgart

2.6M - 1. Institut für Theoretische Physik - Universität Stuttgart

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

4. Parallelisierung<br />

setzen. Andererseits ist es schwierig die Walker gemäß der Wahrscheinlichkeitsverteilung<br />

der Führungswellenfunktion zu setzen. Die Walker werden deshalb gemäß einer gaußverteilten<br />

Zufallsfunktion 1 (gasdev) mit einer geringen Breite mit 0,02 wie im Listing 4.1<br />

ersichtlich initialisiert.<br />

1 do j , Nc<br />

2 do d=1 ,3�N<br />

3 r (d , j )=0.02� gasdev<br />

4 enddo<br />

5 enddo<br />

Listing 4.1: Setzen der Walker<br />

Die Walker, d.h. die Koordinaten werden gleichmäßig auf alle Rechner verteilt. Die Zahl<br />

der Rechner sei R. Dazu dient die MPI-Funktion<br />

MPI_Scatter(r,Nc/R,walker,r1,Nc/R,walker,0,MPI_Comm_World,ierror).<br />

Anschließend werden die Walker gemäß des Metropolis-Algorithmus bewegt, so daß sich<br />

eine Grundverteilung 2 ergibt. Damit ist die Initialisierung abgeschlossen.<br />

4.<strong>1.</strong>2. Hauptprogramm<br />

Das parallelisierte DQMC-Verfahren erfordert auch den Austausch an Informationen<br />

zwischen den Prozessoren. Dazu gehört der Energieoffset ET, der am Ende jedes Blockes<br />

aktualisiert werden muß. Dies geschieht in zwei Schritten. Zuerst wird eine Summe über<br />

die Blockenergie EB jedes Rechners<br />

MPI_Reduce(EB,REB,1,MPI_Double_Complex,MPI_Sum,0,MPI_Comm_World,ierror)<br />

und der Walker<br />

MPI_Reduce(jz,rjz,1,MPI_Integer,MPI_Sum,0,MPI_Comm_World,ierror)<br />

gebildet. Die Summe der Blockenergie (REB = �<br />

R EB) sowie die Summe der Walker<br />

(rjz = �<br />

R jz), die sich wegen der Verzweigungswahrscheinlichkeit geändert haben<br />

könnte, ist nur dem Rechner mit Rang 0 bekannt. Im zweiten Schritt wird die neue<br />

Trialenergie<br />

an alle Rechner verteilt<br />

ET → 1<br />

�<br />

ET +<br />

2<br />

�<br />

R EB<br />

�<br />

R jz<br />

MPI_Bcast(ET,1,MPI_Double_Complex,0,MPI_Comm_World,ierror).<br />

1 Bei der praktischen Umsetzung kamen die Routinen ran2 und gasdev aus [24] zum Einsatz.<br />

2 Alternativ kann auch beim VQMC-Verfahren ein statistikfreier Vorlauf durchgeführt werden.<br />

58<br />

�<br />

(4.2)

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!