next up previous
Next: 4.1.3 Matrix-Matrix-Operationen (BLAS3) Up: 4.1.2 Matrix-Vektor Operationen (BLAS2) Previous: 4.1.2 Matrix-Vektor Operationen (BLAS2)

4.1.2.1 Parallelrechner mit verteiltem Speicher

Betrachten $\underline{{\ensuremath{\color{green} {\sf v}} }} \,=\, A_{n\times n} \underline{{\ensuremath{\color{green} {\sf x}} }}$ mit vollbesetzter Matrix $A$. Je nach Aufteilung der Matrix unterscheidet sich die programmtechnische Realisierung der Multiplikation auf dem Parallelrechner. Zwei Varianten werden betrachtet.

Variante 1 : Verteilen $A$ blockzeilenweise auf die Prozesse, analog die Teilvektoren.
  
Abbildung 4.2: Matrix blockzeilenweise verteilt
\begin{figure}
\unitlength0.05\textwidth
\begin{picture}
(20,6)(-2,0)
\put(0,...
... \put(14,3){\line(0,1){1}} \put(15,3){\line(0,1){1}}
\end{picture}
\end{figure}


\begin{algorithmus}% latex2html id marker 8229
[H]
\caption{Parallele Matrix-Vek...
...r~$\underline{{\ensuremath{\color{green} {\sf x}} }}^{[p]}$ .
\end{algorithmus}
Variante 1b : Durch einen ALL/SMALL>_TO/SMALL>_ALL/SMALL>_SCATTER-Ruf besitzt jeder Prozeß den gesamten Vektor  $\underline{{\ensuremath{\color{green} {\sf x}} }}$. Danach läßt sich die Multiplikation ohne weitere Kommunikation ausführen.

Variante 2 : Verteilen $A$ blockspaltenweise auf die Prozesse, Vektor  $\underline{{\ensuremath{\color{green} {\sf x}} }}$ entsprechend der Spalten von $A$.
  
Abbildung 4.3: Matrix blockspaltenweise verteilt
\begin{figure}
\unitlength0.05\textwidth
\begin{picture}
(20,6)(-2,0)
\put(0,...
...4,6){\line(1,0){0.35}} \put(15,6){\line(-1,0){0.35}}
\end{picture}
\end{figure}


\begin{algorithmus}% latex2html id marker 8305
\caption{Parallele Matrix-Vektor ...
...r~$\underline{{\ensuremath{\color{green} {\sf v}} }}^{[p]}$ .
\end{algorithmus}

Ein weiterer Matrix-Vektor Algorithmus funktioniert analog dem Broadcast-Multiply-Roll Algorithmus (Alg. 4.4) im nächsten Abschnitt.


Gundolf Haase
1998-12-22