Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Numerische Bibliotheken Lineare Algebra Fourier-Transformationen Bibliotheken auf dem Linux-Cluster Programmierung von Parallelrechnern C. Boehme, O.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Numerische Bibliotheken Lineare Algebra Fourier-Transformationen Bibliotheken auf dem Linux-Cluster Programmierung von Parallelrechnern C. Boehme, O."—  Präsentation transkript:

1 1 Numerische Bibliotheken Lineare Algebra Fourier-Transformationen Bibliotheken auf dem Linux-Cluster Programmierung von Parallelrechnern C. Boehme, O. Haan, U. Schwardmann GWDG

2 2 Programmierung von Parallelerechnern: Analyse Nutzungsvorteile Einsatz numerischer Methoden ohne eigenen Entwicklungs- aufwand Expertenwissen über Algorithmen, Numerik und Programmierung sind in Programmbibliotheken gesammelt Plattformübergreifende Bibliotheken: NAG, IMSL Plattformspezifische Bibliotheken: MKL (Intel), ESSL (IBM)

3 3 Programmierung von Parallelerechnern: Analyse Zielkonflikt: Portabilität oder Performanz Plattformübergreifende Bibliotheken: werden in Standard Sprache (FORTRAN, C, C++) programmiert und können auf allen Plattformen installiert werden. Optimierung für unterschiedliche Hardware nur über Compiler- Optionen. Plattformspezifische Bibliotheken: Werden vom Hardware- Hersteller entwickelt für optimale Leistung auf den eigenen Systemen. Schnittstellen zu den Verfahren sind nicht einheitlich, Programme sind deshalb nicht portabel.

4 4 Programmierung von Parallelerechnern: Analyse Standardisierte Schnittstellen Definition und Standardisierung von Schnittstellen zu Basis- Operationen für eine Klasse von Algorithmen Hardwarespezifische Implementierung der Basis-Operationen Portable Implementierung der Algorithmen unter Nutzung der standardisierten Schnittstellen Kleiner Satz von Hardware-optimierten Basis-Operationen führt zu portablen und performanten Programmen Beispiele: MPI Message Passing Interface BLACS Basic Linear Algebra Communication Subprograms BLAS Basic Linear Algebra Subprograms FFTW Fastest Fouriertransformation in the West

5 5 Programmierung von Parallelerechnern: Analyse BLAS Basic Linear Algebra Subprograms Basis Operationen für Algorithmen der linearen Algebra: Gleichungslöser Least Square Fit Eigenwert- und Eigenvektorberechnung Singulärwert-Zerlegung Level 1 : Vektor-Vektor-Operationen Level 2 : Matrix-Vektor-Operationen (Optimierung für Pipeline- Nutzung) Level 3 : Matrix-Matrix-Operationen (Optimierung für Cache- Nutzung)

6 6 Programmierung von Parallelerechnern: Analyse BLAS Level 2 Operationen MV : Matrix-Vektor-Produkt R, R2 : Rang 1, Rang 2 Modifikation SV : Lösung eines Dreiecksgleichungssystem

7 7 Programmierung von Parallelerechnern: Analyse BLAS Datentypen und Matrixformen Datentypen: Sreal Ddouble precision Ccomplex Zcomplex*16 Matrixformen: GEallgemeine Matrix (GEneral) GB allgemeine Bandmatrix (General Banded) HEHErmite‘sche Matrix SYSymmetrische Matrix HPHermite‘sche Matrix gePackt gespeichert SPSymmetrische Matrix gePackt gespeichert HBHermite‘sche Bandmatrix SBSymmetrische Bandmatrix TRDreiecksmatrix (TRiangular) TPDreiecksmatrix gepackt gespeichert (Triangular Packed) TBDreiecksbandmatrix (Triangular Banded)

8 8 Programmierung von Parallelerechnern: Analyse BLAS Level 2 Routinen Namenskonvention: Name = Datentyp-Matrixform-Operation Erlaubte Kombinationen: reell komplexMV RR2SV S[D]GE C[Z]GE** S[D]GB C[Z]GB* S[D]SY C[Z]HE*** S[D]SP C[Z]HP*** S[D]SB C[Z]HB* S[D]TR C[Z]TR** S[D]TP C[Z]TP** S[D]TB C[Z]TB**

9 9 Programmierung von Parallelerechnern: Analyse BLAS Level 3 Operationen MM : Matrix-Matrix-Produkt RK, R2K : Rang k, Rang 2k Modifikation SM : Lösung eines Dreiecksgleichungssystem mit mehreren rechten Seiten

