Basic Programming Models and Issues
from "In Search of Clusters", 2nd Edition, Chapter
9
by Gregory F. Pfister, Prentice Hall PTR, 1998
(refer seminar
home page for details)
1. What is a Programming Model
-
uniprocessor model
-
symmetric multiprocessor model
-
message passing model
-
ccNUMA model
2. The Sample Problem
-
"Why setting the values to the average of their neighbors
ends up satisfying that equation, God only knows."
3. Uniprocessor
-
SOR (successive over-relaxation)
-
iterative method is better than the direct method since it's
fun to watch the intermediate steps
4. Shared Memory
-
race and locks
-
serialization
-
consistency and chaos
-
many locks and deadly embraces (deadlocks)
-
alternation schemes (Gasuu-Jacobi Iteration)
-
A/B Alternation
-
Red/Black Iteration
-
Red/Black Checkerboard Alternation
-
what went wrong ?
-
what the original program really did ?
-
the wavefront (hyperplane) method
-
let "forall" do the work
-
chunking and blocking
-
wavefront method has problem with locality of reference (cache)
-
blocking : cache size, cache line size, block aspect ratio
-
load balancing and a global queue
-
better load balancing with more (smaller) blocks
-
better cache usage with less (larger) blocks
-
concerning global queues
-
not the end, again
5. Message-Passing
-
Jacobi/Seidel/Chaotic "Mixed" Relaxation
-
Implicit synchronization and alternation schemes
-
wavefront and multiple waves
-
wavefronts in strips
-
communication overhead in message-passing
-
clusters of SMPs
6. CC-NUMA
7. SIMD and All That
8. Importance