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 />
36 t r a n s f e r (2�dmax+5)=dimag (E( j z v ( imax ) ) )<br />
37 c a l l MPI Send ( t r a n s f e r , 2 �DMAX+5, MPI Double Precision ,<br />
38 & imin , 4 2 , MPI Comm world , i e r r o r )<br />
39 e l s e i f (Rank . eq . imin ) then<br />
40 c a l l MPI Recv ( t r a n s f e r , 2 �DMAX+5, MPI Double Precision ,<br />
41 & imax , 4 2 , MPI Comm World , status , i e r r o r )<br />
42 do i =1,DMAX<br />
43 r ( i , j z v ( imin)+1)= t r a n s f e r ( i )<br />
44 F( i , j z v ( imin)+1)= t r a n s f e r ( i+dmax)<br />
45 enddo<br />
46 Psi ( j z v ( imin)+1)= t r a n s f e r (2�dmax+1)<br />
47 WF( j z v ( imin)+1)=dcmplx ( t r a n s f e r (2�dmax+2) ,<br />
48 & t r a n s f e r (2�dmax+3))<br />
49 E( j z v ( imin )+1) =dcmplx ( t r a n s f e r (2�dmax+4) ,<br />
50 & t r a n s f e r (2�dmax+5))<br />
51 endif<br />
52 j z v ( imin)= j z v ( imin)+1<br />
53 j z v ( imax)= j z v ( imax)−1<br />
54 goto 5000<br />
55 5100 continue<br />
56 j z=j z v (Rank)<br />
57 END<br />
Die Funktionsweise ist dabei wie folgt: die MPI-Funktion MPI AllGather vereint alle<br />
Walker im Vektor jzv. Wenn an einem Prozessor ein relativer Überhang und an einem<br />
der anderen Prozessoren ein relatives Defizit an Walkern besteht, so wird der überzählige<br />
Walker verschoben. Der Prozessor mit dem Überhang schaltet dazu in den Sendemodus<br />
(MPI Send), der mit dem Defizit in den Empfangsmodus (MPI Recv). Es müssen alle<br />
Daten des Walkers verschoben werden. Dazu gehören alle zur aktuellen Position gespeicherten<br />
Informationen wie die Position selbst (r), die Quantenkraft (F), der Wert der<br />
Wellenfunktion (Psi), der Gewichtsfaktor (WF) und die lokale Energie (E). Die <strong>für</strong> diesen<br />
Fall von MPI zur Verfügung gestellten sog. ” derived datatypes“ erwiesen sich als nicht<br />
praktikabel, weshalb künstlich eine entsprechende Gemeinschaftsvariable (transfer) geschaffen<br />
wurde.<br />
4.<strong>1.</strong>3. Programmende<br />
Die Statistikdaten werden am Ende des Blockes, also während des Programmablaufs<br />
ständig zum Hauptprozeß (Rang 0) geschickt und separat verarbeitet, so daß am Ende<br />
des Programms nur noch die Ausgabe der Ergebnisse steht (siehe Listing 4.3). Nach der<br />
Angabe der Kernladungszahl, der Elektronenzahl N und der Magnetfeldstärke (β, βZ =<br />
β/Z 2 ), folgen die Anzahl der Konfigurationen (Walker) und die Anzahl der parallel<br />
verwendeten Rechner, sowie die gesamte Rechenzeit in Sekunden. Anschließend folgt<br />
60