10 10 Programmierung von Parallelerechnern: Analyse BLAS Level 3 Routinen Erlaubte Kombinationen: reell komplexMM RKR2KSM S[D]GE C[Z]GE** S[D]SY C[Z]SY* C[Z]HE*** S[D]TR C[Z]TR**

11 11 Programmierung von Parallelerechnern: Analyse BLAS Aufrufe Beispiel MV, MM “ y = alpha*a*x + beta*y“ call dgemv(trans,m,n,alpha,a,lda,x,incx,beta,y,incy) “ c = alpha*a*b + beta*c“ call dgemm(transa,transb,m,n,l,alpha,a,lda,b,ldb,beta,c,ldc) Parameter trans, transa, transb Zugriff auf Matrix (= ´N´,´T´ oder ´C´) a(lda,*), b(ldb,*), c(ldc,*)Matrizen m,n,lMatrix-Dimensionen lda,ldb,ldc,incx,incySpeicherform der Daten alpha, betaSkalare

12 12 Programmierung von Parallelerechnern: Analyse BLAS Aufrufe – C-Interface Beispiel MV, MM “ y = alpha*a*x + beta*y“ cblas_dgemv(CblasRowMajor,CblasNoTrans,m,n,alpha,a,lda, x,incx,beta,y,incy) “ c = alpha*a*b + beta*c“ cblas_dgemm(CblasRowMajor,CblasNoTrans,CblasNoTrans,m,n,l,al pha,a,lda,b,ldb,beta,c,ldc) Parameter CblasRowMajor, CblasColMajor Speicherung der Matrix CblasNoTrans, CblasTrans, Zugriff auf Matrix CblasConjTrans a, b, cMatrizen m,n,lMatrix-Dimensionen lda,ldb,ldc,incx,incySpeicherform der Daten alpha, betaSkalare

13 13 Programmierung von Parallelerechnern: Analyse BLAS Aufrufe – C-Interface(2) Deklaration der Matrizen: Include File: cblas.h Dokumentation:

14 14 Programmierung von Parallelerechnern: Analyse BLACS Basic Linear Algebra Communication Subprograms Strukturierte Message Passing Bibliothek Kommunikationsschnittstelle für ScaLAPACK Unterstützt 2-dim. Prozessortopologie Unterstützt Matrix-Datenstrukturen Implementierungen für verschiedene Message Passing Umgebungen: MPI, PVM, …

15 15 Programmierung von Parallelerechnern: Analyse 2-dim. Prozessortopologie np Prozessoren ip = 0, …, np – 1 als 2-dim. Feld anordnen: np = np1 * np2, ip1 = 0, …, np1 - 1 ip2 = 0, …, np2 - 1 Abbildung zwischen linearer und 2-dim. Anordnung Spalten-Anordnung ip = ip1 + np1*ip2 ip2 = Ganzzahliger Teil von ip/np1, ip1 = ip –np1 * ip2 Zeilen-Anordnung ip = ip2 + np2*ip1 ip1 = Ganzzahliger Teil von ip/np2, ip2 = ip –np2 * ip1

16 16 Programmierung von Parallelerechnern: Analyse ip (ip1,ip2) (0,0) (1,0) (2,0) (0,1) (1,1) (2,2) np = 6, np1 = 3, np2 = 2 Spalten-Anordnung

17 17 Programmierung von Parallelerechnern: Analyse BLACS Hilfsroutinen BLACS_PINFO(myip,np) np: Gesamtzahl verfügbarer Prozessoren myip: Prozessornummer des ausführenden Prozessors BLACS_GRIDINIT(icntxt,´r´,nprow,npcol) erzeugt Kommunikationskontext icntxt mit nprow*npcol Prozessoren BLACS_GRIDINFO(icntxt,nprow,npcol,myiprow,myipcol) nprow, npcol: verfügbare Prozessor-Topologie myiprow,myipcol: Koordinaten des ausführenden Prozessors BLACS_GRIDEXIT(icntxt) gibt den Kommunikationskontext icntxt frei

18 18 Programmierung von Parallelerechnern: Analyse BLACS Kommunikationsroutinen BLACS kommuniziert 2 Datenstrukturen: GE (Rechteck): M Reihen, N Spalten, eines 2-dim Feldes mit führender Dimension LDA TR (Trapez): durch M,N,LDA und UPLOW charakterisiert N M N-M+1 N M N N M M UPLO = ´U´ UPLO = ´L´ N >= M N < M

