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
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)