- 
Parallelisierung von Schleifen: 
Erzeugen von N Threads (``spawn'') 
Blockweises Aufteilen des Indexbereichs 
Paralleles Berechnen des Schleifeninneren 
Beenden der Threads bis auf einen (``join'')
 
DO I=1, 1024
   A(I) = B(I) + C(I)
ENDDO

- 
funktioniert für äußere Schleifen, falls: 
Iteration-Count zur Laufzeit bekannt 
keine ``Hindernisse'' (s.u.)
 - 
implizite Loops in Fortran 90 
 explizite Loops
 - 
Anzahl der Threads: 
     #CPUs im Subcomplex 
PREFER_PARALLEL(max_threads=N) o.ä. 
mpa -min N -max M
 - 
Erzeugung der Threads: 
schon beim Programmstart 
erst spin-wait, dann suspended 
spawn: Übergang von ``idle'' nach ``running'' 
join: Übergang von  ``running'' nach ``idle''
 - 
Zusammenwirken von -O2 und -O3: 
Reihenfolge der Schleifen ändert sich 
Blockbildung 
 bessere Cachenutzung 
     
 hyperlinearer Speedup möglich
 - 
!  -O3 gezielt einsetzen, nicht global !
 
 
 
   
Peter Junglas 
12/23/1998