19 19 Programmierung von Parallelerechnern: Analyse BLACS Kommunikationsroutinen BLACS kommuniziert 5 Datentypen: Iinteger Sreal Ddouble precision Ccomplex Z complex*16 4 Formen der Kommunikation: SDPunkt zu Punkt Senden RVPunkt zu Punkt Empfangen BSBroadcast Senden BRBroadcast Empfangen

20 20 Programmierung von Parallelerechnern: Analyse Syntax der BLACS Kommunikation call DGESD2D(icntxt,m,n,a,lda,rdest,cdest) call DTRSD2D(icntxt,uplo,diag,m,n,a,lda,rdest,cdest) call DGERV2D(icntxt,m,n,a,lda,rsrc,csrc) call DTRRV2D(icntxt,uplo,diag,m,n,a,lda,rsrc,csrc) uplow = ´u´ oder ´l´, diag = ´u´ (Diagonalelemente werden nicht kommuniziert) oder ´n´ (Diagonalelemente werden kommuniziert) call DGEBS2D(icntxt,scope,top,m,n,a,lda) call DGEBR2D(icntxt,scope,top,m,n,a,lda,rsrc,csrc) scope = ´a´ (alle), ´r´ (Reihe), ´c´ (Spalte) top berücksichtigt physikalische Vernetzung. top = ´ ´ ist immer richtig

21 21 Programmierung von Parallelerechnern: Analyse Beispiel Broadcast Sende Matrix a an alle Prozessoren der gleichen Reihe: call BLACS_GRIDINIT(icntxt,´r´,npr,npc) call BLACS_GRIDINFO(icntxt,npr,npc,myipr,myipc) if (myipr.eq.1) then if (myipc.eq.0) then call DGEBS2D(icntxt,´r´,´ ´,m,n,a,lda) else call DGEBR2D(icntxt,´r´,´ ´,m,n,a,lda,1,0) end if

22 22 Programmierung von Parallelerechnern: Analyse BLACS Synchronisation call BLACS_BARRIER(icntxt,scope) Beispiel: call BLACS_GRIDINIT(icntxt,´r´,npr,npc) call BLACS_GRIDINFO(icntxt,npr,npc,myipr,myipc) call BLACS_BARRIER(icntxt,´a´) oder: if (myipr.eq.1) then call BLACS_BARRIER(icntxt,´r´) end if Oder: if (myipc.eq.0) then call BLACS_BARRIER(icntxt,´c´) end if

23 23 Programmierung von Parallelerechnern: Analyse LAPACK LAPACK (Linear Algebra PACKage) enthält Verfahren der linearen Algebra zur Lösung von Gleichungen, für Least Square Fits, zur Bestimmung von Eigenwerten und Eigenvektoren und zur Singulärwertbestimmung. LAPACK setzt vollständig auf BLAS Level 2 Level3 Operationen auf. LAPACK ist portabel und performant (hängt von der Güte der BLAS-Implementierung ab)

24 24 Programmierung von Parallelerechnern: Analyse LAPACK Datentypen und Matrixformen Datentypen S D C Z (wie BLAS) Matrixformen (u.a.): GEallgemeine Matrix (GEneral) GB allgemeine Bandmatrix (General Banded) HEHErmite‘sche Matrix SYSymmetrische Matrix HPHermite‘sche Matrix gePackt gespeichert SPSymmetrische Matrix gePackt gespeichert HBHermite‘sche Bandmatrix SBSymmetrische Bandmatrix TRDreiecksmatrix (TRiangular) TPDreiecksmatrix gepackt gespeichert (Triangular Packed) TBDreiecksbandmatrix (Triangular Banded) ORORthogonale Matrix OPOrthogonale Matrix gePackt gespeichert POPOsitiv definite Matrix PBPositiv definite Band-Matrix PPPositiv definite Matrix gePackt gespeichert UN UNitäre Matrix UP Unitäre Matrix gePackt gespeichert

25 25 Programmierung von Parallelerechnern: Analyse LAPACK Routinen Hilfsroutinen, die für die Verfahren der Linearen Algebra benötigt werden Verfahren der Linearen Algebra wie LU-Zerlegung, QR- Zerlegung, Hessenberg-Reduktion, Reduktion auf Tridiagonalform, Eigenwertberechnung durch Bisektion und viele mehr Driver Routinen zur Gleichungslösung etc., setzen auf obigen Verfahren auf

