Next: 4.1.2 Matrix-Vektor Operationen (BLAS2)
Up: 4.1.1 Vektor-Vektor Operationen (BLAS1)
Previous: 4.1.1.1 Berechnung des Skalarproduktes
Seien die Vektoren
,
disjunkt in jeweils
Teilvektoren
der Längen
(
)
geteilt und auf dem entsprechenden
Prozessor
verfügbar.
DO IN PARALLEL
DO
END DO
END DO
CALL ALL/SMALL>_REDUCE(
)
,d.h.
Aufgabe :
Programmieren Sie das globale Skalarprodukt zweier disjunkt
verteilter Vektoren
auf einem Parallelrechner mit verteiltem Speicher.
Bemerkung :
Eigene Bibliothek libvbasmod.a, welche als Untermenge
BLAS1-Funktionalität enthält.
1. Realisierungsebene :
Hochsprache C, F77 und Loop unrolling, dh. das Verhältnis
Arithmetik zu Schleifenverwaltung wird verbessert. Betrachten
das Skalarprodukt mit Stride 1.
Die Wahl des Moduloparameters (hier 4) ist hardwareabhängig.
2. Realisierungsebene :
Wie 1. mit zusätzlicher Benutzung der BLAS1-Routinen wo
dies möglich ist (und die vorhandene BLAS-Bibliothek fehlerfrei ist),
z.B. VDPLUS(
), d.h.
IF (adr(
)==adr(
)
AND
)
THEN CALL DAXPY(
)
ELSE IF (adr(
)==adr(
)
AND
)
THEN CALL DAXPY(
)
ELSE Loop unrolling wie in 1. Realisierungsebene
END IF
END IF
Next: 4.1.2 Matrix-Vektor Operationen (BLAS2)
Up: 4.1.1 Vektor-Vektor Operationen (BLAS1)
Previous: 4.1.1.1 Berechnung des Skalarproduktes
Gundolf Haase
1998-12-22