26 26 Programmierung von Parallelerechnern: Analyse Einige LAPACK Driverroutinen SVFaktorisierung der Matrix und Lösung der Gleichung SVXzusätzlich mit Fehlerabschätzung und iterativer Verbesserung GLMLöst generalisierte lineare Regression LSlöst über- und unterdeterminierte Systeme mit Hilfe orthogonaler Faktorisierung LSELöst lineare Least Square Probleme mit Nebenbedingungen LSXerzeugt Lösung minimaler Norm mit Hilfe orthogonaler Faktorisierung LSSLöst Least Square Problem mit Hilfe der Singulärwertzerlegung EVBerechnet alle Eigenwerte und -vektoren EVXBerechnet ausgewählte Eigenwerte und –vektoren ESBerechnet alle Eigenwerte und Schur-Vektoren GVBerechnet generalisierte Eigenwerte- und vektoren SVDBerechnet Singulärwerte und -vektoren

27 27 Programmierung von Parallelerechnern: Analyse Beispiel : DGESV DGESV computes the solution to a real system of linear equations A * X = B, where A is an N-by-N matrix and X and B are N-by-NRHS matrices. The LU decomposition with partial pivoting and row interchanges is used to factor A as A = P * L * U, where P is a permutation matrix, L is unit lower triangular, and U is upper triangular. The factored form of A is then used to solve the system of equations A * X = B. Aufruf: call DGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO )

28 28 Programmierung von Parallelerechnern: Analyse ScaLAPACK Im Message Passing Programmiermodell parallelisierte Form der LAPACK Bibliothek Setzt auf BLAS und BLACS auf ScaLAPACK LAPACKPBLAS BLAS BLACS portierbar maschinen- spezifisch

29 29 Programmierung von Parallelerechnern: Analyse Verteilte Datenstrukturen Zyklische Blockverteilung: Aufeinanderfolgende Blöcke konstanter Größe werden zyklisch auf Prozessoren verteilt Parameter der Verteilung: mLänge des globalen Feldes mbLänge der Blöcke npAnzahl der Prozessoren nsrcProzessor für ersten Block Beispiel m = 9, mb = 2, np = 2, nsrc = 1 v1 v2v3 v4v5 v6v7 v8v9 ip = 0ip = 1 v1 v2v3 v4v5 v6v7 v8v9

30 30 Programmierung von Parallelerechnern: Analyse Zyklische Blockverteilung von Matrizen Parameter der Verteilung: m1,m2Dimensionen der globalen Matrix mb1, mb2Dimensionen der Blöcke np1, np2Dimensionen des Prozessor-Gitters (np=np1*np2) nsrc1, nsrc2Koordinaten des Prozessors für ersten Block Beispiel: m1=5, m2=7, mb1=mb2=2, np1=np2=2, nsrc1=0, nsrc2=0 a11 a12 a21 a22 a13 a14 a23 a24 a15 a16 a25 a26 a17 a27 a31 a32 a41 a42 a33 a34 a43 a44 a35 a36 a45 a46 a37 a47 a51 a52a53 a54a55 a56a57 a11 a12 a21 a22 a15 a16 a25 a26 a51 a52a55 a56 a13 a14 a23 a24 a17 a27 a53 a54a57 a31 a32 a41 a42 a35 a36 a45 a46 a33 a34 a43 a44 a37 a47

31 31 Programmierung von Parallelerechnern: Analyse L-U-Zerlegung einer Matrix: A = L * U Operationen auf Teilmatrizen: kleine Blöcke: gute Last-Verteilung große Blöcke: gute EinzelprozessorLeistung

32 32 Programmierung von Parallelerechnern: Analyse Deskriptoren für verteilte Matrizen Jede Verteilte Matrix a wird durch einen Deskriptor mit 9 Elementen charakterisiert: desca(1) = 1 desca(2) = icntxt desca(3) = m1 desca(4) = m2 desca(5) = mb1 desca(6) = mb2 desca(7) = nsrc1 desca(8) = nsrc2 desca(9) = llda Die lokalen Daten der verteilten Matrix werden in einem Feld a(llda,ld2) gespeichert, mit llda >= Anzahl lokal gespeicherter Zeilen ld2 >= Anzahl lokal gespeicherter Spalten Der Deskriptor wird mit initialisiert mit dem Aufruf call DESCINIT(desca,m1,m2,mb1,mb2,nscr1,nsrc2, icntxt,llda,info)

33 33 Programmierung von Parallelerechnern: Analyse Beispiel Gleichungslöser call PDGESV(n,nrhs,a,ia,ja,desca,ipiv,b,ib,jb,descb,info) Gegeben ist eine globale Matrix A, deren Verteilung durch desca definiert ist, und eine globale Matrix B mit der Verteilung descb. Die Dimension der globalen Matrix A ist desca(3)*desca(4) Die Dimension der globalen Matrix B ist descb(3)*descb(4) PDGES löst das Gleichungssystem, das durch die n*n Submatrix von A mit den Elementen (ia:ia+n-1,ja:ja+n-1) definiert wird, wobei die n*nrhs Submatrix von B mit den Elementen (ib:ib+n-1,jb:jb+nrhs-1) die nrhs rechten Seiten definiert. Die nrhs Lösungen überschreiben die rechten Seiten. ipiv enthält die Information über die Umordnung der Reihen von A bei der Pivotisierung.

34 34 Programmierung von Parallelerechnern: Analyse Beispiel Gleichungslöser schlechte Verteilung call BLACS_INIT(icntxt,´r´,np,1) nb = (n + np – 1) / np call DESCINIT(desca,n,n,nb,n,0,0,icntxt,nb,info) call DESCINIT(descb,n,1,nb,1,0,0,icntxt,nb,info call PDGESV(n,1,a,1,1,desca,ipiv,b,1,1,descb,info) a b

35 35 Programmierung von Parallelerechnern: Analyse Beispiel Gleichungslöser gute Verteilung np = nq*nq call BLACS_INIT(icntxt,´r´,nq,nq) call DESCINIT(desca,n,n,nb,nb,0,0,icntxt,nb,info) call DESCINIT(descb,n,1,nb,1,0,0,icntxt,nb,info call PDGESV(n,1,a,1,1,desca,ipiv,b,1,1,descb,info) a b

36 36 Programmierung von Parallelerechnern: Analyse Dokumentation BLAS : BLACS : PBLAS : LAPACK : ScaLAPACK :

37 37 Programmierung von Parallelerechnern: Analyse Bibliotheken auf dem Woodcrest-Cluster Intel Math Library mkl : - L/usr/product/parallel/intel/mkl81/lib/em64t NAG Library : -L/usr/product/nag/ IMSL Library : /usr/product/imsl/CTT6.0/lib/lib.linux/

38 38 Programmierung von Parallelerechnern: Analyse Bibliotheken: Intels MKL MKL = Mathematical Kernel Library Enthält: BLAS Sparse BLAS (Level 1) LAPACK Routinen zum Gleichungslösen LAPACK-Routinen für Eigenwertprobleme Fourier Transformationen (FFT) FFTW-Interface zu MKL-FFT VML (Vector Mathematical Function Library) Berechnet mathematische Funktionen für Vektorargumente

39 39 Programmierung von Parallelerechnern: Analyse Intels MKL - Nutzung -lmkl Bindet BLAS, FFT -lmkl_lapack64 Bindet 64bit LAPACK-Routinen -lvml Bindet die Vektor-Funktionen zur Berechnung von sin, cos etc. Dokumentation zu mkl unter Services -> Rechenanlagen -> Parallelrechner -> Woodcrest-Cluster -> Dokumentation

40 40 Programmierung von Parallelerechnern: Analyse Link zum Messprogramm time_dgemv.f time_dgemv.f

41 41 MPI-Profiling 1 MPI-Standard definiert Profiling-Interface –Externe Profiling-Bibliotheken können dieses Interface nutzen Profiling-Bibliothek MPE wird bei MPICH / MVAPICH mitgeliefert –Einbinden durch Compiler-Switch -mpilog : mpicc -mpilog... mpif77 -mpilog...

42 42 MPI-Profiling 2 Mit MPE verlinkte Programme erzeugen Log-Datei zur Laufzeit Log-Visualisierer Jumpshot-4 Download auf gwdu102: wget ftp://ftp.mcs.anl.gov/pub/mpi/slog2/slog2rte.tar.gz ftp://ftp.mcs.anl.gov/pub/mpi/slog2/slog2rte.tar.gz Installieren: tar -xvzf slog2rte.tar.gz Starten der Visualisierung: java -jar slog2rte-1.2.6/lib/jumpshot_launcher.jar

43 43 MPI-Profiling 3.clog öffnen Anweisungen zum Konvertieren in.slog2 folgen Dokumentation: ftp://ftp.mcs.anl.gov/pub/mpi/slog2/js4-usersguide.pdf


Herunterladen ppt "1 Numerische Bibliotheken Lineare Algebra Fourier-Transformationen Bibliotheken auf dem Linux-Cluster Programmierung von Parallelrechnern C. Boehme, O."

Ähnliche Präsentationen


Google-Anzeigen